[英]Recursion in EBNF
問題是:
一種。 編寫一個名為mp
的直接遞歸 EBNF 規則,它描述所有具有匹配括號的符號: ()
、 ()()()
、 ()(()())
和((())())(()(()))()
。 它不應該承認(
, ())(
或(()()
是合法的。
灣寫一個表格證明及其派生樹,說明()(()())
被認為是合法的。
到目前為止,我已經想到了一個合理的解決方案。 我不確定它是正確的還是我遺漏了什么。
<mp> ::= "" | ( <mp> "(" <mp> ")" )
有什么建議?
但是,在它關閉之前,這是我所擁有的:
mp := ( mp ) mp
mp := ''
你的第二個例子, n >= 0
和m >= 0
不在 BNF 中。 但是,您的第一個應該是可以接受的。
這是我的()(()())
派生樹:
mp
( mp ) mp
( '' ) mp
()( mp ) mp
()( mp ) ''
()(( mp ) mp )
()(( '' ) mp )
()(()( mp ) mp )
()(()( mp ) '' )
()(()( '' ))
()(()())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.