上下文无关文法(context-free gammar):
指文法的前后(上下)没有关系,如文法:
_statement ::= _name is _name's friend.
是上下文无关文法,因为文中出现的两个 name 可以不同(也可以相同,假设自己可以是自己的朋友)。而文法:
_statement ::= _name{0} likes _name{1}, and _name{1} likes _name{0} too.
是上下文相关文法,文中的两个_name{0}必须有同样的扩展,两个_name{1}也必须有同样的扩展。如:tom likes june, and june likes tom too. 即后文中所使用的扩展必须与前文中的扩展相同(或者相关)。同样下文也是上下文相关文法:
_statement ::= _fullname 's last name is _lastname{_lastname must have same extends with _lastname in _fullname}
_fullname ::= _firstname _lastname
_firstname ::= Richard | Tom | Bill
_lastname ::= Stevens | Hanks | Gates
在编译原理中一般把上下文相关的验证放在语义分析中,而不是语法分析。
相关文章
- 两个月15斤以上的健康减脂减重法,与饥饿、运动等无关的自我实验的验证方法(第二篇)...
- 【面试题】三道面试题让你掌握JavaScript中的执行上下文与作用域以及闭包
- odoo context上下文用法总结
- [编译原理]如何判断某文法的二义性以及找到文法对应的语言
- 【JavaScript】JS引擎中执行上下文如何顺序执行代码
- 引用reference作用域scope闭包closure上下文context用法
- 23岁大学毕业,专业与计算机无关,现在想学知识做一个游戏程序员,前辈们有什么好的建议?
- 三、多线程基础-自旋_AQS_多线程上下文
- Java多线程并发03—线程上下文,线程调度
- CSS中的各种格式化上下文-FC(BFC)、IFC、GFC、FFC)