簡體   English   中英

EBNF 中的遞歸

[英]Recursion in EBNF

問題是:

一種。 編寫一個名為mp的直接遞歸 EBNF 規則,它描述所有具有匹配括號的符號: ()()()()()(()())((())())(()(()))() 它不應該承認( , ())((()()是合法的。
寫一個表格證明及其派生樹,說明()(()())被認為是合法的。

到目前為止,我已經想到了一個合理的解決方案。 我不確定它是正確的還是我遺漏了什么。

<mp> ::= "" | ( <mp> "(" <mp> ")" ) 

有什么建議?

但是,在它關閉之前,這是我所擁有的:

mp := ( mp ) mp
mp := ''

你的第二個例子, n >= 0m >= 0不在 BNF 中。 但是,您的第一個應該是可以接受的。

這是我的()(()())派生樹:

mp
( mp ) mp
( '' ) mp
()( mp ) mp
()( mp ) ''
()(( mp ) mp )
()(( '' ) mp )
()(()( mp ) mp )
()(()( mp ) '' )
()(()( '' ))
()(()()) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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