Converting Antlr syntax tree into useful objects

最后都变了- 提交于 2019-12-04 11:32:39

I recommend reading chapter 9, Building High-Level Interpreters, from Language Implementation Patterns by Terence Parr.

EDIT

Okay, to get you through the time waiting for that book, here's what you're (at least) going to need:

  • a global memory space;
  • function spaces (each function space will also have a (local) memory space);

and classes that spring to mind (in UML-ish style):

  • class Interpreter
    • global : MemorySpace
    • functions : Stack<Function>
    • ...

  • class MemorySpace
    • vars : Map<String, Object>
    • ...

  • class Function
    • local: MemorySpace
    • execute(): void
    • ...

Here's one with ANTLR -> LLVM:

Once you have the AST, all you need is an iterator to walk the tree and the template to emit the objects you want.

This Tutorial is based on Flex and Bison but at the end he details how he converts his AST to LLVM assembly code, it might be helpful.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!