問題是:EBNF遞歸
a。編寫名爲mp
的直接遞歸EBNF規則,該規則描述了所有符合圓括號的符號:()
,()()()
,()(()())
和((())())(()(()))()
。它不應將(
,())(
或(()()
視爲合法。 b。寫一個表格證明及其派生樹,顯示()(()())
被認爲是合法的。
到目前爲止,我已經想到了一個合理的解決方案。我不確定它是否正確或者我錯過了什麼。
<mp> ::= "" | (<mp> "(" <mp> ")")
有什麼建議嗎?
問題是:EBNF遞歸
a。編寫名爲mp
的直接遞歸EBNF規則,該規則描述了所有符合圓括號的符號:()
,()()()
,()(()())
和((())())(()(()))()
。它不應將(
,())(
或(()()
視爲合法。 b。寫一個表格證明及其派生樹,顯示()(()())
被認爲是合法的。
到目前爲止,我已經想到了一個合理的解決方案。我不確定它是否正確或者我錯過了什麼。
<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) '')
()(()(''))
()(()())
本不屬於這裏,它屬於cs.stackexchange – pandorym
我有兩個演習EBNF。應該將它們發佈到計算機科學或堆棧溢出可以嗎? – Vlad
我很驚訝這個問題沒有結束;過去其他國際金融機構的問題已經關閉。除非你在做編碼工作,我認爲這些類型的問題屬於cs.stackexchange – pandorym