首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Antlr4-Java切换到ParseKit -Objective:ParseKit中的通道?

从Antlr4-Java切换到ParseKit -Objective:ParseKit中的通道?
EN

Stack Overflow用户
提问于 2014-02-21 22:06:58
回答 1查看 419关注 0票数 1

问题:

不知道如何翻译Antlr4 ".g4“语法文件的内容以匹配ParseKit语法。

特指:

如何将-> Channel(HIDDEN);从Antlr4语法翻译成ParseKit语法。

上下文:

我在Objective/Xcode中为.Framework创建一个iOS。我需要生成一个Parser,它模仿Antlr4生成的Java的基本功能。如何设计解析器的功能并不是什么问题;我想了解更多关于ParseKit的语法语法的知识。

语法代码:

Antlr3

WHITESPACE : [ \t\r\n]+ {$channel=HIDDEN;}

Antlr4

WHITESPACE : [ \t\r\n]+ -> channel(HIDDEN);

ParseKit

**`**_****_**`****`**_**`**__**`**_****_**`****`**_**`**__;如何忽视whitespace = /[\s\t\r\n]+/

问题:

-支持ParseKit通道吗?

- ParseKit用来发送到隐藏频道的语法是什么?

-或者说,在本质上有类似于在ParseKit中工作的通道吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-22 15:50:51

这里是ParseKit的创造者。ParseKit没有Channels特性,也没有ANTLR那样的->树重写功能。(一般来说,ParseKit的功能不如ANTLR那样全面)。

但是,您可能可以使用ParseKit的丢弃特性实现您想要的效果。

在设计您的ParseKit语法时,您的语言中经常有纯语法的标记。这些标记对于计算结果或构建抽象语法树(对于进一步处理)都不重要。您通常希望使用ParseKit !指令自动丢弃这些令牌。

例如,假设您的ParseKit语法中有一个名为primaryExpr的规则,如:

代码语言:javascript
复制
primaryExpr = atom
            | '(' expr ')'!
            ;

请注意关闭括号!后的')'。这是丢弃指令,它指示ParseKit令牌程序从报告给ParseKit汇编程序(委托)回调的令牌流中丢弃)令牌。

因此,在-parser:didMatchPrimaryExpr:回调中,assembly参数的堆栈将不包含)令牌。)令牌已经被丢弃。在这种情况下,丢弃是可取的,因为)是纯语法,对于处理相关的括号式表达式并不重要。

因此,要丢弃语法中不重要的标记,请在其后面立即放置一个!指令。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21946167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档