禁止令牌解析额外的空格

时间:2013-03-20 13:32:50

标签: pharo petitparser

现在的想法是这样的:在octalIntegerLiteral的Java中,我有一个规则

octalNumeral, (integerTypeSuffix optional)

但我希望得到一个数字作为标记,所以我使用了:

octalNumeral javaToken, (integerTypeSuffix optional)

问题是它开始解析像0777 L这样的字符串。这可以轻松解决,或者我应该只处理它是子类?

1 个答案:

答案 0 :(得分:3)

似乎#javaToken一次完成两件事:修剪空格并创建标记。将此行为拆分为两个单独的解析器,您可以单独使用它们。为了使旧代码保持有效,您可以从新的基本解析器中重新定义#javaToken

PPParser>>#javaToken
    ^ self javaPlainToken javaWhitespace

然后您的号码解析器将如下所示:

(octalNumber javaPlainToken , integerTypeSuffix optional) javaWhitespace