bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

<.*>


From: Akim Demaille
Subject: <.*>
Date: 12 Jun 2002 17:14:59 +0200
User-agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Honest Recruiter)

Ouch, a novice error :(

Index: ChangeLog
from  Akim Demaille  <address@hidden>

        * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
        eager.
        * tests/actions.at (Exotic Dollars): New.

Index: src/scan-gram.l
===================================================================
RCS file: /cvsroot/bison/bison/src/scan-gram.l,v
retrieving revision 1.5
diff -u -u -r1.5 scan-gram.l
--- src/scan-gram.l 12 Jun 2002 12:50:22 -0000 1.5
+++ src/scan-gram.l 12 Jun 2002 15:13:11 -0000
@@ -437,7 +437,7 @@
 
   "{"                  YY_OBS_GROW; braces_level++;
 
-  "$"("<".*">")?(-?[0-9]+|"$") { handle_dollar (yytext); }
+  "$"("<"[^>]+">")?(-?[0-9]+|"$") { handle_dollar (yytext); }
   "@"(-?[0-9]+|"$")            { handle_at (yytext); }
 
   address@hidden/\'\"\{\}\n\r]+ YY_OBS_GROW;
Index: tests/actions.at
===================================================================
RCS file: /cvsroot/bison/bison/tests/actions.at,v
retrieving revision 1.4
diff -u -u -r1.4 actions.at
--- tests/actions.at 27 Jan 2002 10:59:15 -0000 1.4
+++ tests/actions.at 12 Jun 2002 15:13:11 -0000
@@ -79,3 +79,76 @@
 ]])
 
 AT_CLEANUP
+
+
+
+## ---------------- ##
+## Exotic Dollars.  ##
+## ---------------- ##
+
+AT_SETUP([Exotic Dollars])
+
+# Make sure complex $n work.
+
+AT_DATA([[input.y]],
+[[%{
+# include <stdio.h>
+# include <stdlib.h>
+  static void yyerror (const char *msg);
+  static int yylex (void);
+# define YYDEBUG         1
+# define YYERROR_VERBOSE 1
+%}
+
+%union
+{
+  int val;
+};
+
+%type <val> a_1 a_2 a_4 a_5
+            sum_of_the_five_previous_values
+
+%%
+exp: a_1 a_2 { $<val>$ = 3; } a_4 a_5 sum_of_the_five_previous_values
+    {
+       printf ("%d\n", $6);
+    }
+;
+a_1: { $$ = 1; };
+a_2: { $$ = 2; };
+a_4: { $$ = 4; };
+a_5: { $$ = 5; };
+
+sum_of_the_five_previous_values:
+    {
+       $$ = $<val>0 + $<val>-1 + $<val>-2 + $<val>-3 + $<val>-4;
+    }
+;
+
+%%
+static int
+yylex (void)
+{
+  return EOF;
+}
+
+static void
+yyerror (const char *msg)
+{
+  fprintf (stderr, "%s\n", msg);
+}
+
+int
+main (void)
+{
+  return yyparse ();
+}
+]])
+
+AT_CHECK([bison input.y -d -v -o input.c])
+AT_CHECK([$CC $CFLAGS $CPPFLAGS input.c -o input], 0, [], [ignore])
+AT_CHECK([./input], 0,
+[[15
+]])
+
+AT_CLEANUP



reply via email to

[Prev in Thread] Current Thread [Next in Thread]