数控车床 >> 行业动态 >> C编译器LEX和YACC输入源文件
C编译器LEX和YACC输入源文件
C编译器LEX和YACC输入源文件。
/*YACC--LALR(1) PARSER*/ %token IDENTIFIER CO TANT 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_A IGN DIV_A IGN MOD_A IGN ADD_A IGN
%token SUB_A IGN LEFT_A IGN RIGHT_A IGN AND_A IGN
%token XOR_A IGN OR_A IGN TYPE_NAME %token TYPEDEF EXTERN STATIC AUTO REGISTER
%token CHAR SHORT INT LONG SIGNED U IGNED FLOAT DOUBLE CO T VOLATILE VOID
%token STRUCT UNION ENUM ELI IS RANGE %token CASE DEFAULT IF ELSE SWITCH WHILE DO FOR GOTO CONTINUE BREAK RETURN %start file
%% primary_expr
: identifier
| CO TANT
| 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
: a ignment_expr
| argument_expr_list ',' a ignment_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
: '&am '
| '*'
| '+'
| '-'
| '~'
| '!'
cast_expr
: unary_expr
| '(' type_name ')' cast_expr
multiplicative_expr
: cast_expr
| multiplicative_expr '*' cast_expr
| multiplicative_expr '/' cast_expr
| multiplicative_expr '%' cast_expr
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
