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