3
我想,只有0和32767之间的数字识别解析规则,我想是这样的:PetitParser解析规则如何发出错误信号?
integerConstant
^(#digit asParser min: 1 max: 5) flatten
==> [ :string | | value |
value := string asNumber.
(value between: 0 and: 32767)
ifTrue: [ value ]
ifFalse: [ **???** ]]
但我不知道该怎么写的???。我想回到PPFailure,但这需要知道流的位置。
好吧,疯狂的解决方案,但工作:-)。你有没有特意写出“self positionInput”,还是你的意思是“positionInput”作为一个实例变量? – 2013-03-13 16:16:20
您不需要循环中未使用的规则的实例变量。如果解析器'positionInInput'足够常见,它可以移到某个地方的工厂方法中,甚至在它自己的PPParser子类中。 – 2013-03-16 23:21:08