tiger

    9熱度

    3回答

    我在C#中編寫了Tiger編譯器,我打算將Tiger代碼翻譯爲IL。 在對AST中的每個節點執行語義檢查時,我爲此創建了許多單元測試。這是非常簡單的,因爲我的CheckSemantic方法是這樣的: public override void CheckSemantics(Scope scope, IList<Error> errors) { ... } 所以,如果我想要寫一些節點的語義檢查

    0熱度

    1回答

    我正在使用ML-Yacc在SML中處理我的Tiger compiler的解析器組件。我找不到任何明顯的語法問題(我使用優先規則來解決所有移位 - 縮減衝突),但似乎從來沒有減少使用lvalue的第二條和第三條規則,我已經指定如下: lvalue : ID () | lvalue DOT ID () | lvalue LBRACK exp RBRACK()

    1熱度

    2回答

    我正在經歷在Appel的「ML中的現代編譯器實現」一書中生成Tiger Parser的Ch3編程練習。我的tiger.grm文件是here。我試圖診斷的錯誤是由一元和二元減算子的規則引起的減少 - 減少衝突。這裏是YACC錯誤: error: state 128: reduce/reduce conflict between rule 48 and rule 46 on OR error: st

    0熱度

    2回答

    我做了一個老虎編譯器,所以我需要一個簡單的IDE來配置它與我的編譯器一起工作,我以爲使用Notepad ++,但我找不到在文本上加下劃線或標記錯誤的方法。有什麼建議麼???

    3熱度

    3回答

    我正在編寫F#編譯器Tiger,我終於達到了無法推遲目標體系結構決策的程度。 這是我的第一個編譯器,但它肯定不會是我的最後一個。那麼......對於第一個編譯器來說,什麼是好的 目標體系結構? 我曾考慮過針對CIL(.NET),但the book 中的中間代碼似乎更適合註冊機器。 我也想知道我完成這個編譯器後應該去哪裏。我應該嘗試 針對另一種架構嗎?我應該關注編譯器的另一部分嗎?爲什麼?

    6熱度

    1回答

    我試圖按照Appel的「現代編譯器在ML中的實現」,並使用Ocamllex編寫詞法分析器。 規範要求詞法分析器返回字符串後翻譯轉義序列。 下面的代碼是從ocamllex輸入文件的摘錄: rule tiger = parse ... | '"' { let buffer = Buffer.create 1 in STRING (stringl buffer lexbuf)