會寫 Parser Tokenizer 是什麼水平?

時間 2021-05-08 15:30:08

1樓:Shisoft

大概是國內大學編譯原理課程設計能過的水品

我上個月剛花一周時間把乙個 Lisp 的 tokenizer,parser,包括直譯器一起擼掉了。直譯器上花的時間長一些,主要是因為要實現各種函式和巨集 ShisoftResearch/Dovahkiin

2樓:MrForeverYoung

如果是簡單的,比如c的子集這種,雖然我水平很差,但是也只花了一天寫了個tokenizer出來,初步測試沒啥問題,parser估計也用不了多久。

如果是c++這種....

3樓:

簡單的parser和tokenizer並不難寫,難點不在於理解理論,而在於處理corner case 以及 bug free,還有效率

4樓:冒泡

說實話沒啥水平,因為詞法和語法分析無非就是自動機而已(乙個正則,乙個帶棧的下推),都是計算機專業基礎課,學校的大作業都有,就看學校教不教,自己學不學了,會者不難

若不考慮效能和很多任務業上的細節,做個語言真心沒啥難度

5樓:陳晨

不就是dfa嘛。。手寫dfa很蛋疼. 我們編譯器課的前兩個作業。

乙個作業兩周。當然老師給了模板和test cases. Parser 做的是簡單的LR1.

這兩個作業只是實現大作業完整編譯器的乙個小子集。 tokenizer 和Parser 不難,也可以用生成工具yacc和bison代勞。按書一步步來就好。

最難的是IR的優化部分。

6樓:流沙

我真不會。當初編譯原理沒好好學,後悔了。看了各位的回答,我決定再自學一遍。幸虧龍書沒扔。我覺得會寫的人都是比我牛的。

特此mark,以後再來匯報。

7樓:Comzyh

就是學完編譯原理課程做個課程設計的水平。

我們學校要求是

詞法分析:正規文法的,要求使用NFA或DFA

語法分析:LL(1)或LR(1),當然我猜你寫LALR肯定也是可以的.

然而

根據我前兩天答辯時的觀察,整個年級是自己寫不會超過20個人,不少10個人(一共是300人)。

基本上過來答辯的同學會直接承認不是自己寫的,能把程式講清楚就是優秀,講不大清楚就是良好,沒來答辯的只提交程式的就是及格。當然,自己寫的程式,符合上述兩點要求一定是優秀。

我寫了個左線性文法,被老師說這幾天第一次見。

答辯老師曾經說過一句話

這兩天我一共就見過三個版本的程式

學編譯原理之前當然還是覺得這個兩個東西還是蠻高階的,不過自己寫一下,其實搞出來了感覺也沒啥。寫個Tokenizer把上的NFA-> DFA ,DFA最小化之類的都實現一遍,肯定能加深你對書本的理解(主要是踩坑)。把LR(1)的符號棧變化過程輸出來,看到分析過程還是蠻爽的。

寫個Tokenizer 和 Parser能收穫的喜悅感,就像第一次自己手寫Hello World並成功執行一樣,以前覺得很高階,在這麼短的時間內搞出來了,真的可以用,是會比較爽的。

計算機科班出來還不會寫個玩具級別的,只能說現在計算機教育的實踐要求太低。

Tokenizer 和 Parser 本身並不難,為了那份喜悅,我覺得每乙個計算機專業的學生都應該試一試。

8樓:Belleve

能寫出某個 CF 語言的 Parser 不難;

寫出 Parser Generator,很難; // ← 推薦從 PEG 跳坑,因為 PEG 真的很好寫

寫出高效的 Parser Generator,更難。

9樓:Cyandev

記得初中剛學vb的時候寫了乙個ini的parser,那時根本什麼都不懂啊,什麼狀態機,lexer,ast,都不知道,就寫出來了,現在要我寫都不會了。

10樓:

呵呵,說簡單的同學,自己去github開個repo再回來貼個鏈結不就得了,讓我們也見識一下如此簡單的東西應該在多長時間寫完才能算本科畢業。

11樓:

前幾年我上了乙個為時兩個月的 compiler and execution environment 課

做乙個 LR(1) parser builder 是這個課的課程設計我覺得我的水平很渣但是也只做了乙個星期所以應該沒啥難度吧。。。

不過也許因為我只測試過 parse parser builder 自己的 syntax 定義檔案

也沒實現正規表示式匹配

12樓:

你們這群裝B的大神——現在的CS本科大學生大三都學編譯原理這門基礎課程啦,課程設計就是修改語法分析器和分詞器部分,比如加個case之類的關鍵字和實現這個功能編譯——換言之,名校的正統本碩,妥妥的。我英文不好,目前只能看譯本的書籍,編譯原理,好像是紫龍書吧,還沒看,好想回去讀研究生。

13樓:

看寫什麼啊.LISP的誰都會寫啊.如果是C++....你寫個完全符合標準無bug的出來試試.現在有哪個C++編譯器敢號稱完全符合標準幾乎沒bug?

14樓:藍色

這要看語言,不同的語言的詞法分析器,語法分析器的難度可以相差很大。如果是簡單的語言,很容易寫出來,而且可以很輕易的直接到CodeGen,Optimization等階段,然後一條龍直接到生成可執行檔案的階段。但是如果是C++這樣的語言的話......

15樓:晨池

也許不算高階,但是足夠好了,惡補一下相關SDK知識,找工作沒問題。

我們現在招Android,還很多連二分查詢都寫不出來的呢。程式設計師裡,大概一半以上不會寫二分查詢,剩下的最多有一半既能用遞迴實現,又能用迴圈實現。

16樓:

寫答案之前先匿。

我就是你們口中的千萬哥。

WangYin這種貨色是到底什麼德行我在這個答案裡面不想說,你們可以去我的主頁上翻。

然而題主這種專業地毯工我也真是有點兒微醺。

最後回答問題,什麼水平呢?

大概和這種動物相當:

17樓:趙年峰

證明大學編譯器課程剛剛及格。。。

補充下,王垠的水平,不是我們隨意評價的,人家水平確實牛,雖然逗比點。。。但個人還是覺得像V神這種天才的才有資格。。

18樓:「已登出」

你可以挑一門語言寫寫試試看.

我想如果這門語言足夠簡單的話(比如沒有macro和其它複雜的東西的lisp), 那寫出這樣乙個東西不會很難的.

如何變得會寫,有文采?

長路歸來 淺薄的回答一波。寫作並不是真的難,難的是找到寫作的素材。素材也不難找,只需要你願意去發現。小到小學生,大到大作家,但凡寫作是以表達自己真實感情出發的,大部分寫作都會被世人所認同,就算不是佳作也是可以勉強閱讀之。當然,寫作有一些相應的方法,比如說修辭手法,表達手法,文章結構安排等等,方法其實...

陳奕迅會不會寫歌?

時代曲反高潮那一夜有沒有說 衝口而出 沙龍溫室效應 新曲 精選 2001太空漫遊 狂熱革命 新生活落花流水 粵語殘片 床頭床尾 可一可再 下週同樣時間 再見 怪物解藥 大得太快 乜嘢啫My Girl 習慣說床頭床尾 同聲一哭 給你我也不會那麼做 白色球鞋 你會不會 沒有你內疚 兄弟I DO PG家長...

你會寫育兒類稿子嗎?

亦燦燦 交第二次作業 16班亦燦燦 與你相遇是緣分,陪你長大是幸福 文 亦燦燦 那年冬天,很冷。我遵照醫囑來到醫院的婦產科住院部,因為不久後,我的寶寶將在這裡出生。但在寶寶出生之前,我怎麼也沒想到還要經歷一番波折。1.產前入院 那天上午,我按照計畫的時間來到了醫院門口,因為那天是醫生給我約好的住院日...