上下文无关和上下文相关语法的上下文是什么意思?
What does context mean by context-free and context-sensitive grammars?
如果我有类似 var string = "var";
的内容,那么在第一个双引号之后规则会发生变化,并且 var
与文本开头的含义不同。在第二个双引号之后一切恢复正常。怎么不考虑上下文?
(请不要在您的回答中使用这些箭头,而是尝试使用自然语言!)
箭头的方向很重要,所以如果我不能谈论它,将很难解释。所以,抱歉,我要使用箭头。它们真的并不复杂。
表达式A -> ...
表示"an A
is ...
"。它 不是 意思是“...
是一个 A
”。上下文无关意味着如果 A
在某些上下文中可以是“...”,那么它在任何上下文中都可以是“...”。但是箭头总是从类别指向具体;永不倒退。
在您的示例中,identifier
是一个字母后跟一堆字母数字符号:
identifier -> letter (letter OR digit)...
所以 identifier
可以是 var。正如您的示例所示,这并不意味着 var 始终是 identifier
。箭头指向一个方向。
因为语法是上下文无关的,如果我们在某些上下文中寻找 identifier
并且我们接受 var 作为 identifier
,那么在我们正在寻找 identifier
的任何其他上下文中,我们也必须接受 var。
但是有些上下文(引号之间)我们不是寻找identifier
。没关系;上下文无关条件没有被打破。上下文适用于箭头方向。
如果我有类似 var string = "var";
的内容,那么在第一个双引号之后规则会发生变化,并且 var
与文本开头的含义不同。在第二个双引号之后一切恢复正常。怎么不考虑上下文?
(请不要在您的回答中使用这些箭头,而是尝试使用自然语言!)
箭头的方向很重要,所以如果我不能谈论它,将很难解释。所以,抱歉,我要使用箭头。它们真的并不复杂。
表达式A -> ...
表示"an A
is ...
"。它 不是 意思是“...
是一个 A
”。上下文无关意味着如果 A
在某些上下文中可以是“...”,那么它在任何上下文中都可以是“...”。但是箭头总是从类别指向具体;永不倒退。
在您的示例中,identifier
是一个字母后跟一堆字母数字符号:
identifier -> letter (letter OR digit)...
所以 identifier
可以是 var。正如您的示例所示,这并不意味着 var 始终是 identifier
。箭头指向一个方向。
因为语法是上下文无关的,如果我们在某些上下文中寻找 identifier
并且我们接受 var 作为 identifier
,那么在我们正在寻找 identifier
的任何其他上下文中,我们也必须接受 var。
但是有些上下文(引号之间)我们不是寻找identifier
。没关系;上下文无关条件没有被打破。上下文适用于箭头方向。