160 likes | 331 Vues
Building AST's for RPAL Programs. Programming Language Concepts Lecture 14. Prepared by Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida. Let's Build a Few Abstract Syntax Trees. Example 1: Factorial, version 3. Example 2: Palindrome. Example 3: Add numbers from list.
E N D
Building AST's for RPAL Programs Programming Language Concepts Lecture 14 Prepared by Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida
Let's Build a Few Abstract Syntax Trees • Example 1: Factorial, version 3. • Example 2: Palindrome. • Example 3: Add numbers from list. • Example 5: Build tuple of pairs of characters.
Class Project • Build a recursive descent parser for RPAL (gulp!) • If done properly, it's easy. • Need lexical analyzer, to be called repeatedly (important!) by the parser. Avoid scanning the entire input in advance of the parser.
Class Project (cont’d) • Code up one procedure per nonterminal in RPAL's grammar. • Pseudo code for some portions of RPAL’s grammar
Class Project (cont’d) • Implement support module for trees, and stack of trees. • Suggestion: use first-child, next-sibling binary tree representation of n-ary trees (it works!). • Preorder traversal of this tree is the same as for n-ary tree. • Popping n trees from the stack, and building a parent node on top of them, is easy.
Building AST's for RPAL Programs Programming Language Concepts Lecture 14 Prepared by Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida