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) \
- gram_error (yycontrol, &yylloc, Msg)
+ gram_error (&yylloc, Msg)
#define YYPRINT(File, Type, Value) \
yyprint (File, Type, &Value)
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;
%}
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_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_OUTPUT "%output"
+%token PERCENT_OUTPUT "%output"
%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_GLR_PARSER "%glr-parser"
+%token PERCENT_GLR_PARSER "%glr-parser"
%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 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 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
{
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);
- symbol_make_alias ($1, $3);
+ symbol_make_alias ($1, $3, @$);
}
;
}
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);
}