如何使用Parle php解析/词库评估包含堆栈/ parens的自定义语言字符串

时间:2018-09-12 14:41:14

标签: php parsing lexer

我想评估一个看起来像这样的自定义语言字符串:

((($ v> 1)&&($ v <= 1.2.5))|| ($ v <3) 该字符串等于真或假。

“ $ v”变量将动态替换为比较...而对于实际比较,我将使用Semver的Comparator类进行实际比较。 但是然后它需要存储来自prev操作(来自括号操作)的值,我猜想像'($ v> 1)'这样的堆栈会被评估,然后是'($ v <= 1.2.5)',然后两者从一起进行“ &&”编辑操作。然后对“($ v <3)”进行求值,然后将其结果与以前的括号操作进行比较。

我看到了一个Parle :: Stack,但是没有看到有关如何执行此类操作的任何示例。 http://php.net/manual/en/parle.examples.parser.php上只有一些示例可以提供帮助。

老实说,自大学以来,我没有做过flex / bison的词法分析器/解析器,但希望它还不错,有人可以帮助指导我使用此库。

注意:我发现的另一个词法分析器/解析器是某人自己的库,但不确定如何使用: https://github.com/nikic/Phlexy https://github.com/nikic/PHP-Parser

0 个答案:

没有答案