现在的想法是这样的:在octalIntegerLiteral
的Java中,我有一个规则
octalNumeral, (integerTypeSuffix optional)
但我希望得到一个数字作为标记,所以我使用了:
octalNumeral javaToken, (integerTypeSuffix optional)
问题是它开始解析像0777 L
这样的字符串。这可以轻松解决,或者我应该只处理它是子类?
答案 0 :(得分:3)
似乎#javaToken
一次完成两件事:修剪空格并创建标记。将此行为拆分为两个单独的解析器,您可以单独使用它们。为了使旧代码保持有效,您可以从新的基本解析器中重新定义#javaToken
:
PPParser>>#javaToken
^ self javaPlainToken javaWhitespace
然后您的号码解析器将如下所示:
(octalNumber javaPlainToken , integerTypeSuffix optional) javaWhitespace