134 - Loglan-A Logical Language

Loglan 是一種綜合型可發音的語言,設計它是用來驗證語言學上的一些原則性問題,比如薩皮爾—沃爾夫假說。它的句法精確明了,在文化上趨於中立,它的哲學是能省則省。該語言的語法集已經被過份的簡化——只有 200 條語法規則。

Loglan 的語句由一系列的單詞和名稱組成,中間由空格隔開,並由一個點號(.)表示結束。

Loglan 的單詞均以元音結束;名稱來自於該語言之外,由輔音結束。 Loglan 的單詞分為兩類——小單詞和謂詞。小單詞指定了句子的結構;謂詞的形式為“CCVCV”或“CVCCV”,其中C代表一個輔音,V代表一個元音。 (見下面的例子)

我們考慮使用 Loglan 語言的一個子集,具有以下語法定義:

A → a | e | i | o | u
MOD → ga | ge | gi | go | gu
BA → ba | be | bi | bo | bu
DA → da | de | di | do | du
LA → la | le | li | lo | lu
NAM → {all names}
PREDA → {all predicates}
<sentence> → <statement> | <predclaim>
<predclaim> → <predname> BA <preds> | DA <preds>
<preds> → <predstring> | <preds> A <predstring>
<predname> → LA <predstring> | NAM
<predstring> → PREDA | <predstring> PREDA
<statement> → <predname> <verbpred> <predname> | <predname> <verbpred>
<verbpred> → MOD <predstring>

(譯註:上面文法中NAM為所有名稱的符號,PREDA為所有謂詞的符號)

寫一個程序,讀入一組字符串並確定它們是不是正確的Loglan語句。

Input and Output

每個Loglan語句均從新的一行開始,並以句點(.)結束。一條語句可能佔用多行,且單詞之間可能會多於一個空​​格。所有的輸入由一個獨占一行的#號表示結束。你可以認為所有單詞的格式都是正確的。

對於每一個輸入的語句,應輸出”Good”或”Bad!”。

Sample input

la mutce bunbo mrenu bi ditca.
la fumna bi le mrenu.
djan ga vedma le negro ketpi.
#

Sample output

Good
Bad!
Good