C编译器LEX和YACC输入源文件

2008-3-13 23:22:06 作者: 数控机床 阅读: PDF

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] 下一页

Tags: 编译器 输入 源文件

C编译器LEX和YACC输入源文件评论

发表评论

评论内容 (必填):

 

我顶
我踩