2013-03-20 66 views
2

现在的想法是这样的:在Java中的octalIntegerLiteral我有一个规则禁止标记分析多余的空格

octalNumeral, (integerTypeSuffix optional) 

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

octalNumeral javaToken, (integerTypeSuffix optional) 

问题是,它开始解析字符串,如:0777 L。这可以很容易地解决,或者我应该只是处理它是子类?

回答

3

似乎#javaToken一次做两件事:修剪空白和创建令牌。将此行为分解为两个单独的解析器,您可以单独使用它们。为了保持旧代码工作,你那么可以从新的基本解析器为重新定义#javaToken

PPParser>>#javaToken 
    ^self javaPlainToken javaWhitespace 

然后你的电话号码分析器应该是这样的:

(octalNumber javaPlainToken , integerTypeSuffix optional) javaWhitespace