dis7 - CMPSC 160 Translation of Programming Languages...

Info iconThis preview shows pages 1–11. Sign up to view the full content.

View Full Document Right Arrow Icon
CMPSC 160 Translation of Programming Languages Project 4
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Plan for today Solve recursion
Background image of page 2
Plan for today Solve recursion Traversing the AST Create function symbols Scoping Create arg/declared var symbols Statements (only some) Expressions (only some)
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Traversing the AST With that, we are ready to traverse the AST
Background image of page 4
Traversing the AST Visitor pattern Typecheck.cpp contains a Typecheck class, extending Visitor For each node type there's a visit method visitProgramImpl is called by main() indirectly, the others are not To visit children, use p -> visit_children(this); // where p is the node visited atm All the check methods aren't used anywhere! They are there to give you an outline of what to check
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Traversing the AST Each node in the tree has to have its scope set before going into children. p -> m_attribute.m_scope = m_st->get_scope()
Background image of page 6
Symbol Table 101 What is a symbol? What do we keep inside a symbol? Why do we need them?
Background image of page 7

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Symbol Table 101 integer function Main() { integer var somename; somename = variable + 5; return somename; }
Background image of page 8
Symbol Table 101 integer function Main() { integer var somename; integer function somename() { … } return somename; }
Background image of page 9

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Symbol Table 101 integer function Main() { integer var a; integer function somename() { … } return somename; }
Background image of page 10
Image of page 11
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 26

dis7 - CMPSC 160 Translation of Programming Languages...

This preview shows document pages 1 - 11. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online