[英]Are the grammars of modern programming languages context-free or context-sensitive?
C ++,C#或Java语言是无上下文还是上下文敏感?
C ++既不是上下文也不是上下文敏感的,因为模板系统是Turing-complete并且确定一段C ++代码是否合法C ++是不可判的。 例如,我可以定义一个模拟字符串上模拟TM的模板类,然后创建一个值为1的常量(如果机器接受),如果不接受,则创建0。 如果我这样做,那么如果TM在给定输入上停止,则以下代码将是合法的:
int myArray[TMTemplate</* ... args ... */>::value];
因为如果TM拒绝,这将创建一个大小为0的数组,这是不允许的。
C#和Java都不是无上下文的,因为已知在整个特定范围内是否正确且一致地使用变量的检查不是无上下文的(证明是复杂的并且依赖于Ogden的引理 )。 但是,我不确定它们是否与上下文相关。
希望这能为你的问题提供部分答案!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.