从AntlR4Java切换到ParseKit-Objective-C:ParseKit中的通道?
问题:从AntlR4Java切换到ParseKit-Objective-C:ParseKit中的通道?,java,objective-c,grammar,antlr4,parsekit,Java,Objective C,Grammar,Antlr4,Parsekit,问题: 不知道如何翻译Antlr4“.g4”语法文件的内容以匹配的语法 具体地说: 如何翻译->频道(隐藏)从Antlr4语法到ParseKit语法 上下文: 我正在用Objective-C/Xcode为iOS创建一个.Framework。我需要生成一个解析器,模仿Java中Antlr4生成的解析器的基本功能。设计解析器功能的方法不是问题;我有兴趣更多地了解这个世界 语法代码: : 空白:[\t\r\n]+{$channel=HIDDEN;} : 空白:[\t\r\n]+->通道(隐藏) : w
不知道如何翻译Antlr4“.g4”语法文件的内容以匹配的语法
具体地说:
如何翻译
->频道(隐藏)代码>从Antlr4语法到ParseKit语法
上下文:
我正在用Objective-C/Xcode为iOS创建一个.Framework。我需要生成一个解析器,模仿Java中Antlr4生成的解析器的基本功能。设计解析器功能的方法不是问题;我有兴趣更多地了解这个世界
语法代码:
:
空白:[\t\r\n]+{$channel=HIDDEN;}
:
空白:[\t\r\n]+->通道(隐藏)代码>
:
whitespace=/[\s\t\r\n]+/\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu代码>如何忽略
问题:
-是否支持频道?
-发送到隐藏频道的语法是什么?
-或者,在ParseKit中是否有与频道性质类似的功能?此处的创建者。ParseKit没有通道
功能,也没有ANTLR那样的->
树重写功能。(一般来说,ParseKit的功能不如ANTLR充分)
但是,您可能可以使用ParseKit的放弃功能实现所需的效果
在设计ParseKit语法时,您的语言中通常有纯语法的标记。这些标记对于计算结果或构建抽象语法树(用于进一步处理)都不重要。您通常希望使用ParseKit自动丢弃这些令牌代码>指令
例如,假设您在ParseKit语法中有一个名为primaryExpr
的规则,如:
primaryExpr = atom
| '(' expr ')'!
;
注意代码>在右括号后)'
。这是discard指令,它指示ParseKit令牌生成器从报告给ParseKit汇编程序(委托)回调的令牌流中丢弃)
令牌
因此,在-parser:didMatchPrimaryExpr:
回调中,程序集
参数的堆栈将不包含)
标记。)
令牌将已被丢弃。在这种情况下,丢弃是可取的,因为)
是纯语法,对于处理相关的括号表达式并不重要
因此,要放弃语法中不重要的标记,请放置代码>指令紧跟其后。Todd;谢谢你的书面回复!放置在ParseKit的ParseGenApp中的以下代码是否会告诉生成的解析器放弃显示的字符集?:whitespace=/[\t\r\n]+/代码>语法规则“空白”不用于定义任何其他规则,仅此一项。请向上投票和/或接受此答案,并将新问题作为新的单独问题提问。