上下文无关文法1
2015-07-29 10:30
851 查看
上下文无关文法
终结符号集合词法单元,该文法所定义的语言的基本符号的集合
非终结符号集合
语法变量,每个非终结符号表示一个终结符号的集合
产生式集合
一个产生式:
产生式头(左部)[非终结符号]->产生式体(右部)[终结符号或非终结符号]
开始符号
指定的一个非终结符号
加减运算表达式的文法
list -> list + digitlist -> list - digit
list -> digit
digit -> 0|1|2|3|4|5|6|7|8|9
或者
组合:
list -> list + digit | list - digit | digit
//注意:由较短的list与一个digit推导出较长的list的过程只能从左往右进行,这导致了语法分析树只能向左延伸。
该文法的终结符号:
+ - 0 1 2 3 4 5 6 7 8 9
运算符的优先级
+ - * / 都是左结合的运算符,其次* /的优先级高于 + -创建2个非终结符号expr和term分别对应于加减和乘除的优先级层次,使用非终结符号factor来表示中间单元:
expr -> expr + term | expr - term | term
term -> term * factor | term / factor | factor
factor -> digit | (expr)
相关文章推荐
- Python的词法分析与语法分析
- 实现一个简单的计算器
- NOP(N) NOP_##N
- 编译器是如何工作的?(转)
- 写给想学java的朋友!
- 学java的必看!
- java中的加密!
- java中的使用类!
- 词法法分析器
- 如何模仿人的学习模式来教计算机程序解数学题?
- 编译原理预习笔记------名词理解
- Simple scanner of c
- 编译原理:短语、直接短语、句柄、素短语
- 编译原理中FIRST集合与FOLLOW集合的算法
- 上下文无关文法解析
- 2、JavaScript高级之词法分析
- 识别浮点常量问题-编译原理程序实现
- 计算的哲学(philosophy in coding)
- 哈工大软件学院2012秋编译原理部分回顾
- C#之.Net平台和编译原理简介