1
3
通过编写一个使用lexer的程序,并实现最终需要的功能,您应该能够编译一个全面的列表。 |
2
3
根据我的经验,你需要:
编辑 -哦还有:
此外,对于某些语言,您可能需要2个或多个lookahead标记。那么你想要一个简单的变种
再次编辑 -我也不会告诉你不要写,因为它们基本上是最有趣的东西。在Javascript中,你不能太疯狂,但是在Erlang这样的语言中,你可以让lexer像一个“令牌泵”,让它生成一个令牌流,发送给一个单独的解析器进程。 |
3
0
第二次思考你的问题:“Lexer需要提供什么功能” 它“需要”什么当然取决于 你 需要,不是什么 它 需要。如果你能解释自己的需要,我们可能会给你更好的帮助。但不管怎样,这里有一个镜头: 最小值由一个函数组成,该函数将字符串作为参数,并返回一个字符串列表(或者,如果您希望得到花哨和延迟,则返回字符串的迭代器)。对于许多用例来说,这已经足够了,因此这就是lexer所需要的。 更具描述性的一个可以返回比字符串更复杂的对象,包含关于每个令牌的进一步信息(例如,它在原始字符串中的位置,这样您就能够告诉可怜的程序员代码中他应该查看的语法错误)。除了行数之外,您可能还可以在其中添加大量的元数据,但这又一次取决于您的需要。 |
Softly · 单选按钮未按预期取值 1 年前 |
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
assembler · Nextjs没有处理发布请求 1 年前 |
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
Toniq · javascript为php保存多维数组 1 年前 |