设为首页 加入收藏

TOP

深入浅出编译原理-1-C语言的文法(一)
2014-11-23 23:55:06 来源: 作者: 【 】 浏览:39
Tags:深入浅出 编译 原理 -1-C 语言 文法

编译原理-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

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_

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU1045 下一篇深入浅出编译原理-4-一个简单词法..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: