代码之家  ›  专栏  ›  技术社区  ›  inf3rno

上下文无关和上下文敏感的语法是什么意思?

  •  0
  • inf3rno  · 技术社区  · 6 年前

    如果我有 var string = "var"; ,然后在第一个双引号之后,规则更改,并且 var 与课文开头的意思不同。在第二个双引号之后,事情就恢复正常了。这怎么不被认为是上下文?

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

    0 回复  |  直到 6 年前
        1
  •  1
  •   rici    6 年前

    箭头的方向很重要,所以如果我说不上来,就很难解释了。所以,对不起,我要用箭头。它们其实并不复杂。

    表达 A -> ... 意思是“一个 A ... “。是的 “卑鄙” 是一个 一个 “。上下文无关意味着如果 一个 在某些上下文中可以是“…”,在任何上下文中都可以是“…”。但是箭头总是从类别指向特定的;从不向后。

    在你的例子中, identifier 是一个字母后跟一堆字母数字符号:

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

    所以 标识符 可以是 风险价值 是的。那并不意味着 风险价值 总是一个 标识符 ,如您的示例所示。箭头指向一个方向。

    因为语法是上下文无关的,如果我们在寻找 标识符 在某些情况下,我们接受 风险价值 作为 标识符 ,然后在我们正在寻找的任何其他上下文中 标识符 ,我们也必须接受 风险价值 是的。

    但我们现在所处的环境 寻找 标识符 .没关系,上下文无关的条件还没有被打破。上下文按箭头方向应用。

    推荐文章