[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |