]> git.saurik.com Git - bison.git/blobdiff - src/parse-gram.y
* configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
[bison.git] / src / parse-gram.y
index a6b8f3b14435ffb9870cc3c0c5a16883b7fe8315..a6d8ec70a69d0ac9000d562c5293d3beb7eed59b 100644 (file)
@@ -64,11 +64,11 @@ do {                                                        \
    correctly typed access to it.  */
 #define yycontrol ((gram_control_t *) gram_control)
 
    correctly typed access to it.  */
 #define yycontrol ((gram_control_t *) gram_control)
 
-/* Request detailed parse error messages, and pass them to
-   GRAM_ERROR. */
+/* Request detailed parse error messages, and pass them to GRAM_ERROR.
+   FIXME: depends on the undocumented availability of YYLLOC.t */
 #undef  yyerror
 #define yyerror(Msg) \
 #undef  yyerror
 #define yyerror(Msg) \
-        gram_error (yycontrol, &yylloc, Msg)
+        gram_error (&yylloc, Msg)
 
 #define YYPRINT(File, Type, Value) \
         yyprint (File, Type, &Value)
 
 #define YYPRINT(File, Type, Value) \
         yyprint (File, Type, &Value)
@@ -78,7 +78,7 @@ symbol_class current_class = unknown_sym;
 char *current_type = 0;
 symbol_t *current_lhs;
 location_t current_lhs_location;
 char *current_type = 0;
 symbol_t *current_lhs;
 location_t current_lhs_location;
-associativity current_assoc;
+assoc_t current_assoc;
 int current_prec = 0;
 braced_code_t current_braced_code = action_braced_code;
 %}
 int current_prec = 0;
 braced_code_t current_braced_code = action_braced_code;
 %}
@@ -91,13 +91,14 @@ braced_code_t current_braced_code = action_braced_code;
   symbol_list_t *list;
   int integer;
   char *string;
   symbol_list_t *list;
   int integer;
   char *string;
-  associativity assoc;
+  assoc_t assoc;
 };
 
 };
 
-/* Define the tokens together with there human representation. */
-%token GRAM_EOF 0 "end of string"
-%token STRING CHARACTER
-%token INT
+/* Define the tokens together with their human representation.  */
+%token GRAM_EOF 0 "end of file"
+%token STRING     "string"
+%token CHARACTER  "character"
+%token INT        "integer"
 
 %token PERCENT_TOKEN       "%token"
 %token PERCENT_NTERM       "%nterm"
 
 %token PERCENT_TOKEN       "%token"
 %token PERCENT_NTERM       "%nterm"
@@ -112,41 +113,43 @@ braced_code_t current_braced_code = action_braced_code;
 %token PERCENT_RIGHT       "%right"
 %token PERCENT_NONASSOC    "%nonassoc"
 
 %token PERCENT_RIGHT       "%right"
 %token PERCENT_NONASSOC    "%nonassoc"
 
-%token PERCENT_EXPECT "%expect"
-%token PERCENT_START "%start"
-%token PERCENT_PREC     "%prec"
-%token PERCENT_DPREC    "%dprec"
-%token PERCENT_MERGE    "%merge"
-%token PERCENT_VERBOSE  "%verbose"
+%token PERCENT_EXPECT        "%expect"
+%token PERCENT_START         "%start"
+%token PERCENT_PREC          "%prec"
+%token PERCENT_DPREC         "%dprec"
+%token PERCENT_MERGE         "%merge"
+%token PERCENT_VERBOSE       "%verbose"
 %token PERCENT_ERROR_VERBOSE "%error-verbose"
 
 %token PERCENT_ERROR_VERBOSE "%error-verbose"
 
-%token PERCENT_OUTPUT "%output"
+%token PERCENT_OUTPUT      "%output"
 %token PERCENT_FILE_PREFIX "%file-prefix"
 %token PERCENT_NAME_PREFIX "%name-prefix"
 
 %token PERCENT_FILE_PREFIX "%file-prefix"
 %token PERCENT_NAME_PREFIX "%name-prefix"
 
-%token PERCENT_DEFINE "%define"
+%token PERCENT_DEFINE      "%define"
 %token PERCENT_PURE_PARSER "%pure-parser"
 %token PERCENT_PURE_PARSER "%pure-parser"
-%token PERCENT_GLR_PARSER "%glr-parser"
+%token PERCENT_GLR_PARSER  "%glr-parser"
 
 %token PERCENT_DEFINES "%defines"
 
 %token PERCENT_YACC "%yacc"
 
 
 %token PERCENT_DEFINES "%defines"
 
 %token PERCENT_YACC "%yacc"
 
-%token PERCENT_DEBUG "%debug"
-%token PERCENT_LOCATIONS "%locations"
-%token PERCENT_NO_LINES "%no-lines"
-%token PERCENT_SKELETON "%skeleton"
+%token PERCENT_DEBUG       "%debug"
+%token PERCENT_LOCATIONS   "%locations"
+%token PERCENT_NO_LINES    "%no-lines"
+%token PERCENT_SKELETON    "%skeleton"
 %token PERCENT_TOKEN_TABLE "%token-table"
 
 %token PERCENT_TOKEN_TABLE "%token-table"
 
-%token TYPE
-%token EQUAL "="
-%token SEMICOLON ";"
-%token COLON ":"
-%token PIPE "|"
-%token ID "identifier"
+%token TYPE            "type"
+%token EQUAL           "="
+%token SEMICOLON       ";"
+%token COLON           ":"
+%token PIPE            "|"
+%token ID              "identifier"
 %token PERCENT_PERCENT "%%"
 %token PERCENT_PERCENT "%%"
-%token PROLOGUE EPILOGUE
-%token BRACED_CODE
+%token PROLOGUE        "%{...%}"
+%token EPILOGUE        "epilogue"
+%token BRACED_CODE     "{...}"
+
 
 %type <string> CHARACTER TYPE STRING string_content
                BRACED_CODE PROLOGUE EPILOGUE epilogue.opt action
 
 %type <string> CHARACTER TYPE STRING string_content
                BRACED_CODE PROLOGUE EPILOGUE epilogue.opt action
@@ -304,14 +307,14 @@ symbol_def:
     {
       symbol_class_set ($1, current_class, @1);
       symbol_type_set ($1, current_type, @1);
     {
       symbol_class_set ($1, current_class, @1);
       symbol_type_set ($1, current_type, @1);
-      symbol_make_alias ($1, $2);
+      symbol_make_alias ($1, $2, @$);
     }
 | ID INT string_as_id
     {
       symbol_class_set ($1, current_class, @1);
       symbol_type_set ($1, current_type, @1);
       symbol_user_token_number_set ($1, $2, @2);
     }
 | ID INT string_as_id
     {
       symbol_class_set ($1, current_class, @1);
       symbol_type_set ($1, current_type, @1);
       symbol_user_token_number_set ($1, $2, @2);
-      symbol_make_alias ($1, $3);
+      symbol_make_alias ($1, $3, @$);
     }
 ;
 
     }
 ;
 
@@ -459,8 +462,7 @@ yyprint (FILE *file,
 }
 
 void
 }
 
 void
-gram_error (gram_control_t *control ATTRIBUTE_UNUSED,
-           location_t *yylloc, const char *msg)
+gram_error (location_t *yylloc, const char *msg)
 {
   complain_at (*yylloc, "%s", msg);
 }
 {
   complain_at (*yylloc, "%s", msg);
 }