Ada*_*Lee 9 theory grammar parsing programming-languages
C++,C#或Java语言是无上下文还是上下文敏感?
C++既不是上下文也不是上下文敏感的,因为模板系统是Turing-complete并且确定一段C++代码是否合法C++是不可判的.例如,我可以定义一个模拟字符串上模拟TM的模板类,然后创建一个值为1的常量(如果机器接受),如果不接受,则创建0.如果我这样做,那么如果TM在给定输入上停止,则以下代码将是合法的:
int myArray[TMTemplate</* ... args ... */>::value];
Run Code Online (Sandbox Code Playgroud)
因为如果TM拒绝,这将创建一个大小为0的数组,这是不允许的.
C#和Java都不是无上下文的,因为已知在整个特定范围内是否正确且一致地使用变量的检查不是无上下文的(证明是复杂的并且依赖于Ogden的引理).但是,我不确定它们是否与上下文相关.
希望这能为你的问题提供部分答案!