簡體   English   中英

上下文無關語法設計 - 為什么不允許這樣做?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM