2012-12-20 41 views
4

我想用編程語言解析標識符,通過使用PetitParser。如何使用PetitParser解析以關鍵字開頭的標識符?

其中一個要求是標識符的名稱不是關鍵字(如null),因此null不會是有效的標識符。

我能想到這種情況下,最小的解析器:

identifier := ('null' asParser not, #word asParser plus) 

然而,如果輸入與失敗關鍵字開頭:

identifier end parse: 'nullable' 

你有什麼建議,以解決這個問題?謝謝!

回答

5
identifier := ('null' asParser, #word asParser plus)/
    ('null' asParser not, #word asParser plus). 

identifier end parse: 'nullable'. "=> #('null' #($a $b $l $e))" 
identifier end parse: 'null'. "=> 'at 0'" 
identifier end parse: 'foo' "=> #(nil #($f $o $o))" 

at 0是PetitParser的默認「分析失敗」的錯誤,表示解析器會接受「可空」,正常的話,而不是「空」。

+0

太棒了!謝謝! –