1樓:匿名使用者
1)優先關係矩陣
2)句型( a+s+s) 中的
短語:a+s, a+s+s, ( a+s+s)直接短語:a+s
控制代碼:a+s
lpp:a+s
一個編譯原理的問題
2樓:
first(α) 是符號串α的開始符號集合。
也就是說,用推導的方法對α進行推導,一次次地使用產生式,用產生式右部的符號串替換一個非終結符,所有那些可能出現在第一個符號位置的終結符,就構成了開始符號集。
比如,在c語言中,對於符號串「語句」來說,識別符號(賦值語句)、if(條件語句)、printf(輸出函式)這些單詞(終結符)都是它開始符號集合中的元素,而+(加號)、}(右花括號)不可能出現在「語句」的開頭,所以不是它的開始符號集合中的元素。
follow(a)是非終結符a的後跟符號集合。
它是指在所有可能的句型中,一切可能出現在非終結符a後面的一個終結符。
這裡要特別注意是在「句型」中。
你可以自己舉例,比如分析一下c語言中「表示式」後面可能跟哪些單詞,它們就是非終結符「表示式」後跟符號集合中的元素。
你說的這兩個集合的交集問題不存在。
因為它們針對的是不同型別的物件(一個是符號串,另一個是某個非終結符)。
實際上,在選擇集合問題中,考慮的不是它們的交集,而是一個產生式右部符號串的first集跟這個產生式左端非終結符的follow集的並集。
考慮交集的,發生在相同左部的不同產生式的選擇集合之間。
一個編譯原理的題?
3樓:匿名使用者
舉些例子就知道了(反例):
a、aaab
c、aabab
d、aaa
選b。既然有偶數個a,只要有a*的,基本不對,因為任意構造一個合法的串,你總能再加一個a而變成不合法的。
包含偶數個a的串主要還要考慮到中間穿插有b的情況,這個正規式構造比較複雜,得多想一想,選擇題還是反例吧:-)
一個編譯原理問題
4樓:匿名使用者
首先寫出指定句型的規範推導:
s→(l)→(l,s)→(l,(l))→(l,(s))→(l,(a))→(s,(a))
然後畫出分析樹如下圖
根據分析樹的葉子結點可以找出該句型的所有短語:
a s (a) s,(a) (s,(a))直接短語,就是經過一次非終結符替換得到的短語:
a s 沒了
控制代碼就是最左直接短語,要進行規約的部分,根據分析樹我們找到最左直接短語為:s
一道編譯原理題
5樓:
肯定的,你的a是多重定義的,原因如下:
原始檔在編譯時是要先預處理的,file1.c預處理的結果為#line 1 "對應路徑/file1.c"
#line 1 "對應路徑/head.h"
short int a = 10;
#line 3 "對應路徑/file1.c"
main()
而file2.c的預處理結果為
#line 1 "對應路徑/file2.c"
#line 1 "對應路徑/head.h「short int a = 10;
它倆編譯後兩者的資料區都有一個型別為short int的變數a,當然肯定是報這個錯誤啦
編譯原理的題,一個編譯原理的題
舉些例子就知道了 反例 a aaab c aabab d aaa 選b。既然有偶數個a,只要有a 的,基本不對,因為任意構造一個合法的串,你總能再加一個a而變成不合法的。包含偶數個a的串主要還要考慮到中間穿插有b的情況,這個正規式構造比較複雜,得多想一想,選擇題還是反例吧 一個編譯原理題。1 優先關...
為什麼要學習編譯原理 轉),學習編譯原理和作業系統對程式設計能力有什麼作用?
編譯原理大約能讓你多個看問題的角度,作業系統大約能讓你長長見識。不過我對中國這方面的課程質量不抱任何希望。如果對程式設計能力做簡單分級,比如初級 中級和高階,作業系統是中級必學科目,編譯原理是高階必學科目。可以這麼說,不學就很難晉級。編譯原理告訴你 為什麼要這麼寫,你要搞懂系統或cpu是如何處理 的...
急急急編譯原理題目證明文法gee
消除文法g e 的左遞迴後得到 e te e te t ft t ft f e i 網路程式語言有哪些?java語言,語言都是目前最流行的網路程式語言。這兩種都是很有前景的。至於病毒的應該是對計算機底層操作的語言編寫的,比如 彙編或者c語言。樓上的說的不錯,建議你學.以後會越來越流行,而且預設的語言...