[英]Context free grammar design - Why is this not allowed?
我仍在學習上下文無關語法。 我懷疑的一種特殊問題是為某些特定模式提出語法。
例如:
“至少三個零。”
為什么不提出一個類似於: S -> 000 的語法? 什么規則禁止這種語法?
它可能限制您的語法(禁止某些結構)的是您使用的語法形式。 在喬姆斯基范式(CNF) 中,規則是以下規則之一:
A → BC
A → a
S → ε
在Greibach 范式(GNF) 中,規則是:
A → aBCD...
有 和Backus–Naur 形式,在那里你有更豐富的語法。 然后是擴展 Backus-Naur 形式(EBNF) 和最好的擴展 Backus-Naur 形式(ABNF)。
CNF 中至少有 3 個零:
S → AB
A → ZZ
B → ZB
B → 0
Z → 0
GNF 中至少有 3 個零:
S → 0A
A → 0B
B → 0B
B → 0
BNF 中至少有 3 個零:
<S> ::= "000" <A>
<A> ::= "0" <A> | ""
EBNF 中至少有 3 個零:
S = "000", { "0" }
ABNF 中至少有 3 個零:
S = 3*"0"
某些識別(解析)算法要求語法采用某種形式。 出於這個原因,您必須轉換語法,如果它尚未包含在其中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.