gpt4 book ai didi

带有自定义词法分析器的 Raku 语法

转载 作者:行者123 更新时间:2023-12-03 16:56:46 29 4
gpt4 key购买 nike

是否有可能为 raku 语法定义自定义词法分析器,即
将字符串转换为 int id + value 的流?
我在玩语法结构。

规则似乎
直观,因为它们可能在递归下降中转换为函数
解析器。但是, token 和正则表达式我希望能够使用显式 token ID 和接口(interface)将它们映射到名称以便我可以编写自己的词法分析器?

最佳答案

Raku 语法是 scannerless parsing 的一种形式,其中词法结构和解析结构一起指定。

虽然规则确实构成了递归下降解析器,但这只是故事的一半。当protoregexes或交替使用(| 种类,而不是 || 种类),收集这些声明性前缀并形成 NFA。然后使用它来确定应该探索哪些交替分支(如果有的话);如果有多个,则按照最长的优先排序,最长的文字和继承深度用作决胜局。

形成声明性前缀涉及向下查看子规则调用以查找词法元素 - 然后有效地查找标记。因此,我们可以说 Raku 语法为我们派生了分词器(实际上是许多分词器)。这些通常在编译时生成,但是,对于通过混合到语法中完成的自定义运算符之类的事情,也必须在运行时生成进一步的 NFA 以解释新的 token 。

目前没有办法 Hook 语法编译并以不同的方式做事(至少,不是不玩编译器内部的)。然而,在下一个主要语言版本中可能会有 Raku 程序的 AST 可供语言用户使用,因此可以编写影响不同程序结构编译的模块。

关于带有自定义词法分析器的 Raku 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61585943/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com