Sample语言上下文无关文法

<表达式>:

<表达式>-<算术表达式>|<关系表达式>|<布尔表达式>|<赋值表达式>

<算术表达式>

<算术表达式> -> <算术表达式> + <项> | <算术表达式> - <项>|<项>

<项> -> <项>* <因子>|<项>/<因子>|<项>%<因子><因子>

<因子> -> (<算术表达式>)<常量>|<变量>|<函数调用>

<常量> -> <数值型常量><字符型常量>

<变量> -> <标识符>

<函数调用> -> <标识符>(<实参列表>)

<实参列表> -> <实参>|e

<实参> -> <表达式>|<表达式>,<实参>

<关系表达式>

<关系表达式> -> <算术表达式><关系运算符>算术表达式>

<关系运算符> -> > |<|>= l <= | == | !=

<布尔表达式>

<布尔表达式> -> <布尔表达式> || < 布尔项>|<布尔项>

<布尔项> -> <布尔项> && <布尔因子>|<布尔因子>

<布尔因子> -> <算术表达式>|<关系表达式>|!<布尔表达式>

<赋值表达式>

<赋值表达式> -> <标识符>=<表达式>

<语句>

<语句> -> <声明语句>|<执行语句>

<声明语句>

<声明语句> -> <值声明>|<函数声明>|e

<值声明> -> <常量声明>|<变量声明>

<常量声明> -> const <常量类型><常量声明表>

<常量类型> -> int | char | float

<常量声明表> -> <标识符> = <常量>;|<标识符> = <常量>,<常量声明表>

<变量声明> -> <变量类型><变量声明表>

<变量声明表> -> <单变量声明>;|<单变量声明>,<变量声明表>

<单变量声明> -> <变量>|<变量> = <表达式>

<变量类型> -> int | char | float

<函数声明> -> <函数类型><标识符>(<函数声明形参列表>);

<函数类型> -> int | char | float | void

<函数声明形参列表> -> <函数声明形参>|e

<函数声明形参> -> <变量类型>|<变量类型>,<函数声明形参>

<执行语句>

<执行语句> -> <数据处理语句>|<控制语>|<复合语>

<数据处理语句> -> <赋值语句>|<函数调用语句>

<赋值语句> -> <赋值表达式>;

<函数调用语句>-<函数调用>;

<控制语句> -> < if 语>|< for 语>|< while 语> | < do while 语> l < return 语句>

<复合语句> -> {<语句表>}

<语句表> -> <语句> | <语句><语句表>

< if 语句> -> if (<表达式>)<语句>| if (<表达式>)<语句> else <语句>

< for 语句> -> for (<表达式>;<表达式>;<表达式>)<循环语句>

< while 语句> -> while (<表达式>)<循环语句>

< do while 语句> -> do<循环用复合语> while (<表达式>);

<循环语句> -> <声明语句>|<循环执行语句> | <循环用复合语句>

<循环用复合语句> -> {<循环语句表>}

<循环语句表> -> <循环语句>|<循环语句><循环语句表>

<循环执行语句> -> <循环用 if 语句>|< for 语句>|< while 语句>< do while 语句><return语句>l< break 语句>l< continue 语句>

<循环用 if 语句> -> if (<表达式>)<循环语句>|if (<表达式>)<循环语句> else <循环语句>

<return 语句> -> return; | return <表达式>;

< break 语句> -> break;

<continue 语句> -> continue;

<函数定义>

<函数定义> -> <函数类型><标识符>(<函数定义形参列表>) <复合语句>

<函数定义形参列表> -> <函数定义形参>|e

<函数定义形参> -> <变量类型> <标识符>|<变量类型> <标识符>,<函数定义形参>

<程序>

<程序> -> <声明语句> main()<复合语句>函数块>

<函数块> -> <函数定义><函数块>|e

猜你喜欢

转载自blog.csdn.net/QRLYLETITBE/article/details/130376770
今日推荐