6
A
回答
2
前一段時間我用(現在刪除的)scala.tools.nsc.Interpreter類加載,修改和 - 意外! - 在運行時解釋Scala代碼。如果你想交換你的和解釋的代碼之間的值,請看bind
方法。它也有一個compileSources
和一個compileString
方法,但到目前爲止我沒有使用過它們中的一個。我也不知道如何使用這個(或其他)來獲得AST。
另請參閱:What is the purpose of the scala.tools.nsc package?和nsc package scaladoc。
更新:通過創建一個新CompilerCommand實例解析命令行參數,更重要的是,Scala AST in Scala
1
我在過去做到了這一點:這應該回答AST問題(2009年,可能是過時的)擴展了永恆恐怖類Global。
通過重寫computeInternalPhases
方法,只能使用編譯器的某些階段(例如,高達refchecks
,使用它作爲一個解析器/只typechecker),你可以添加自己的階段(插件)如你所願。你當然也可以一路去產生類文件。
所以是的,這絕對有可能。畢竟,編譯器本身也在JVM上運行。
1
相關問題
- 1. 編譯Scala 2.8.x代碼與Apache Buildr
- 2. MissingRequirementError當編譯Scala代碼與Global.Run
- 3. 如何調試Java編譯器源代碼(Javac)本身?
- 4. Android如何與C#代碼交互?
- 5. AOT編譯或本地代碼編譯Scala?
- 6. 從Scala編譯器插件生成Scala代碼樹
- 7. 交叉編譯代碼
- 8. 如何編譯jdk本身
- 9. 交叉編譯的代碼與升壓給編譯錯誤
- 10. 是否有任何與Skype交互庫的Lua編譯器?
- 11. 如何在vim中快速編譯和運行scala代碼?
- 12. 如何在jEdit中禁用自動編譯Scala源代碼?
- 13. 如何在編譯Scala文件之前在SBT Build.scala中運行Scala代碼?
- 14. 代碼不編譯(Eclipse Scala IDE)
- 15. 在eclipse IDE中使用Scala代碼。內部編譯器錯誤
- 16. 斷言在交叉編譯代碼
- 17. Scala代碼解析器(不是編譯器)
- 18. .jar與Scala不兼容的版本交叉編譯(2.10)
- 19. 編譯的程序如何與操作系統交互?
- 20. 在Scala中調試時交互式執行代碼
- 21. 用C++編譯器編譯c代碼
- 22. C#交互式窗口可以與我的代碼交互嗎?
- 23. LINQPad如何編譯代碼?
- 24. 如何編譯FastCGI ++代碼?
- 25. 如何編譯java代碼?
- 26. 如何編譯cython代碼
- 27. 如何編譯CIL代碼?
- 28. 如何編譯Fortran代碼?
- 29. 編譯gcc代碼與greenhills
- 30. 編譯C#代碼與單
[可以從實時scala代碼獲取AST的可能的重複嗎?](http://stackoverflow.com/questions/1962925/can-i-get-ast-from-live-scala-code) –