alpha_beta ui: removed a redundant line
The original print routine was from an open book by galileo
computing and the redundant line was introduced there.
committer: Markus Bröker <mbroeker@largo.homelinux.org>
+ − %{
+ − #include "prototypes.h"
+ − %}
+ − %token IDENTIFIER CONSTANT STRING_LITERAL SIZEOF
+ − %token PTR_OP INC_OP DEC_OP LEFT_OP RIGHT_OP LE_OP GE_OP EQ_OP NE_OP
+ − %token AND_OP OR_OP MUL_ASSIGN DIV_ASSIGN MOD_ASSIGN ADD_ASSIGN
+ − %token SUB_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN
+ − %token XOR_ASSIGN OR_ASSIGN TYPE_NAME
+ −
+ − %token TYPEDEF EXTERN STATIC AUTO REGISTER
+ − %token CHAR SHORT INT LONG SIGNED UNSIGNED FLOAT DOUBLE CONST VOLATILE VOID
+ − %token STRUCT UNION ENUM ELIPSIS RANGE
+ −
+ − %token CASE DEFAULT IF ELSE SWITCH WHILE DO FOR GOTO CONTINUE BREAK RETURN
+ −
+ − %start file
+ − %%
+ −
+ − primary_expr
+ − : identifier
+ − | CONSTANT
+ − | STRING_LITERAL
+ − | '(' expr ')'
+ − ;
+ −
+ − postfix_expr
+ − : primary_expr
+ − | postfix_expr '[' expr ']'
+ − | postfix_expr '(' ')'
+ − | postfix_expr '(' argument_expr_list ')'
+ − | postfix_expr '.' identifier
+ − | postfix_expr PTR_OP identifier
+ − | postfix_expr INC_OP
+ − | postfix_expr DEC_OP
+ − ;
+ −
+ − argument_expr_list
+ − : assignment_expr
+ − | argument_expr_list ',' assignment_expr
+ − ;
+ −
+ − unary_expr
+ − : postfix_expr
+ − | INC_OP unary_expr
+ − | DEC_OP unary_expr
+ − | unary_operator cast_expr
+ − | SIZEOF unary_expr
+ − | SIZEOF '(' type_name ')'
+ − ;
+ −
+ − unary_operator
+ − : '&'
+ − | '*'
+ − | '+'
+ − | '-'
+ − | '~'
+ − | '!'
+ − ;
+ −
+ − cast_expr
+ − : unary_expr
+ − | '(' type_name ')' cast_expr
+ − ;
+ −
+ − multiplicative_expr
+ − : cast_expr
+ − | multiplicative_expr '*' cast_expr
+ − | multiplicative_expr '/' cast_expr
+ − | multiplicative_expr '%' cast_expr
+ − ;
+ −
+ − additive_expr
+ − : multiplicative_expr
+ − | additive_expr '+' multiplicative_expr
+ − | additive_expr '-' multiplicative_expr
+ − ;
+ −
+ − shift_expr
+ − : additive_expr
+ − | shift_expr LEFT_OP additive_expr
+ − | shift_expr RIGHT_OP additive_expr
+ − ;
+ −
+ − relational_expr
+ − : shift_expr
+ − | relational_expr '<' shift_expr
+ − | relational_expr '>' shift_expr
+ − | relational_expr LE_OP shift_expr
+ − | relational_expr GE_OP shift_expr
+ − ;
+ −
+ − equality_expr
+ − : relational_expr
+ − | equality_expr EQ_OP relational_expr
+ − | equality_expr NE_OP relational_expr
+ − ;
+ −
+ − and_expr
+ − : equality_expr
+ − | and_expr '&' equality_expr
+ − ;
+ −
+ − exclusive_or_expr
+ − : and_expr
+ − | exclusive_or_expr '^' and_expr
+ − ;
+ −
+ − inclusive_or_expr
+ − : exclusive_or_expr
+ − | inclusive_or_expr '|' exclusive_or_expr
+ − ;
+ −
+ − logical_and_expr
+ − : inclusive_or_expr
+ − | logical_and_expr AND_OP inclusive_or_expr
+ − ;
+ −
+ − logical_or_expr
+ − : logical_and_expr
+ − | logical_or_expr OR_OP logical_and_expr
+ − ;
+ −
+ − conditional_expr
+ − : logical_or_expr
+ − | logical_or_expr '?' logical_or_expr ':' conditional_expr
+ − ;
+ −
+ − assignment_expr
+ − : conditional_expr
+ − | unary_expr assignment_operator assignment_expr
+ − ;
+ −
+ − assignment_operator
+ − : '='
+ − | MUL_ASSIGN
+ − | DIV_ASSIGN
+ − | MOD_ASSIGN
+ − | ADD_ASSIGN
+ − | SUB_ASSIGN
+ − | LEFT_ASSIGN
+ − | RIGHT_ASSIGN
+ − | AND_ASSIGN
+ − | XOR_ASSIGN
+ − | OR_ASSIGN
+ − ;
+ −
+ − expr
+ − : assignment_expr
+ − | expr ',' assignment_expr
+ − ;
+ −
+ − constant_expr
+ − : conditional_expr
+ − ;
+ −
+ − declaration
+ − : declaration_specifiers ';'
+ − | declaration_specifiers init_declarator_list ';'
+ − ;
+ −
+ − declaration_specifiers
+ − : storage_class_specifier
+ − | storage_class_specifier declaration_specifiers
+ − | type_specifier
+ − | type_specifier declaration_specifiers
+ − ;
+ −
+ − init_declarator_list
+ − : init_declarator
+ − | init_declarator_list ',' init_declarator
+ − ;
+ −
+ − init_declarator
+ − : declarator
+ − | declarator '=' initializer
+ − ;
+ −
+ − storage_class_specifier
+ − : TYPEDEF
+ − | EXTERN
+ − | STATIC
+ − | AUTO
+ − | REGISTER
+ − ;
+ −
+ − type_specifier
+ − : CHAR
+ − | SHORT
+ − | INT
+ − | LONG
+ − | SIGNED
+ − | UNSIGNED
+ − | FLOAT
+ − | DOUBLE
+ − | CONST
+ − | VOLATILE
+ − | VOID
+ − | struct_or_union_specifier
+ − | enum_specifier
+ − | TYPE_NAME
+ − ;
+ −
+ − struct_or_union_specifier
+ − : struct_or_union identifier '{' struct_declaration_list '}'
+ − | struct_or_union '{' struct_declaration_list '}'
+ − | struct_or_union identifier
+ − ;
+ −
+ − struct_or_union
+ − : STRUCT
+ − | UNION
+ − ;
+ −
+ − struct_declaration_list
+ − : struct_declaration
+ − | struct_declaration_list struct_declaration
+ − ;
+ −
+ − struct_declaration
+ − : type_specifier_list struct_declarator_list ';'
+ − ;
+ −
+ − struct_declarator_list
+ − : struct_declarator
+ − | struct_declarator_list ',' struct_declarator
+ − ;
+ −
+ − struct_declarator
+ − : declarator
+ − | ':' constant_expr
+ − | declarator ':' constant_expr
+ − ;
+ −
+ − enum_specifier
+ − : ENUM '{' enumerator_list '}'
+ − | ENUM identifier '{' enumerator_list '}'
+ − | ENUM identifier
+ − ;
+ −
+ − enumerator_list
+ − : enumerator
+ − | enumerator_list ',' enumerator
+ − ;
+ −
+ − enumerator
+ − : identifier
+ − | identifier '=' constant_expr
+ − ;
+ −
+ − declarator
+ − : declarator2
+ − | pointer declarator2
+ − ;
+ −
+ − declarator2
+ − : identifier
+ − | '(' declarator ')'
+ − | declarator2 '[' ']'
+ − | declarator2 '[' constant_expr ']'
+ − | declarator2 '(' ')'
+ − | declarator2 '(' parameter_type_list ')'
+ − | declarator2 '(' parameter_identifier_list ')'
+ − ;
+ −
+ − pointer
+ − : '*'
+ − | '*' type_specifier_list
+ − | '*' pointer
+ − | '*' type_specifier_list pointer
+ − ;
+ −
+ − type_specifier_list
+ − : type_specifier
+ − | type_specifier_list type_specifier
+ − ;
+ −
+ − parameter_identifier_list
+ − : identifier_list
+ − | identifier_list ',' ELIPSIS
+ − ;
+ −
+ − identifier_list
+ − : identifier
+ − | identifier_list ',' identifier
+ − ;
+ −
+ − parameter_type_list
+ − : parameter_list
+ − | parameter_list ',' ELIPSIS
+ − ;
+ −
+ − parameter_list
+ − : parameter_declaration
+ − | parameter_list ',' parameter_declaration
+ − ;
+ −
+ − parameter_declaration
+ − : type_specifier_list declarator
+ − | type_name
+ − ;
+ −
+ − type_name
+ − : type_specifier_list
+ − | type_specifier_list abstract_declarator
+ − ;
+ −
+ − abstract_declarator
+ − : pointer
+ − | abstract_declarator2
+ − | pointer abstract_declarator2
+ − ;
+ −
+ − abstract_declarator2
+ − : '(' abstract_declarator ')'
+ − | '[' ']'
+ − | '[' constant_expr ']'
+ − | abstract_declarator2 '[' ']'
+ − | abstract_declarator2 '[' constant_expr ']'
+ − | '(' ')'
+ − | '(' parameter_type_list ')'
+ − | abstract_declarator2 '(' ')'
+ − | abstract_declarator2 '(' parameter_type_list ')'
+ − ;
+ −
+ − initializer
+ − : assignment_expr
+ − | '{' initializer_list '}'
+ − | '{' initializer_list ',' '}'
+ − ;
+ −
+ − initializer_list
+ − : initializer
+ − | initializer_list ',' initializer
+ − ;
+ −
+ − statement
+ − : labeled_statement
+ − | compound_statement
+ − | expression_statement
+ − | selection_statement
+ − | iteration_statement
+ − | jump_statement
+ − ;
+ −
+ − labeled_statement
+ − : identifier ':' statement
+ − | CASE constant_expr ':' statement
+ − | DEFAULT ':' statement
+ − ;
+ −
+ − compound_statement
+ − : '{' '}'
+ − | '{' statement_list '}'
+ − | '{' declaration_list '}'
+ − | '{' declaration_list statement_list '}'
+ − ;
+ −
+ − declaration_list
+ − : declaration
+ − | declaration_list declaration
+ − ;
+ −
+ − statement_list
+ − : statement
+ − | statement_list statement
+ − ;
+ −
+ − expression_statement
+ − : ';'
+ − | expr ';'
+ − ;
+ −
+ − selection_statement
+ − : IF '(' expr ')' statement
+ − | IF '(' expr ')' statement ELSE statement
+ − | SWITCH '(' expr ')' statement
+ − ;
+ −
+ − iteration_statement
+ − : WHILE '(' expr ')' statement
+ − | DO statement WHILE '(' expr ')' ';'
+ − | FOR '(' ';' ';' ')' statement
+ − | FOR '(' ';' ';' expr ')' statement
+ − | FOR '(' ';' expr ';' ')' statement
+ − | FOR '(' ';' expr ';' expr ')' statement
+ − | FOR '(' expr ';' ';' ')' statement
+ − | FOR '(' expr ';' ';' expr ')' statement
+ − | FOR '(' expr ';' expr ';' ')' statement
+ − | FOR '(' expr ';' expr ';' expr ')' statement
+ − ;
+ −
+ − jump_statement
+ − : GOTO identifier ';'
+ − | CONTINUE ';'
+ − | BREAK ';'
+ − | RETURN ';'
+ − | RETURN expr ';'
+ − ;
+ −
+ − file
+ − : external_definition
+ − | file external_definition
+ − ;
+ −
+ − external_definition
+ − : function_definition
+ − | declaration
+ − ;
+ −
+ − function_definition
+ − : declarator function_body
+ − | declaration_specifiers declarator function_body
+ − ;
+ −
+ − function_body
+ − : compound_statement
+ − | declaration_list compound_statement
+ − ;
+ −
+ − identifier
+ − : IDENTIFIER
+ − ;
+ − %%
+ −
+ − #include <stdio.h>
+ −
+ − extern YYSTYPE yytext;
+ − extern int column;
+ −
+ − void yyerror(char *s)
+ − {
+ − fflush(stdout);
+ − printf("[%4d]: %s\n", column, yytext);
+ − printf("\n%*s\n%*s\n", column, "^", column, s);
+ − }