[英]Parse rules CF-grammar using Regular Expressions (how using templates)
我有CF語法。 它的規則如下:
S-> a | AS
A-> AB | a | b
B-> b
我想使用正則表達式解析這些規則。
我的正則表達式:
\\ b([AZ])->(?:([A-Za-z] +)\\ |?)+
對於:“ A-> AB | a | b”結果:
0:A-> AB | a | b
1:A
2:b
但我想這樣:
0:A-> AB | a | b
1:A
2:AB
3:
4:b
正則表達式的功能不足以完成任務,但是正則表達式在EBFN中用於增強語法的表達能力。 您可以考慮使用自上而下的解析器(通過遞歸調用進行成形)來解析您的輸入。 在所有允許相互遞歸調用的語言中,這很容易實現。 它要求語法有一些限制(如果您有興趣,請參見Wikipedia)。 乍一看,您的語法應為LL(1),即需要1個令牌超前。
您可以使用->|\\|
拆分所有規則 獲得所需的列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.