我試圖分析一個動態語言,可以有多個翻譯,這取決於概率。我還是有幾個定義的類型在我的語言,比如數,向量等..分析沒有固定/靜態語義的樹?
例如,如果我們看到的表達式「A + B」,那麼這可能是增加了兩個數字的它可以是兩個向量的添加。 一個數字更可能,因此我們認爲'最佳'表示是兩個數字的總和。然而,它們可能是矢量,所以我仍然想保持這種「不太可能」的表示。
如果後來我看到了「A/B」後來我才知道,他們不能是向量,向量爲師是不確定的。所以我會放棄'矢量'表示,正確的表達方式盛行。
我想通過分析AST來做到這一點。問題是,由於類型和操作符的許多可能組合,我們有一個組合爆炸。
在適當的策略或模式,我可以用任何想法?我正在考慮針對不同組合的訪問者類型,它們並行運行以給結構賦予最佳含義。有點像在自然語言處理中分析轉折。
我使用ANTLR的樹行走機構進行了分析,那麼具體到該系統,或者動態語言實現語義的引用,將不勝感激。
如果你能找到的「龍書」(編譯器,原理,技術和工具,阿霍,塞西和烏爾曼)的副本,請閱讀並特別提到在6.7統一算法第6章。 (我的副本是從20世紀80年代開始的,所以章節號碼可能已經改變了,但「統一」這個詞將是關鍵。) – rici
謝謝,但龍書看起來太抽象了,不適合我。我會考慮統一。 –