语音文法

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

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

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

<类型>-->无返回类型|字符型|整型|浮点型

<声明符>--><指针直接声明符>|<直接声明符>

<指针>-->’ * ’ | ’ * ’ <指针>

<直接声明符>v<标识符>|<直接声明符>’ [’ ’]’ |<直接声明符>’[’ <普通表达式>’]’ |<标识符>’ (’ <参数表>’ )’ |<标识符>’ (’   ’ )’ |<直接声明符 >‘ , ’ < 标识符表>

<标识符列表>:<标识符>|<标识符列表 >‘ , ‘  <标识符>

<一般表达式>--><条件表达式>

<参数表>--><参数声明>|<参数表 >‘ , ‘< 参数声明>

<复合语句>-->’ {’  ‘} ’|’ {’ <语句列表 >‘}’ |’ { ‘< 声明列表 语句表> ‘}’

<声明表>--><声明>|<声明列表 声明>

<声明>--><内声明符>|<内声明符表 >‘ , ’ <内声明符>

<内声明符>--><声明符>|<声明符 >‘ = ‘ < 初始化>

<初始化>--><赋值表达式>|’{’<初始列表>’}’|’{’<初始化列表>’,’’}’

<初始化列表>--><初始化>|<初始化列表>’,’<初始化>

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

<语句>-->|<复合语句>|<表达式语句>|<选择语句>|<循环语句>|<跳转语句>

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

<选择语句>:IF’(’<表达式>’)’<语句>|IF’(‘<表达式>’)’<语句>ELSE<语句>

<条件语句>-->while’(‘<表达式>’)’<语句>|FOR’(‘<表达式语句><表达式语句>’)’<语句>| FOR’(‘<表达式语句><表达式语句><表达式>’)’ <语句>

<跳转语句>|CONTINUE’;’|BREAK’;’|RETURN’;’|RETURN <表达式>’;’

<表达式>:<赋值语句>|<表达式>’;’<赋值语句>

<赋值表达式>--><条件表达式>|<一元表达式><赋值运算符><赋值表达式>

<条件表达式>--><逻辑或表达式>|<逻辑或表达式>’?’<表达式>’:’<条件表达式>

<逻辑或表达式>--><逻辑与表达式>|<逻辑或表达式> < 或OP逻辑与表达式>

<逻辑与表达式>:<包含或表达式>|<逻辑和表达式><和OP包含或表达式>

<包含或表达式>--><异或表达式>|<包容性表达式>’|’<异或表达式>

<异或表达式>:<与表达式>|<异或表达式>’^’<与表达式>

<与表达式>:<平等表达式>|<与表达式>’&’<平等表达式>

<平等表达式>:<关系式>|<平等表达式><EQ OP关系式>|<平等表达式><NE OP 关系式>

<关系式>:<移动式>|<关系式>’<’<移动式>|<关系式>’>’<移动表达式>|<关系式><LE OP移动式>|<关系式><GE OP移动式>

<移动式>:<附加式>|<移动表达式><左OP附加式>|<移动表达式><右OP附加式>

<附加式>:<乘法表达式>|<附加式>’+’<乘法表达式>|<附加式>’-’<乘法表达式>

<乘法表达式>:<转换表达式>|<乘法表达式>’*’<转换表达式>|<乘法表达式>’/’ <转换表达式>|<乘法表达式>’%’<转换表达式>

<转换表达式>:<一元表达式>|’(‘<类型名称>’)’ <转换表达式>

<一元表达式>:<后缀表达式>|< INC OP一元表达式>|< DEC OP一元表达式>|<一元运算符><转换表达式>|< SIZEOF一元表达式>|< SIZEOF’(‘类型名称’)’>

<后缀表达式>-->:<主要表达式>|< >’[‘<表达式>’]’|<后缀表达式>

<后缀表达式>’(‘<参数表达式列表>’)’|<后缀表达式>’.’<标识符>|<后缀表达式><PTR OP标识符>|<后缀表达式 INC OP>|<后缀表达式 DEC OP>

<主表达式>--><标识符>|<不变>|<字符串字面量>|’(‘<表达式>’)’

<参数表达式列表>:<赋值表达式>|<参数表达式列表>’,’ <赋值表达式>

<一元运算符>:’&’|’*’|’+’|’-‘|’~’|’!’

<赋值运算符>-->’=’| MUL_ASSIGN| DIV_ASSIGN| MOD_ASSIGN| ADD_ASSIGN| SUB_ASSIGN| LEFT_ASSIGN| RIGHT_ASSIGN| AND_ASSIGN| XOR_ASSIGN| OR_ASSIGN

<存储类说明>-->TYPEDEF |EXTERN|静态的|自动的|寄存器

<结构或联合说明符>:<结构或联合标识符>’{‘<struct声明列表>’}’|<结构或联合>’{‘< struct声明列表’>’}’|<结构或联合标识符>

<结构或联合>:<结构>|<联合>

< struct声明列表>:<struct声明>|< struct声明列表>< struct声明>

<struct声明>:<说明限定表>< struct声明列表>‘;‘

<说明限定表>--><类型说明符><说明限定表>|<类型说明符>|<类型限定><说明限定表>|<类型限定>

<结构说明符列表>--><结构说明符>|<结构说明符列表>’.’ <结构说明符>

<结构说明符>--><声明符>|’:’<常量表达式>|<声明符>’:’ <常量表达式>

<枚举说明>--><枚举>’{‘<枚举列表>’}’|<枚举标识符>’{‘<枚举列表>’}’|

<枚举标识符>

<枚举列表>--><枚举>|<枚举列表>’;’ <枚举>

<枚举>--><标识符>|<标识符>’=’<常量表达式>

<类型限定>--><常量>|<变量>

<类型限定表>-->|<类型限定表><类型限定>

<参数类型列表>--><参数列表>|<参数列表>’.’<省略号>

<参数列表>--><参数声明>|<参数列表>’;’ <参数声明>

<类型名>--><说明限定表>|<说明限定表><抽象声明符>

<抽象声明符>--><指针>||<指针直接抽象声明符>

<指针直接抽象声明符>-->’(‘<抽象声明>’)’|’[‘’]’|’[‘<常数表达式>’]’|<直接抽象声明符>’[‘’]’|<直接抽象声明符>’[‘<常数表达式>’]’|’(‘’)’|’(‘<参数类型列表>’)’|<直接抽象声明符>’(‘’)’|<直接抽象声明符>’(‘<参数类型列表>’)’

<标签语句>--><标识符>’;’<语句>|<案例><常数表达式>’;’<语句>|<默认>’:’<语句>

转载于:https://www.cnblogs.com/4249ken/p/4920768.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验2 文法读入、判定和处理 一、实验目的 熟悉文法的结构,了解文法在计算机内的表示方法。 二、实验内容 1、 设计一个表示文法数据结构; 2、 从文本文件读入文法利用定义数据结构文法,并输出; 3、 本实验结果将来还有用。 三、实验要求 1、 了解文法定义的4个部分: G(Vn, Vt, S, P) Vn 文法的非终结符号集合,在实验用大写的英文字母表示; Vt 文法的终结符号集合,在实验用小写的英文字母表示; S 开始符号,在实验是Vn集合一个元素; P 产生式,分左部和右部,左部为非终结符号一个,右部为终结符号或非终结符号组成的字符串,如S->ab|c 2、 根据文法各个部分的性质,设计一个合理的数据结构用来表示文法, 1) 若使用C语言编写,则文法可以设计成结构体形式,结构体应包含上述的4部分, 2) 若使用C++语言或java语言编写,则文法可以设计文法类形式,类至少含有4个数据成员,分别表示上述4个部分 文法数据结构的具体设计由学生根据自己想法完成,并使用C或C++语言或Java实现设计数据结构。 3、 利用完成的数据结构完成以下功能: 1) 从文本文件读入文法文法事先应写入文本文件); 2) 根据文法产生式的结构,分析出文法的4个部分,分别写入定义好的文法数据结构的相应部分; 3) 整理文法的结构,判断该文法文法类型,是否为0型,1型,2型或3型文法,并输出判断结果; 4) 在计算机屏幕或者文本框输出文法文法输出按照一个非终结符号一行,开始符号引出的产生式写在第一行,同一个非终结符号的候选式用“|”分隔的方式输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值