C0文法
<加法运算符> ::= +|-
<乘法运算符> ::= * |/
<关系运算符> ::= <|<=|>|>=|!=|==
<字符> ::= _|a|...|z|A|...|Z
<数字> ::= 0|<非零数字>
<非零数字> ::= 1|...|9
<字符串> ::= "{ }"
//字符串中可以出现所有合法的可打印字符集中的字符
<程序> ::= [<常量说明部分>][<变量说明部分>]{<子函数定义部分>}<主函数>
<常量说明部分> ::= const<常量定义>{,<常量定义>};
<常量定义> ::= <标识符>=<整数>
<整数> ::= [+|-]<非零数字>{<数字>}|0
<标识符> ::= <字符>{<字符>|<数字>}
<声明头部> ::= int <标识符>
<变量说明部分> ::= <声明头部>{,<标识符>};
<子函数定义部分> ::= (<声明头部>|void <标识符>)<参数><复合语句>
<复合语句> ::= ‘{’[<常量说明部分>][<变量说明部分>]<语句序列>‘}’
<参数> ::= ‘(’<参数表>‘)’
<参数表> ::= int<标识符>{,int<标识符>} | 空
<主函数> ::= (void |int) main <参数><复合语句>
<表达式> ::= [+|-]<项>{<加法运算符><项>}
<项> ::= <因子>{<乘法运算符><因子>}
<因子> ::= <标识符>|‘(’<表达式>‘)’|<整数>|<子函数调用语句>
<语句> ::= <条件语句>|<循环语句>|‘{’‘}’|<子函数调用语句>;
|<赋值语句>; | ;|<读语句>;|<写语句>;|<空>
<赋值语句> ::= <标识符>=<表达式>
<条件语句> ::= if‘(’<条件>‘)’<语句>[else<语句>]
<条件> ::= <表达式><关系运算符><表达式>|<表达式>
<循环语句> ::= while‘(’<条件>‘)’<语句>
<子函数调用语句> ::= <标识符>‘(’<值参数表>‘)’
<值参数表> ::= <表达式>{,<表达式>}|<空>
<语句序列> ::= <语句>{<语句>}
<读语句> ::= scanf‘(’<标识符>‘)’
<写语句> ::= printf‘(’[,][<表达式 >]‘)’
<返回语句> ::= return [ ‘(’<表达式>‘)’]
注:返回值为void类型的子函数不允许出现在表达式中
2021-07-09 10:03:18
891KB
北航
计算机
1