在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
编译原理-1-C语言的文法 c语言的文法产生式:
programà external_declaration | program external_declaration
external_declarationà function_definition | declaration
function_definitionà type_specifier declarator compound_statement
type_specifierà VOID | CHAR | INT | FLOAT
declarator pointer direct_declarator | direct_declarator
Pointerà '*' | '*' pointer
direct_declarator IDENTIFIER |direct_declarator’[‘ ‘]’ |direct_declarator ’[’ constant_expression ’]’ | IDENTIFIER '(' parameter_list ')' | IDENTIFIER '('')' |direct_declarator‘,’identifier_list
identifier_list : IDENTIFIER | identifier_list ',' IDENTIFIER
constant_expressionà conditional_expression
parameter_listà parameter_declaration | parameter_list ',' parameter_declaration
declaration_specifiers IDENTIFIER
compound_statementà '{' '}' | '{' statement_list '}' | '{' declaration_list statement_list '}'
declaration_listà declaration | declaration_list declaration
Declarationà init_declarator | init_declarator_list ',' init_declarator
init_declaratorà declarator | declarator '=' initializer
Initializerà assignment_expression | '{' initializer_list '}' | '{' initializer_list ',' '}'
initializer_listà initializer | initializer_list ',' initializer
statement_listà statement | statement_list statement
Statementà | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement
expression_statementà ';' | expression ';'
selection_statement : IF '(' expression ')' statement | IF '(' expression ')' statement ELSE statement
iteration_statementà WHILE '(' expression ')' statement | FOR '(' expression_statement expression_statement ')' statement | FOR '(' expression_statement expression_statement expression ')' statement
jump_statement | CONTINUE ';' | BREAK ';' | RETURN ';' | RETURN expression ';'
expression : assignment_expression | expression ',' assignment_expression
assignment_expressionà conditional_expression | unary_expression assignment_operator assignment_expression
conditional_expressionà logical_or_expression | logical_or_expression '?' expression ':' conditional_expression
logical_or_expressionà logical_and_expression | logical_or_expression OR_OP logical_and_expression
logical_and_expression : inclusive_or_expression | logical_and_expression AND_OP 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 EQ_OP relational_expression | equality_expression NE_OP relational_expression
relational_expression : shift_expression | relational_expression '<' shift_expression | relational_expression '>' shift_expression | relational_expression LE_OP shift_expression | relational_expression GE_OP shift_expression
shift_expression : additive_expression | shift_expression LEFT_OP additive_expression | shift_expression RIGHT_OP 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 : unary_expression | '(' type_name ')' cast_expression
unary_expression : postfix_expression | INC_OP unary_expression | DEC_OP unary_expression | unary_operator cast_expression | SIZEOF unary_expression | SIZEOF '(' type_name ')'
postfix_expressionà : primary_expression | postfix_expression '[' expression ']' | postfix_expression '(' ')' | postfix_expression '(' argument_expression_list ')' | postfix_expression '.' IDENTIFIER | postfix_expression PTR_OP IDENTIFIER | postfix_expression INC_OP | postfix_expression DEC_OP
primary_expressionà IDENTIFIER | CONSTANT | STRING_LITERAL | '(' expression ')'
argument_expression_list : assignment_expression | argument_expression_list ',' assignment_expression
unary_operator : '&' | '*' | '+' | '-' | '~' | '!'
assignment_operatorà '=' | MUL_ASSIGN | DIV_ASSIGN | MOD_ASSIGN | ADD_ASSIGN | SUB_ASSIGN | LEFT_ASSIGN | RIGHT_ASSIGN | AND_ASSIGN | XOR_ASSIGN | OR_ASSIGN
storage_class_specifierà TYPEDEF | EXTERN | STATIC | AUTO | REGISTER
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 : specifier_qualifier_list struct_declarator_list ';' specifier_qualifier_listà type_specifier specifier_qualifier_list | type_specifier | type_qualifier specifier_qualifier_list | type_qualifier
struct_declarator_listà struct_declarator | struct_declarator_list ',' struct_declarator
struct_declaratorà : declarator | ':' constant_expression | declarator ':' constant_expression
enum_specifierà ENUM '{' enumerator_list '}' | ENUM IDENTIFIER '{' enumerator_list '}' | ENUM IDENTIFIER
enumerator_listà enumerator | enumerator_list ',' enumerator
Enumeratorà IDENTIFIER | IDENTIFIER '=' constant_expression
type_qualifierà CONST | VOLATILE
type_qualifier_listà type_qualifier | type_qualifier_list type_qualifier
parameter_type_listà parameter_list | parameter_list ',' ELLIPSIS
parameter_listà : parameter_declaration | parameter_list ',' parameter_declaration
type_nameà specifier_qualifier_list | specifier_qualifier_list abstract_declarator
abstract_declaratorà pointer | direct_abstract_declarator | pointer direct_abstract_declarator
direct_abstract_declaratorà '(' abstract_declarator ')' | '[' ']' | '[' constant_expression ']' | direct_abstract_declarator '[' ']' | direct_abstract_declarator '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' | direct_abstract_declarator '(' ')' | direct_abstract_declarator '(' parameter_type_list ')'
labeled_statementà IDENTIFIER ':' statement | CASE constant_expression ':' statement | DEFAULT ':' statement |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论