
代號:
頁次:
-
三、定義一個由以下符號所組成的運算式。
二元運算子: *, +, ->, <->
一元運算子:~
變數:X, Y, Z
括號:(, )
運算子的優先順序(precedence)依序為~,{*, +}, {->, <->},
運算都是由左至右(left-associative),括號必須左右對稱且先左後右。
合法的運算式有如:X, Y, ~Y+~X,(Y*X<->Z*X), ~~Y 或
(~(X))->(Z)。而不合法的運算式則如:X~, Z->YZY 或*X)Y+Z(。
請完成以下 BNF grammar,用以產生所有合法的運算式,但不會產生
不合法的運算式。(15 分)
<var> ::= X | Y | Z
<factor> ::= ? | ? | ?
<term> ::= ? | ? | ?
<exp> ::= ? | ? | ?
請畫出 Y*X->Z 的剖析樹(parse tree)。(5分)
四、下列為資料庫中 STAFF 資料表,包含 ID, DEPT, EXAM1, EXAM2,
LEVEL 等5欄位,請依序寫出指定的 SQL 指令。(每小題 5分,共 20 分)
ID DEPT EXAM1 EXAM2 LEVEL
A3452 E_Car 45 72 3
A4152 A_Boat 45 54 2
A2451 E_Car 51 89 4
. . .
寫出「列出所有 DEPT(不可重複)」的 SQL 指令。
寫出「列出 ID, DEPT, LEVEL,但要按照 ID 字母順序排序」的 SQL
指令。
寫出「列出 EXAM1 成績由高至低人員的 ID 及EXAM1 成績,同分時
EXAM2 成績較高者優先列出」的 SQL 指令。
寫出「能依 DEPT 順序,將該 DEPT 所有人員的 DEPT, ID, EXAM1,
EXAM2 資料列出」的 SQL 指令。