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

标签 php smarty lex

    function yy_r9_1($yy_subpatterns)
    {

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

以上是PHP中smarty的词法分析器,谁知道yy_r9_1是什么意思?

最佳答案

yy 是 YACC 避免冲突的前缀。在构建 YACC 的日子里,没有 namespace 或类,甚至没有结构。其实YACC最初是用B写的,C的前身。

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

但是,即使我错了并且这些字符串有其他含义,我也怀疑您能否利用这些信息。这将需要深入了解词法分析器和解析器的内部结构,以及最后但并非最不重要的语法规则。如果您理解语法,您也可以更改它并重新生成词法分析器,而不是使用甚至操纵它的子例程。

关于php - 词法分析器的命名约定是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4744164/

相关文章:

php - Symfony 4 控制台命令不读取环境变量

php - 如何在 Laravel 5.1 中观察所有实现接口(interface)的模型?

php - Prestashop $logged 和 $is_logged

ios - iOS 的标准语法解析器是什么?

php - 在程序运行时使用 C 连接到数据库(Redis)一次

php - Smarty 中的动态变量名称

php - 如何按 UNIX 时间戳对 mysql 结果进行分区

xml - CDATA 的正则表达式是什么

c - Lex yacc 移位/减少错误

php - SQL多对多选择查询