Sysy数组的CFG
时间: 2023-10-22 10:09:08 浏览: 39
Sysy数组的CFG如下:
```
<variable_declaration> ::= <type_specifier> <init_declarator_list> ';'
<type_specifier> ::= 'int' | 'void'
<init_declarator_list> ::= <init_declarator> | <init_declarator_list> ',' <init_declarator>
<init_declarator> ::= <declarator> | <declarator> '=' <initializer>
<declarator> ::= '*'* <identifier> | '*'* '(' <declarator> ')'
<initializer> ::= <expression> | '{' <initializer_list> '}'
<initializer_list> ::= <initializer> | <initializer_list> ',' <initializer>
<expression> ::= <assignment_expression>
<assignment_expression> ::= <conditional_expression> | <unary_expression> <assignment_operator> <assignment_expression>
<assignment_operator> ::= '=' | '+=' | '-=' | '*=' | '/=' | '%='
<conditional_expression> ::= <logical_or_expression> | <logical_or_expression> '?' <expression> ':' <conditional_expression>
<logical_or_expression> ::= <logical_and_expression> | <logical_or_expression> '||' <logical_and_expression>
<logical_and_expression> ::= <inclusive_or_expression> | <logical_and_expression> '&&' <inclusive_or_expression>
<inclusive_or_expression> ::= <exclusive_or_expression> | <inclusive_or_expression> '|' <exclusive_or_expression>
<exclusive_or_expression> ::= <and_expression> | <exclusive_or_expression> '^' <and_expression>
and_expression> ::= <equality_expression> | <and_expression> '&' <equality_expression>
<equality_expression> ::= <relational_expression> | <equality_expression> '==' <relational_expression> | <equality_expression> '!=' <relational_expression>
<relational_expression> ::= <shift_expression> | <relational_expression> '<' <shift_expression> | <relational_expression> '>' <shift_expression> | <relational_expression> '<=' <shift_expression> | <relational_expression> '>=' <shift_expression>
<shift_expression> ::= <additive_expression> | <shift_expression> '<<' <additive_expression> | <shift_expression> '>>' <additive_expression>
<additive_expression> ::= <multiplicative_expression> | <additive_expression> '+' <multiplicative_expression> | <additive_expression> '-' <multiplicative_expression>
<multiplicative_expression> ::= <cast_expression> | <multiplicative_expression> '*' <cast_expression> | <multiplicative_expression> '/' <cast_expression> | <multiplicative_expression> '%' <cast_expression>
<cast_expression> ::= '(' <type_specifier> ')' <cast_expression> | <unary_expression>
<unary_expression> ::= <postfix_expression> | '++' <unary_expression> | '--' <unary_expression> | <unary_operator> <cast_expression>
<unary_operator> ::= '&' | '*' | '+' | '-' | '~' | '!'
<postfix_expression> ::= <primary_expression> | <postfix_expression> '[' <expression> ']' | <postfix_expression> '(' ')' | <postfix_expression> '(' <argument_expression_list> ')' | <postfix_expression> '.' <identifier>
<primary_expression> ::= '(' <expression> ')' | <constant> | <string_literal> | <identifier>
<constant> ::= <integer_constant>
<integer_constant> ::= <decimal_constant>
<decimal_constant> ::= ('1'-'9') ('0'-'9')*
<string_literal> ::= '"' (<escape_sequence> | ~'"')* '"'
<escape_sequence>::= '\' [abfnrtv"'\]
<identifier>::= ('a'-'z'|'A'-'Z'|'_') ('a'-'z'|'A'-'Z'|'_'|'0'-'9')*
<argument_expression_list> ::= <assignment_expression> | <argument_expression_list> ',' <assignment_expression>
```