2

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

octalNumeral, (integerTypeSuffix optional)

但我想得到一个数字作为令牌,所以我使用了:

octalNumeral javaToken, (integerTypeSuffix optional)

问题是它开始解析字符串,例如:0777 L. 这可以很容易解决,还是我应该处理它是子类?

4

1 回答 1

3

似乎同时#javaToken做两件事:修剪空白和创建标记。将此行为拆分为两个单独的解析器,您可以单独使用它们。#javaToken为了保持旧代码正常工作,您可以从新的基本解析器重新定义为:

PPParser>>#javaToken
    ^ self javaPlainToken javaWhitespace

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

(octalNumber javaPlainToken , integerTypeSuffix optional) javaWhitespace
于 2013-03-20T15:12:35.693 回答