Start adding some grammar definition
This commit is contained in:
parent
50480d80b4
commit
9d2c41edc1
@ -115,7 +115,115 @@ static void handle_error(const char * str, const YYLTYPE * yylloc);
|
||||
|
||||
%%
|
||||
|
||||
translation_unit: TOK_PLUS;
|
||||
constant: TOK_FLOAT_CONST
|
||||
| TOK_INT_CONST
|
||||
| TOK_IDENTIFIER
|
||||
| TOK_CHAR_CONST
|
||||
;
|
||||
|
||||
primary_expression: TOK_IDENTIFIER
|
||||
| constant
|
||||
| TOK_STR_CONST
|
||||
| TOK_LPAREN expression TOK_RPAREN
|
||||
;
|
||||
|
||||
expression: assignment_expression
|
||||
| expression TOK_COMMA assignment_expression
|
||||
;
|
||||
|
||||
constant_expression: conditional_expression
|
||||
;
|
||||
|
||||
conditional_expression: logical_or_expression
|
||||
| logical_or_expression TOK_QUESTION expression TOK_COLON conditional_expression
|
||||
;
|
||||
|
||||
assignment_expression: conditional_expression
|
||||
| unary_expression TOK_ASSIGN assignment_expression
|
||||
;
|
||||
|
||||
postfix_expression: primary_expression
|
||||
| postfix_expression TOK_LBRACKET expression TOK_RBRACKET
|
||||
| postfix_expression TOK_LPAREN TOK_RPAREN
|
||||
| postfix_expression TOK_LPAREN argument_expression_list TOK_RPAREN
|
||||
| postfix_expression TOK_DOT TOK_IDENTIFIER
|
||||
| postfix_expression TOK_ARROW TOK_IDENTIFIER
|
||||
| postfix_expression TOK_INCREMENT
|
||||
| postfix_expression TOK_DECREMENT
|
||||
;
|
||||
|
||||
argument_expression_list: assignment_expression
|
||||
| argument_expression_list TOK_COMMA assignment_expression
|
||||
;
|
||||
|
||||
unary_expression: postfix_expression
|
||||
| TOK_INCREMENT unary_expression
|
||||
| TOK_DECREMENT unary_expression
|
||||
| unary_operator
|
||||
| cast_expression
|
||||
| TOK_SIZEOF unary_expression
|
||||
| TOK_SIZEOF TOK_LPAREN type_name TOK_RPAREN
|
||||
;
|
||||
|
||||
unary_operator: TOK_BITAND
|
||||
| TOK_TIMES
|
||||
| TOK_PLUS
|
||||
| TOK_MINUS
|
||||
| TOK_BITNOT
|
||||
| TOK_NOT
|
||||
;
|
||||
|
||||
cast_expression: unary_expression
|
||||
| TOK_LPAREN type_name TOK_RPAREN cast_expression
|
||||
;
|
||||
|
||||
multiplicative_expression: cast_expression
|
||||
| multiplicative_expression TOK_TIMES cast_expression
|
||||
| multiplicative_expression TOK_DIVIDE cast_expression
|
||||
| multiplicative_expression TOK_MOD cast_expression
|
||||
;
|
||||
|
||||
additive_expression: multiplicative_expression
|
||||
| additive_expression TOK_PLUS multiplicative_expression
|
||||
| additive_expression TOK_MINUS multiplicative_expression
|
||||
;
|
||||
|
||||
shift_expression: additive_expression
|
||||
| shift_expression TOK_LSHIFT additive_expression
|
||||
| shift_expression TOK_RSHIFT additive_expression
|
||||
;
|
||||
|
||||
relational_expression: shift_expression
|
||||
| relational_expression TOK_LESS shift_expression
|
||||
| relational_expression TOK_GREATER shift_expression
|
||||
| relational_expression TOK_LESSEQ shift_expression
|
||||
| relational_expression TOK_GREATEREQ shift_expression
|
||||
;
|
||||
|
||||
equality_expression: relational_expression
|
||||
| equality_expression TOK_EQUALS relational_expression
|
||||
| equality_expression TOK_NOTEQUALS relational_expression
|
||||
;
|
||||
|
||||
and_expression: equality_expression
|
||||
| and_expression TOK_BITAND equality_expression
|
||||
;
|
||||
|
||||
exclusive_or_expression: and_expression
|
||||
| exclusive_or_expression TOK_XOR and_expression
|
||||
;
|
||||
|
||||
inclusive_or_expression: exclusive_or_expression
|
||||
| inclusive_or_expression TOK_BITOR exclusive_or_expression
|
||||
;
|
||||
|
||||
logical_and_expression: inclusive_or_expression
|
||||
| logical_and_expression TOK_AND inclusive_or_expression
|
||||
;
|
||||
|
||||
logical_or_expression: logical_and_expression
|
||||
| logical_or_expression TOK_OR logical_and_expression
|
||||
;
|
||||
|
||||
%%
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user