1

I want to create a very simple translator that translates some source code defined by the language into assembly. I have already created the lexer and parser which produces an AST. I have created a tree grammar which traverses the tree and keeps track of things like declared variables using dynamic scopes.

The problem is I can't simply create a translator using one tree grammar because I need to traverse the tree in multiple passes. The first pass will be semantic analysis, and the second pass will be translation into assembly. Each pass will be a different tree grammar.

My question is, how do I preserve node-specific information from the semantic analysis pass in the tree so that I can access it for the translation pass? How do I annotate the tree? Is there a way I can assign information to the individual nodes in the tree? Do I need to create a custom tree node class for this?

Decade Moon
  • 32,968
  • 8
  • 81
  • 101

1 Answers1

1

Do I need to create a custom tree node class for this?

Yes.

See:

Community
  • 1
  • 1
Bart Kiers
  • 166,582
  • 36
  • 299
  • 288