2013-04-27 32 views
1

的Wikipedia文章PEG解析器定義了以下組合子:真正需要PEG解析器:是「必選」還是「一個或多個」規則?

2.Given any existing parsing expressions e, e1, and e2, 
a new parsing expression can be constructed using the following operators: 

Sequence: e1 e2 
Ordered choice: e1/e2 
Zero-or-more: e* 
One-or-more: e+ 
Optional: e? 
And-predicate: &e 
Not-predicate: !e 

是否所有這些組合子?這在我看來,可選和一個或更多的可以很容易地爲

e+ = e* & e 
e? = e/"" 

難道我說錯此實現,還是有一些基本的東西,需要在這兩種形式是單獨的原子?我正在構建自己的PEG解析器,並且跳過這兩個(或者以其他組合器的形式定義它們)會很方便,但我想確保我不會錯過任何重要的東西。

+0

對我來說很有意義。我認爲他們真的只是爲了方便,因爲他們很常見。 – 2013-04-27 02:01:41

回答

1

你是對的,只是e+被寫爲沒有&的序列。

e+ := e e* 
+0

'e +'也可以*寫成'&e e *'(注意:與問題中的順序相反)。 – danfuzz 2013-07-24 04:45:47

0

[關於擴大你和280Z28說...]

  • +可以在序列方面與*和可能&(儘管後者擴張不常用)來定義:

    x+ == x x* 
    x+ == &x x* 
    
  • ?可以在所選擇的術語來定義:

    x? == x/(empty) 
    
  • &可以在!來定義:

    &x = !!x 
    
相關問題