parse.y: Changed pointer declaration from "type* var" to "type *var" Removed trailing space.

2005-09-23  Rafael ��vila de Esp��ndola  <rafael.espindola@gmail.com>

        * parse.y : Changed pointer declaration from "type* var" to "type *var"
        Removed trailing space.  Wrap long lines.

2005-09-23  Rafael ��vila de Esp��ndola  <rafael.espindola@gmail.com>

        * parse.y :  Fixed two compile warnings in "error" and "warning"
        invocations.  Removed trailing periods in messages.  Decapitalized the
        first word of each.

From-SVN: r104569
This commit is contained in:
Rafael Ávila de Espíndola 2005-09-23 14:45:21 +00:00 committed by James A. Morrison
parent 9c6fdb4671
commit 9304100dbf
2 changed files with 94 additions and 82 deletions

View file

@ -1,3 +1,14 @@
2005-09-23 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
* parse.y : Changed pointer declaration from "type* var" to "type *var"
Removed trailing space. Wrap long lines.
2005-09-23 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
* parse.y : Fixed two compile warnings in "error" and "warning"
invocations. Removed trailing periods in messages. Decapitalized the
first word of each.
2005-08-07 James A. Morrison <phython@gcc.gnu.org> 2005-08-07 James A. Morrison <phython@gcc.gnu.org>
* tree-convert.c (convert): Use fold_build1 instead of * tree-convert.c (convert): Use fold_build1 instead of

View file

@ -1,5 +1,5 @@
/* -*- c -*- emacs mode c */ /* -*- c -*- emacs mode c */
/* TREELANG Compiler parser. /* TREELANG Compiler parser.
--------------------------------------------------------------------- ---------------------------------------------------------------------
@ -23,7 +23,7 @@ Boston, MA 02110-1301, USA.
In other words, you are welcome to use, share and improve this program. In other words, you are welcome to use, share and improve this program.
You are forbidden to forbid anyone else to use, share and improve You are forbidden to forbid anyone else to use, share and improve
what you give them. Help stamp out software-hoarding! what you give them. Help stamp out software-hoarding!
--------------------------------------------------------------------- ---------------------------------------------------------------------
@ -34,7 +34,7 @@ the GCC compiler. */
***************** *****************
There are no conflicts in this grammar. Please keep it that way. */ There are no conflicts in this grammar. Please keep it that way. */
%{ %{
#include "config.h" #include "config.h"
#include "system.h" #include "system.h"
#include "coretypes.h" #include "coretypes.h"
@ -47,7 +47,7 @@ the GCC compiler. */
#include "toplev.h" #include "toplev.h"
#define YYDEBUG 1 #define YYDEBUG 1
#define YYPRINT(file, type, value) print_token (file, type, value) #define YYPRINT(file, type, value) print_token (file, type, value)
#define YYERROR_VERBOSE YES #define YYERROR_VERBOSE YES
/* My yylex routine used to intercept calls to flex generated code, to /* My yylex routine used to intercept calls to flex generated code, to
@ -55,7 +55,7 @@ the GCC compiler. */
int yylex (void); int yylex (void);
static inline int my_yylex (void); static inline int my_yylex (void);
/* Call lex, but ensure time is charged to TV_LEX. */ /* Call lex, but ensure time is charged to TV_LEX. */
static inline int static inline int
my_yylex (void) my_yylex (void)
{ {
@ -72,20 +72,20 @@ the GCC compiler. */
/* Local prototypes. */ /* Local prototypes. */
static void yyerror (const char *error_message); static void yyerror (const char *error_message);
int yyparse (void); int yyparse (void);
void print_token (FILE * file, unsigned int type ATTRIBUTE_UNUSED, void print_token (FILE *file, unsigned int type ATTRIBUTE_UNUSED,
YYSTYPE value); YYSTYPE value);
static struct prod_token_parm_item *reverse_prod_list static struct prod_token_parm_item *reverse_prod_list
(struct prod_token_parm_item *old_first); (struct prod_token_parm_item *old_first);
static void ensure_not_void (unsigned int type, static void ensure_not_void (unsigned int type,
struct prod_token_parm_item* name); struct prod_token_parm_item *name);
static int check_type_match (int type_num, struct prod_token_parm_item *exp); static int check_type_match (int type_num, struct prod_token_parm_item *exp);
static int get_common_type (struct prod_token_parm_item *type1, static int get_common_type (struct prod_token_parm_item *type1,
struct prod_token_parm_item *type2); struct prod_token_parm_item *type2);
static struct prod_token_parm_item *make_integer_constant static struct prod_token_parm_item *make_integer_constant
(struct prod_token_parm_item* value); (struct prod_token_parm_item *value);
static struct prod_token_parm_item *make_plus_expression static struct prod_token_parm_item *make_plus_expression
(struct prod_token_parm_item* tok, struct prod_token_parm_item* op1, (struct prod_token_parm_item *tok, struct prod_token_parm_item *op1,
struct prod_token_parm_item* op2, int type_code, int prod_code); struct prod_token_parm_item *op2, int type_code, int prod_code);
static void set_storage (struct prod_token_parm_item *prod); static void set_storage (struct prod_token_parm_item *prod);
/* File global variables. */ /* File global variables. */
@ -143,8 +143,8 @@ the GCC compiler. */
%token PROD_VARIABLE_REFERENCE_EXPRESSION %token PROD_VARIABLE_REFERENCE_EXPRESSION
%token PROD_PARAMETER %token PROD_PARAMETER
%token PROD_FUNCTION_INVOCATION %token PROD_FUNCTION_INVOCATION
%expect 0 %expect 0
%% %%
file: file:
/* Nil. */ { /* Nil. */ {
@ -179,15 +179,15 @@ variable_def {
variable_def: variable_def:
storage typename NAME init_opt SEMICOLON { storage typename NAME init_opt SEMICOLON {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
struct prod_token_parm_item *prod; struct prod_token_parm_item *prod;
tok = $3; tok = $3;
prod = make_production (PROD_VARIABLE_NAME, tok); prod = make_production (PROD_VARIABLE_NAME, tok);
SYMBOL_TABLE_NAME (prod) = tok; SYMBOL_TABLE_NAME (prod) = tok;
EXPRESSION_TYPE (prod) = $2; EXPRESSION_TYPE (prod) = $2;
VAR_INIT (prod) = $4; VAR_INIT (prod) = $4;
NUMERIC_TYPE (prod) = NUMERIC_TYPE (prod) =
NUMERIC_TYPE (( (struct prod_token_parm_item*)EXPRESSION_TYPE (prod))); NUMERIC_TYPE (( (struct prod_token_parm_item *)EXPRESSION_TYPE (prod)));
ensure_not_void (NUMERIC_TYPE (prod), tok); ensure_not_void (NUMERIC_TYPE (prod), tok);
if (insert_tree_name (prod)) if (insert_tree_name (prod))
{ {
@ -198,10 +198,11 @@ storage typename NAME init_opt SEMICOLON {
if (VAR_INIT (prod)) if (VAR_INIT (prod))
{ {
gcc_assert (((struct prod_token_parm_item*)VAR_INIT (prod))->tp.pro.code); gcc_assert (((struct prod_token_parm_item *)
VAR_INIT (prod))->tp.pro.code);
if (STORAGE_CLASS (prod) == EXTERNAL_REFERENCE_STORAGE) if (STORAGE_CLASS (prod) == EXTERNAL_REFERENCE_STORAGE)
{ {
error("%HExternal reference variable %q.*s has an initial value.", error("%Hexternal reference variable %q.*s has an initial value",
&tok->tp.tok.location, tok->tp.tok.length, tok->tp.tok.chars); &tok->tp.tok.location, tok->tp.tok.length, tok->tp.tok.chars);
YYERROR; YYERROR;
VAR_INIT (prod) = NULL; VAR_INIT (prod) = NULL;
@ -210,12 +211,12 @@ storage typename NAME init_opt SEMICOLON {
} }
prod->tp.pro.code = tree_code_create_variable prod->tp.pro.code = tree_code_create_variable
(STORAGE_CLASS (prod), (STORAGE_CLASS (prod),
((struct prod_token_parm_item*)SYMBOL_TABLE_NAME (prod))->tp.tok.chars, ((struct prod_token_parm_item *)SYMBOL_TABLE_NAME (prod))->tp.tok.chars,
((struct prod_token_parm_item*)SYMBOL_TABLE_NAME (prod))->tp.tok.length, ((struct prod_token_parm_item *)SYMBOL_TABLE_NAME (prod))->tp.tok.length,
NUMERIC_TYPE (prod), NUMERIC_TYPE (prod),
VAR_INIT (prod) ? VAR_INIT (prod) ?
((struct prod_token_parm_item*)VAR_INIT (prod))->tp.pro.code : NULL, ((struct prod_token_parm_item *)VAR_INIT (prod))->tp.pro.code : NULL,
tok->tp.tok.location); tok->tp.tok.location);
gcc_assert (prod->tp.pro.code); gcc_assert (prod->tp.pro.code);
} }
@ -230,7 +231,7 @@ STATIC
parameter: parameter:
typename NAME { typename NAME {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
struct prod_token_parm_item *prod; struct prod_token_parm_item *prod;
struct prod_token_parm_item *prod2; struct prod_token_parm_item *prod2;
tok = $2; tok = $2;
@ -238,7 +239,7 @@ typename NAME {
SYMBOL_TABLE_NAME (prod) = $2; SYMBOL_TABLE_NAME (prod) = $2;
EXPRESSION_TYPE (prod) = $1; EXPRESSION_TYPE (prod) = $1;
NUMERIC_TYPE (prod) = NUMERIC_TYPE (prod) =
NUMERIC_TYPE (( (struct prod_token_parm_item*)EXPRESSION_TYPE (prod))); NUMERIC_TYPE (( (struct prod_token_parm_item *)EXPRESSION_TYPE (prod)));
ensure_not_void (NUMERIC_TYPE (prod), tok); ensure_not_void (NUMERIC_TYPE (prod), tok);
if (insert_tree_name (prod)) if (insert_tree_name (prod))
{ {
@ -252,12 +253,12 @@ typename NAME {
function_prototype: function_prototype:
storage typename NAME LEFT_PARENTHESIS parameters_opt RIGHT_PARENTHESIS SEMICOLON { storage typename NAME LEFT_PARENTHESIS parameters_opt RIGHT_PARENTHESIS SEMICOLON {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
struct prod_token_parm_item *prod; struct prod_token_parm_item *prod;
struct prod_token_parm_item *type; struct prod_token_parm_item *type;
struct prod_token_parm_item* first_parms; struct prod_token_parm_item *first_parms;
struct prod_token_parm_item* last_parms; struct prod_token_parm_item *last_parms;
struct prod_token_parm_item* this_parms; struct prod_token_parm_item *this_parms;
struct prod_token_parm_item *this_parm; struct prod_token_parm_item *this_parm;
struct prod_token_parm_item *this_parm_var; struct prod_token_parm_item *this_parm_var;
tok = $3; tok = $3;
@ -265,20 +266,20 @@ storage typename NAME LEFT_PARENTHESIS parameters_opt RIGHT_PARENTHESIS SEMICOLO
SYMBOL_TABLE_NAME (prod) = $3; SYMBOL_TABLE_NAME (prod) = $3;
EXPRESSION_TYPE (prod) = $2; EXPRESSION_TYPE (prod) = $2;
NUMERIC_TYPE (prod) = NUMERIC_TYPE (prod) =
NUMERIC_TYPE (( (struct prod_token_parm_item*)EXPRESSION_TYPE (prod))); NUMERIC_TYPE (( (struct prod_token_parm_item *)EXPRESSION_TYPE (prod)));
PARAMETERS (prod) = reverse_prod_list ($5); PARAMETERS (prod) = reverse_prod_list ($5);
insert_tree_name (prod); insert_tree_name (prod);
STORAGE_CLASS_TOKEN (prod) = $1; STORAGE_CLASS_TOKEN (prod) = $1;
set_storage (prod); set_storage (prod);
switch (STORAGE_CLASS (prod)) switch (STORAGE_CLASS (prod))
{ {
case STATIC_STORAGE: case STATIC_STORAGE:
case EXTERNAL_DEFINITION_STORAGE: case EXTERNAL_DEFINITION_STORAGE:
case EXTERNAL_REFERENCE_STORAGE: case EXTERNAL_REFERENCE_STORAGE:
break; break;
case AUTOMATIC_STORAGE: case AUTOMATIC_STORAGE:
error ("%HFunction %q.*s cannot be automatic.", error ("%Hfunction %q.*s cannot be automatic",
&tok->tp.tok.location, tok->tp.tok.length, tok->tp.tok.chars); &tok->tp.tok.location, tok->tp.tok.length, tok->tp.tok.chars);
YYERROR; YYERROR;
break; break;
@ -304,8 +305,8 @@ storage typename NAME LEFT_PARENTHESIS parameters_opt RIGHT_PARENTHESIS SEMICOLO
this_parms->tp.par.variable_name = this_parms->tp.par.variable_name =
this_parm_var->tp.pro.main_token->tp.tok.chars; this_parm_var->tp.pro.main_token->tp.tok.chars;
this_parms->category = parameter_category; this_parms->category = parameter_category;
this_parms->type = NUMERIC_TYPE this_parms->type = NUMERIC_TYPE
(( (struct prod_token_parm_item*)EXPRESSION_TYPE (this_parm_var))); (( (struct prod_token_parm_item *)EXPRESSION_TYPE (this_parm_var)));
if (last_parms) if (last_parms)
{ {
last_parms->tp.par.next = this_parms; last_parms->tp.par.next = this_parms;
@ -316,8 +317,8 @@ storage typename NAME LEFT_PARENTHESIS parameters_opt RIGHT_PARENTHESIS SEMICOLO
first_parms = this_parms; first_parms = this_parms;
last_parms = this_parms; last_parms = this_parms;
} }
this_parms->tp.par.where_to_put_var_tree = this_parms->tp.par.where_to_put_var_tree =
& (( (struct prod_token_parm_item*)VARIABLE (this_parm))->tp.pro.code); & (((struct prod_token_parm_item *)VARIABLE (this_parm))->tp.pro.code);
} }
FIRST_PARMS (prod) = first_parms; FIRST_PARMS (prod) = first_parms;
@ -333,8 +334,9 @@ storage typename NAME LEFT_PARENTHESIS parameters_opt RIGHT_PARENTHESIS SEMICOLO
this_parm; this_parm;
this_parm = this_parm->tp.pro.next) this_parm = this_parm->tp.pro.next)
{ {
gcc_assert ((struct prod_token_parm_item*)VARIABLE (this_parm)); gcc_assert ((struct prod_token_parm_item *)VARIABLE (this_parm));
gcc_assert (((struct prod_token_parm_item*)VARIABLE (this_parm))->tp.pro.code); gcc_assert (((struct prod_token_parm_item *)
VARIABLE (this_parm))->tp.pro.code);
} }
#endif #endif
} }
@ -344,14 +346,14 @@ function:
NAME LEFT_BRACE { NAME LEFT_BRACE {
struct prod_token_parm_item *proto; struct prod_token_parm_item *proto;
struct prod_token_parm_item search_prod; struct prod_token_parm_item search_prod;
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
tok = $1; tok = $1;
SYMBOL_TABLE_NAME ((&search_prod)) = tok; SYMBOL_TABLE_NAME ((&search_prod)) = tok;
search_prod.category = token_category; search_prod.category = token_category;
current_function = proto = lookup_tree_name (&search_prod); current_function = proto = lookup_tree_name (&search_prod);
if (!proto) if (!proto)
{ {
error ("%HNo prototype found for %q.*s", &tok->tp.tok.location, error ("%Hno prototype found for %q.*s", &tok->tp.tok.location,
tok->tp.tok.length, tok->tp.tok.chars); tok->tp.tok.length, tok->tp.tok.chars);
YYERROR; YYERROR;
} }
@ -362,7 +364,7 @@ NAME LEFT_BRACE {
} }
variable_defs_opt statements_opt RIGHT_BRACE { variable_defs_opt statements_opt RIGHT_BRACE {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
tok = $1; tok = $1;
tree_code_create_function_wrapup (tok->tp.tok.location); tree_code_create_function_wrapup (tok->tp.tok.location);
current_function = NULL; current_function = NULL;
@ -398,7 +400,7 @@ variable_def {
typename: typename:
INT { INT {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
struct prod_token_parm_item *prod; struct prod_token_parm_item *prod;
tok = $1; tok = $1;
prod = make_production (PROD_TYPE_NAME, tok); prod = make_production (PROD_TYPE_NAME, tok);
@ -407,7 +409,7 @@ INT {
$$ = prod; $$ = prod;
} }
|UNSIGNED INT { |UNSIGNED INT {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
struct prod_token_parm_item *prod; struct prod_token_parm_item *prod;
tok = $1; tok = $1;
prod = make_production (PROD_TYPE_NAME, tok); prod = make_production (PROD_TYPE_NAME, tok);
@ -416,7 +418,7 @@ INT {
$$ = prod; $$ = prod;
} }
|CHAR { |CHAR {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
struct prod_token_parm_item *prod; struct prod_token_parm_item *prod;
tok = $1; tok = $1;
prod = make_production (PROD_TYPE_NAME, tok); prod = make_production (PROD_TYPE_NAME, tok);
@ -425,7 +427,7 @@ INT {
$$ = prod; $$ = prod;
} }
|UNSIGNED CHAR { |UNSIGNED CHAR {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
struct prod_token_parm_item *prod; struct prod_token_parm_item *prod;
tok = $1; tok = $1;
prod = make_production (PROD_TYPE_NAME, tok); prod = make_production (PROD_TYPE_NAME, tok);
@ -434,7 +436,7 @@ INT {
$$ = prod; $$ = prod;
} }
|VOID { |VOID {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
struct prod_token_parm_item *prod; struct prod_token_parm_item *prod;
tok = $1; tok = $1;
prod = make_production (PROD_TYPE_NAME, tok); prod = make_production (PROD_TYPE_NAME, tok);
@ -492,7 +494,7 @@ expression SEMICOLON {
if_statement: if_statement:
IF LEFT_PARENTHESIS expression RIGHT_PARENTHESIS { IF LEFT_PARENTHESIS expression RIGHT_PARENTHESIS {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
struct prod_token_parm_item *exp; struct prod_token_parm_item *exp;
tok = $1; tok = $1;
exp = $3; exp = $3;
@ -503,12 +505,12 @@ LEFT_BRACE variable_defs_opt statements_opt RIGHT_BRACE {
/* Just let the statements flow. */ /* Just let the statements flow. */
} }
ELSE { ELSE {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
tok = $1; tok = $1;
tree_code_if_else (tok->tp.tok.location); tree_code_if_else (tok->tp.tok.location);
} }
LEFT_BRACE variable_defs_opt statements_opt RIGHT_BRACE { LEFT_BRACE variable_defs_opt statements_opt RIGHT_BRACE {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
tok = $1; tok = $1;
tree_code_if_end (tok->tp.tok.location); tree_code_if_end (tok->tp.tok.location);
} }
@ -527,14 +529,13 @@ tl_RETURN expression_opt {
tree_code_generate_return (type_prod->tp.pro.code, NULL); tree_code_generate_return (type_prod->tp.pro.code, NULL);
else else
{ {
warning (0, "%HRedundant expression in return.", warning (0, "%Hredundant expression in return",
&ret_tok->tp.tok.location, ret_tok->tp.tok.length, &ret_tok->tp.tok.location);
ret_tok->tp.tok.chars);
tree_code_generate_return (type_prod->tp.pro.code, NULL); tree_code_generate_return (type_prod->tp.pro.code, NULL);
} }
else else
if (exp == NULL) if (exp == NULL)
error ("%HExpression missing in return.", &ret_tok->tp.tok.location); error ("%Hexpression missing in return", &ret_tok->tp.tok.location);
else else
{ {
/* Check same type. */ /* Check same type. */
@ -559,7 +560,7 @@ expression_opt:
struct prod_token_parm_item *exp; struct prod_token_parm_item *exp;
exp = $1; exp = $1;
gcc_assert (exp->tp.pro.code); gcc_assert (exp->tp.pro.code);
$$ = $1; $$ = $1;
} }
; ;
@ -617,7 +618,7 @@ INTEGER {
function_invocation: function_invocation:
NAME LEFT_PARENTHESIS expressions_with_commas_opt RIGHT_PARENTHESIS { NAME LEFT_PARENTHESIS expressions_with_commas_opt RIGHT_PARENTHESIS {
struct prod_token_parm_item *prod; struct prod_token_parm_item *prod;
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
struct prod_token_parm_item search_prod; struct prod_token_parm_item search_prod;
struct prod_token_parm_item *proto; struct prod_token_parm_item *proto;
struct prod_token_parm_item *exp; struct prod_token_parm_item *exp;
@ -627,7 +628,7 @@ NAME LEFT_PARENTHESIS expressions_with_commas_opt RIGHT_PARENTHESIS {
int exp_count; int exp_count;
tree parms; tree parms;
tree type; tree type;
tok = $1; tok = $1;
prod = make_production (PROD_FUNCTION_INVOCATION, tok); prod = make_production (PROD_FUNCTION_INVOCATION, tok);
SYMBOL_TABLE_NAME (prod) = tok; SYMBOL_TABLE_NAME (prod) = tok;
@ -637,14 +638,14 @@ NAME LEFT_PARENTHESIS expressions_with_commas_opt RIGHT_PARENTHESIS {
proto = lookup_tree_name (&search_prod); proto = lookup_tree_name (&search_prod);
if (!proto) if (!proto)
{ {
error ("%HFunction prototype not found for %q.*%s.", error ("%Hfunction prototype not found for %q.*s",
&tok->tp.tok.location, tok->tp.tok.length, tok->tp.tok.chars); &tok->tp.tok.location, tok->tp.tok.length, tok->tp.tok.chars);
YYERROR; YYERROR;
} }
EXPRESSION_TYPE (prod) = EXPRESSION_TYPE (proto); EXPRESSION_TYPE (prod) = EXPRESSION_TYPE (proto);
NUMERIC_TYPE (prod) = NUMERIC_TYPE (proto); NUMERIC_TYPE (prod) = NUMERIC_TYPE (proto);
/* Count the expressions and ensure they match the prototype. */ /* Count the expressions and ensure they match the prototype. */
for (exp_proto_count = 0, exp_proto = PARAMETERS (proto); for (exp_proto_count = 0, exp_proto = PARAMETERS (proto);
exp_proto; exp_proto = exp_proto->tp.pro.next) exp_proto; exp_proto = exp_proto->tp.pro.next)
exp_proto_count++; exp_proto_count++;
@ -653,7 +654,7 @@ NAME LEFT_PARENTHESIS expressions_with_commas_opt RIGHT_PARENTHESIS {
if (exp_count != exp_proto_count) if (exp_count != exp_proto_count)
{ {
error ("%HExpression count mismatch %q.*s with prototype.", error ("%Hexpression count mismatch %q.*s with prototype",
&tok->tp.tok.location, tok->tp.tok.length, tok->tp.tok.chars); &tok->tp.tok.location, tok->tp.tok.length, tok->tp.tok.chars);
YYERROR; YYERROR;
} }
@ -683,7 +684,7 @@ NAME LEFT_PARENTHESIS expressions_with_commas_opt RIGHT_PARENTHESIS {
} }
; ;
expressions_with_commas_opt: expressions_with_commas_opt:
/* Nil. */ { /* Nil. */ {
$$ = 0 $$ = 0
} }
@ -711,7 +712,7 @@ NAME {
struct prod_token_parm_item search_prod; struct prod_token_parm_item search_prod;
struct prod_token_parm_item *prod; struct prod_token_parm_item *prod;
struct prod_token_parm_item *symbol_table_entry; struct prod_token_parm_item *symbol_table_entry;
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
tree type; tree type;
tok = $1; tok = $1;
@ -720,7 +721,7 @@ NAME {
symbol_table_entry = lookup_tree_name (&search_prod); symbol_table_entry = lookup_tree_name (&search_prod);
if (!symbol_table_entry) if (!symbol_table_entry)
{ {
error ("%HVariable %q.*s not defined.", error ("%Hvariable %q.*s not defined",
&tok->tp.tok.location, tok->tp.tok.length, tok->tp.tok.chars); &tok->tp.tok.location, tok->tp.tok.length, tok->tp.tok.chars);
YYERROR; YYERROR;
} }
@ -731,7 +732,7 @@ NAME {
if (!NUMERIC_TYPE (prod)) if (!NUMERIC_TYPE (prod))
YYERROR; YYERROR;
OP1 (prod) = $1; OP1 (prod) = $1;
prod->tp.pro.code = prod->tp.pro.code =
tree_code_get_expression (EXP_REFERENCE, type, tree_code_get_expression (EXP_REFERENCE, type,
symbol_table_entry->tp.pro.code, NULL, NULL, symbol_table_entry->tp.pro.code, NULL, NULL,
@ -767,7 +768,7 @@ INTEGER {
type. */ type. */
void void
print_token (FILE * file, unsigned int type ATTRIBUTE_UNUSED, YYSTYPE value) print_token (FILE *file, unsigned int type ATTRIBUTE_UNUSED, YYSTYPE value)
{ {
struct prod_token_parm_item *tok; struct prod_token_parm_item *tok;
unsigned int ix; unsigned int ix;
@ -802,18 +803,18 @@ reverse_prod_list (struct prod_token_parm_item *old_first)
struct prod_token_parm_item *current; struct prod_token_parm_item *current;
struct prod_token_parm_item *next; struct prod_token_parm_item *next;
struct prod_token_parm_item *prev = NULL; struct prod_token_parm_item *prev = NULL;
current = old_first; current = old_first;
prev = NULL; prev = NULL;
while (current) while (current)
{ {
gcc_assert (current->category == production_category); gcc_assert (current->category == production_category);
next = current->tp.pro.next; next = current->tp.pro.next;
current->tp.pro.next = prev; current->tp.pro.next = prev;
prev = current; prev = current;
current = next; current = next;
} }
return prev; return prev;
} }
@ -824,14 +825,14 @@ static void
ensure_not_void (unsigned int type, struct prod_token_parm_item* name) ensure_not_void (unsigned int type, struct prod_token_parm_item* name)
{ {
if (type == VOID_TYPE) if (type == VOID_TYPE)
error ("%HType must not be void in this context.", error ("%Htype must not be void in this context",
&name->tp.tok.location); &name->tp.tok.location);
} }
/* Check TYPE1 and TYPE2 which are integral types. Return the lowest /* Check TYPE1 and TYPE2 which are integral types. Return the lowest
common type (min is signed int). */ common type (min is signed int). */
static int static int
get_common_type (struct prod_token_parm_item *type1, get_common_type (struct prod_token_parm_item *type1,
struct prod_token_parm_item *type2) struct prod_token_parm_item *type2)
{ {
@ -847,7 +848,7 @@ get_common_type (struct prod_token_parm_item *type1,
OK else 0. Must be exact match - same name unless it is an OK else 0. Must be exact match - same name unless it is an
integral type. */ integral type. */
static int static int
check_type_match (int type_num, struct prod_token_parm_item *exp) check_type_match (int type_num, struct prod_token_parm_item *exp)
{ {
switch (type_num) switch (type_num)
@ -863,17 +864,17 @@ check_type_match (int type_num, struct prod_token_parm_item *exp)
case SIGNED_CHAR: case SIGNED_CHAR:
case UNSIGNED_CHAR: case UNSIGNED_CHAR:
return 1; return 1;
case VOID_TYPE: case VOID_TYPE:
default: default:
gcc_unreachable (); gcc_unreachable ();
} }
break; break;
case VOID_TYPE: case VOID_TYPE:
default: default:
gcc_unreachable (); gcc_unreachable ();
} }
} }
@ -882,7 +883,7 @@ check_type_match (int type_num, struct prod_token_parm_item *exp)
static struct prod_token_parm_item * static struct prod_token_parm_item *
make_integer_constant (struct prod_token_parm_item* value) make_integer_constant (struct prod_token_parm_item* value)
{ {
struct prod_token_parm_item* tok; struct prod_token_parm_item *tok;
struct prod_token_parm_item *prod; struct prod_token_parm_item *prod;
tok = value; tok = value;
prod = make_production (PROD_INTEGER_CONSTANT, tok); prod = make_production (PROD_INTEGER_CONSTANT, tok);
@ -901,9 +902,9 @@ make_integer_constant (struct prod_token_parm_item* value)
and EQUALS expressions. */ and EQUALS expressions. */
static struct prod_token_parm_item * static struct prod_token_parm_item *
make_plus_expression (struct prod_token_parm_item* tok, make_plus_expression (struct prod_token_parm_item *tok,
struct prod_token_parm_item* op1, struct prod_token_parm_item *op1,
struct prod_token_parm_item* op2, struct prod_token_parm_item *op2,
int type_code, int prod_code) int type_code, int prod_code)
{ {
struct prod_token_parm_item *prod; struct prod_token_parm_item *prod;
@ -921,7 +922,7 @@ make_plus_expression (struct prod_token_parm_item* tok,
OP1 (prod) = op1; OP1 (prod) = op1;
OP2 (prod) = op2; OP2 (prod) = op2;
prod->tp.pro.code = tree_code_get_expression (prod_code, type, prod->tp.pro.code = tree_code_get_expression (prod_code, type,
op1->tp.pro.code, op1->tp.pro.code,
op2->tp.pro.code, NULL, op2->tp.pro.code, NULL,
@ -936,18 +937,18 @@ make_plus_expression (struct prod_token_parm_item* tok,
static void static void
set_storage (struct prod_token_parm_item *prod) set_storage (struct prod_token_parm_item *prod)
{ {
struct prod_token_parm_item* stg_class; struct prod_token_parm_item *stg_class;
stg_class = STORAGE_CLASS_TOKEN (prod); stg_class = STORAGE_CLASS_TOKEN (prod);
switch (stg_class->type) switch (stg_class->type)
{ {
case STATIC: case STATIC:
STORAGE_CLASS (prod) = STATIC_STORAGE; STORAGE_CLASS (prod) = STATIC_STORAGE;
break; break;
case AUTOMATIC: case AUTOMATIC:
STORAGE_CLASS (prod) = AUTOMATIC_STORAGE; STORAGE_CLASS (prod) = AUTOMATIC_STORAGE;
break; break;
case EXTERNAL_DEFINITION: case EXTERNAL_DEFINITION:
STORAGE_CLASS (prod) = EXTERNAL_DEFINITION_STORAGE; STORAGE_CLASS (prod) = EXTERNAL_DEFINITION_STORAGE;
break; break;