上下文通过无上下文和上下文敏感语法意味着什么



如果我有类似 var string = "var";的东西,那么第一个double引用规则更改后, var并不意味着与文本开始时的含义相同。在第二个双引号之后,事物转回正常。如何不被视为上下文?

(请不要在答案中使用这些箭头,而是尝试一种自然语言!)

箭头的方向很重要,因此,如果我不能谈论它,那将很难解释。所以,对不起,我要使用箭头。他们真的并不复杂。

表达式A -> ...的意思是" A..."。它确实不是是" ...A"。无上下文意味着,如果A在某些上下文中可以是" ...",则可以在任何上下文中都是" ..."。但是箭头总是从类别到特定的点。永不倒退。

在您的示例中,identifier是一封信,后跟一堆字母数字符号:

 identifier -> letter (letter OR digit)...

因此identifier可以是 var 。这并不意味着 var 始终是identifier,如您的示例所示。箭头指向一个方向。

因为语法是不含上下文的,如果我们在某些上下文中寻找identifier并且我们接受 var 作为identifier,那么在我们正在寻找identifier的任何其他上下文中我们还必须接受 var

但是,我们是不是寻找 identifier的上下文(引号)。没关系;无上下文条件尚未破坏。上下文适用于箭头的方向。

最新更新