編譯原理select
⑴ 求 編譯原理 語法分析程序
可以參考我的空間,我在三年前寫過類似代碼。
http://hi..com/逄韶華/ihome/myblog
⑵ select (9+6*5+3%2)/5-3 這個是怎麼算的啊
這個是資料庫的計算,就是求(9+6*5+3%2)/5-3的值,結果為5
⑶ 關於編譯原理first follow 和select
首先要明白這三個集的作用和用途,知道了他們是用來做什麼的之後,理解起來就簡單一些
First(A)集的作用是標示在替換非終結符A的時候,替換後的文法的首字母集合,語法分析程序根據這個來判斷給定的語言是否是合法的,是符合規則的。
Follow(A)的作用是標示那些可以出現在A之後的字元,語法分析程序根據這個,在A可以被替換為e(空)的時候來進行判斷,看當前的文法是否是合法的。
這里簡單說明下,比如A->b,A->e(空) 當給定的語言是 bXXXXX的時候,根據第一句文法就可以判定句子合法,但是如果給的語言是cXXXXX的時候,因為A->可以替換為空,這時候就需要一句A的follow集來進行判斷,若A的follow集裡面含有c 則語言是合法的
Select集的作用是將first集和follow集進行合並,如果兩個文法的左端都是A,若他們的select集交集為空,表明他們是兩個無關的,不會產生不確定性的文法,反之,則表明文法不是LL(1)文法
計算的公式很繁雜,理解了意思之後,看就能看出來。。。。
⑷ 編譯原理中follow 集 select 集
不能,
A->aBc
將first c 加入follow(B)中,若c為空,把follow(A)加入follow(B)中
⑸ 編譯原理,把數組元素賦值語句翻譯為三地址代碼的問題,題目和答案如圖,第五題,不過看不太懂,84是從
「84」是C,定義在課本180頁式(7.7)。lown 表示數組第n維的下標最小值,比如MATLAB中數組A,A(1)是其數組的第一個元素,則其low1 = 1. C語言中數組A,A[0]是其第一個元素,則low1 = 0.
⑹ select 語句
select studentname as '學生姓名', max(course) as '分數' from students,courses where 編譯原理分數>90 or 資料庫分數>90 or 體系結構>90 order by course desc 用top 1 很好解決的,如下:select top 1 studentname as '學生姓名', max(course) as '最高分數' from students,courses where 編譯原理分數>90 or 資料庫分數>90 or 體系結構>90
⑺ 在線等 如圖編譯原理
(1)
存在左遞歸:E→EA
進行消除得:
E→E'
E'→AE' | ε
消除後的文法G[E]:
E→iA | E'
E'→AE' | ε
A→i | d | (E)
(2)
FIRST集:
FIRST(E)={i,d,(,ε}
FIRST(E')={i,d,(,ε}
FIRST(A)={i,d,(}
FOLLOW集:
FOLLOW(E)={#,)}
FOLLOW(E')={#,)}
FOLLOW(A)={#,i,d,(,),ε}
(3)SELECT集:
SELECT(E→iA)={i}
SELECT(E→E')={i,d,(,),#}
SELECT(E'→AE')={i,d,(}
SELECT(ε)={#,)}
SELECT(A→i)={i}
SELECT(A→d)={d}
SELECT(A→(E))={(}
由於SELECT(E→iA)∩SELECT(E→E')={i}∩{i,d,(,),#}={i}≠{Φ},即具有相同左部的產生式的SELECT集合的交集不為空可知,該文法不是LL(1)的。
希望你不是在考試的時候發的。
⑻ 編譯原理中,經過消除左遞歸的文法就一定是LL1文法么
不一定,還有回溯等其他的情況,判斷文法是不是LL1需要計算每個產生式的select集,根據計算結果才能確定
⑼ 編譯原理 設文法G[S] 求答案!
·消除左遞歸 S→aAS'|∧aAS'
S'→VaAS'|ε對A的產生式提取左因子 A→∧aA' A'→A|ε
· 非終結符合 First Follow
S a∧ #
S』 V ε #
A ∧ #
A『 ∧ #
Select(S→aAS')=a
Select(S→∧aAS')=∧
Select(S'→VaAS')=V
Select(S'→ε)=#
Select(A→∧aA')=∧
Select(A'→A)=∧
Select(A'→ε)=#
符合LL(1)文法
a ∧ V #
S S→aAS' S→∧aAS'
S' S'→VaAS' S'→ε
A A→∧aA'
A' A'→A A'→ε
⑽ 資料庫如何實現這樣的查詢功能
INSERT INTO T_Student
SELECT '01', '張三', '男', 20, '計算機系' UNION ALL
SELECT '02', '李四', '女', 19, '計算機系' UNION ALL
SELECT '03', '王五', '男', 18, '計算機系' UNION ALL
SELECT '04', '趙六', '女', 17, '計算機系'
INSERT INTO T_Course
SELECT 'DB', '資料庫', 5, 1, 40 UNION ALL
SELECT 'C', 'C語言', 5, 1, 40 UNION ALL
SELECT 'OS', '操作系統', 5, 1, 40 UNION ALL
SELECT 'CO', '編譯原理', 5, 1, 40
INSERT INTO T_Sc
SELECT '01', 'DB', 60 UNION ALL
SELECT '02', 'DB', 70 UNION ALL
SELECT '03', 'DB', 80 UNION ALL
SELECT '04', 'DB', 90 UNION ALL
SELECT '01', 'C', 60 UNION ALL
SELECT '02', 'C', 70 UNION ALL
SELECT '03', 'C', 80 UNION ALL
SELECT '01', 'OS', 60 UNION ALL
SELECT '02', 'OS', 70 UNION ALL
SELECT '01', 'CO', 60
GO
SELECT
T_Course.Fcno,
T_Course.Fcname,
COUNT( DISTINCT T_Student.Fson ) AS 學習人數,
(SELECT Fsname FROM T_Student ts JOIN T_Sc tsc ON (ts.Fson = tsc.Fsno)
WHERE tsc.Fcno = T_Course.Fcno AND tsc.Fgrade = MAX(T_Sc.Fgrade) ) AS 最高成績的學生姓名
FROM
T_Sc
JOIN T_Student
ON (T_Sc.Fsno = T_Student.Fson)
JOIN T_Course
ON (T_Sc.Fcno = T_Course.Fcno)
GROUP BY
T_Course.Fcno,
T_Course.Fcname;
Fcno Fcname 學習人數 最高成績的學生姓名
---------- -------------------- ----------- ----------
C C語言 3 王五
CO 編譯原理 1 張三
DB 資料庫 4 趙六
OS 操作系統 2 李四
(4 行受影響)