c语言 产生式,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

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 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值