我有一种情况,我的语言允许引号字符串,但有时我想解释引号字符串的内容作为语言结构。可以把它想象成eval函数。
所以支持引号字符串,我需要一个词法分析器规则,它覆盖了我的尝试有一个语法规则评估的东西在引号如果前缀'eval'。在语法上有什么办法处理这个吗?
在我看来,您不应该尝试直接通过词法分析器处理这种情况。
我想我会把字符串留在词法分析器中,并在解析器的eval规则中添加一些代码,该规则在字符串内容上调用子解析器。
如果你想实现一个eval函数,你实际上是在寻找一个运行时解释器。
唯一需要"eval"函数的时候是当您想要构建要在运行时编译的内容。如果在编译时有可用的内容,则可以在不使用字符串的情况下对其进行解析…
所以…将其保持为字符串,然后在运行时使用相同的解析器解析/编译其内容。