相关疑难解决方法(0)

如何在PetitParser中定义Pascal变量

这是我试图在PetitParser中实现的(简化的)EBNF部分:

variable :: component / identifier
component :: indexed / field
indexed :: variable , $[ , blah , $]
field :: variable , $. , identifier
Run Code Online (Sandbox Code Playgroud)

我所做的是将所有这些产品(除外identifier)添加为我的子类的ivars,PPCompositeParser并定义相应的方法如下:

variable
  ^component / self identifier

component
  ^indexed / field

identifier
  ^(#letter asParser, (#word asParser) star) flatten

indexed
  ^variable , $[ asParser, #digit asParser, $] asParser

field
  ^variable , $. asParser, self identifier

start
  ^variable
Run Code Online (Sandbox Code Playgroud)

最后,我创建了一个新的解析器实例并向其发送了消息parse: 'a.b[0]'.

问题:我得到了堆栈溢出.

smalltalk petitparser

5
推荐指数
2
解决办法
81
查看次数

标签 统计

petitparser ×1

smalltalk ×1