您的位置:首页 > 其它

文法 分析 2

2015-12-30 16:32 204 查看
pro

gram à

external_declaration

| program external_declaration

程序-> <外部声明><程序><外部声明>

external_declaration à

function_definition

| declaration

外部声明-> <函数定义>|<声明>

function_definition à type_specifier declarator compound_statement

函数定义-> <函数类型><说明符><复合语句>

type_specifier à

VOID

| CHAR

| INT

| FLOAT

函数类型-> 无返回值|字符型|整型|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

选择语句-> IF(<表达式>)<陈述语句>|IF(<表达式>)<陈述语句>ELSE<陈述语句>

iteration_statementà

WHILE '(' expression ')' statement

| FOR '(' expression_statement expression_statement ')' statement

| FOR '(' expression_statement expression_statement expression ')' statement

循环语句->WHILE(<表达式>)<陈述语句>|FOR(<表达式语句><表达式语句>)<陈述语句>|FOR(<表达式语句><表达式语句><陈述语句>)<陈述语句>

jump_statement

| CONTINUE ';'

| BREAK ';'

| RETURN ';'

| RETURN expression ';'

转移语句->CONTINUE;| BREAK; | RETURN; | RETURN <表达式>;

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

包括或表达式à<唯一或表达式>|<包括或表达式><唯一或表达式>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: