假設我有一個規則:PEGKit不斷嘗試規則
myCoolRule:
Word
| 'myCoolToken' Word otherRule
我公司供應作爲輸入myCoolToken something else now
它試圖解析它貪婪地匹配myCoolToken作爲一個單詞,然後打something
並說唔我預計EOF,如果我安排規則,以便它試圖匹配myCoolToken
首先,對於該輸入,所有的都是很好的並且完美地解析。
我想知道它是否有可能繼續嘗試所有的規則在該聲明中看看是否有作品。所以它匹配Word失敗,回來,然後嘗試下一個規則。
下面是實際的語法規則導致的問題:
columnName = Word;
typeName = Word;
//accepts CAST and cast
cast = { MATCHES_IGNORE_CASE(LS(1), @"CAST") }? Word ;
checkConstraint = 'CHECK' '('! expr ')'!;
expr = requiredExp optionalExp*;
requiredExp = (columnName
| cast '(' expr as typeName ')'
... more but not important
optionalExp ...not important
CHECK(CAST(abcd as defy))
導致它失敗,即使它有效
是否有一個結構或以其他方式使其驗證所有輸入放棄之前的規則。