词法分析器的命名约定是什么?

时间:2011-01-20 06:37:26

标签: php smarty lex

    function yy_r9_1($yy_subpatterns)
    {

  $this->token = Smarty_Internal_Templateparser::TP_PHP_CODE;  
  $this->yypopstate();
    }

上面是PHP中的smarty词法,有谁知道yy_r9_1的意思?

1 个答案:

答案 0 :(得分:1)

yy是YACC避免冲突的前缀。回到构建YACC的时代,没有名称空间或类,甚至没有结构。实际上,YACC最初是用C的前身B写的。

r9可能代表规则9,1可能是需要处理多个函数的规则的增量前缀。

然而,即使我错了,这些字符串意味着别的东西,我怀疑你可以利用这些信息。这需要深入理解词法分析器和解析器的内部结构以及最后但并非最不重要的语法规则。如果你理解了语法,你也可以改变它并重新生成词法分析器而不是使用甚至操纵它的子程序。