【问题标题】:Why does it requires rules in lex?为什么它需要 lex 中的规则?
【发布时间】:2011-01-14 07:48:07
【问题描述】:

就像this file,在我看来只有声明就足够了。

谁能解释为什么词法分析需要规则?

在我看来,它们仅在 .y 文件中是必需的...

根据规则,我说的是这样的块:

rdels {
  if ($this->smarty->auto_literal) {
     $this->token = Smarty_Internal_Templateparser::TP_OTHER;
  } else {
     $this->token = Smarty_Internal_Templateparser::TP_RDEL;
     $this->yypopstate();
  }
}

什么时候去yypopstateyypushstate

【问题讨论】:

    标签: yacc lex


    【解决方案1】:

    您输入状态,此时字符输入的含义可能不明确。

    如果词法分析器遇到"(引号),您可能会进入一个称为“字符串”的状态(yypushstate),其中任何后续字符都具有特殊含义(即+、@987654325 @ 等)被认为是字符串的一部分。当词法分析器遇到另一个 " 时,“字符串”状态结束 (yypopstate)。

    在 flex 中,这些状态称为start conditions

    【讨论】:

    • 如果lex分析也有状态,那跟语法分析有什么区别呢?
    • 词汇状态仅用于区分输入,而不是定义语法。例如,它们不能减少。
    猜你喜欢
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    相关资源
    最近更新 更多