0
在學校,我們一直在研究元語言,特別是鐵路圖和EBNF。我收到一個問題,在EBNF中描述了一個虛構的編程語言(winston)。那就是:虛構語言的EBNF語法
Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
LCase = a | b | c | d
UCase = A | B | C | D | E | F | G | H | I | J
Operator = + | - | * |/
Logical = < | > | <= | >= | <>
Constant = [-] <Digit>{<Digit>}
Identifier = <UCase>{<LCase> | <Digit>}
Assignment = Set <Identifier> to <Constant> | <Identifier
{<Operator>(<Constant> | <Identifier>)}
Condition = <Identifier> <Logical> (<Identifier> | <Constant>)
{(and | or) <Identifier> <Logical> (<Identifier> | <Constant>)}
When = (<Assignment> | <Condition> {<Assignment> | <Condition>})
Statement = <Input> | <Output> | <Assignment> | <Condition> | <When> | <Pretest> | <Posttest>
Program = Start <Statement> {! <Statement>} Stop
下面編寫的程序與溫斯頓製作,但不正確執行。使用EBNF描述來識別錯誤。
Start
Input J1
Input J2
When (J1 = J2, Set A3 to 0), (J1 < J2, Set A3 to -1), Set A3 to 1
Output A3
Stop
我迄今爲止的工作:對我來說,這似乎是程序合法。這是一個程序,所以如果必須從「開始」開始並以「停止」結束,它就是這樣做的。看似中間的陳述被允許在那裏。有人能指引我朝着正確的方向嗎?
而且,誰能告訴我這是什麼意思在程序的EBNF描述這意味着什麼:<statement>
我認爲,這意味着像報表時,如果但是我也不太清楚。感謝您的幫助:)
謝謝,你能告訴我什麼是'!!'在EBNF描述中(在'program'中查找) –
'!'in' {! }'看起來像一個語句分隔符。 –
rns