Hier sind die neuesten Aufgaben und Anmerkungen zur Vorlesung: SE2_Uebung3
All posts by Albert Zündorf
Our lectures in compiler constructions using recursive descent parsers are inspired by
Homework #4 (due Nov. 27th, see last entry!) requires you to implement the following:
- extend the parser to handle if, else, and while statements. The new grammar rules are:
ifStat ::= 'if' condExpr '{' block '}' ('else' '{' block '}')? whileStat ::= 'while' condExpr '{' block '}' condExpr ::= expr (bop expr)? bop ::= '<' | '>' | '==' | ...
A conditional expression (condExpr) is true if its value is > 0, and false otherwise.
- parse function declarations:
funcDecl ::= name '(' paramDeclList ')' '{' block '}' paramDeclList ::= name*
Extend your symbol table to be able to store a function declaration.
- interpret function calls:
factor ::= number | name | name '(' expr* ')'
Make sure to handle parameter symbols correctly when calling functions. It should be possible to access globals from a function, but you may choose to make function execution free of side effects. Please make a comment or two about how your implementation works in the code!
Please remember to write simple test cases first (if without else, functions without parameters…). Develop iteratively, adding features as you go. Do not attempt to get everything right on first attempt…
On the next 2 Fridays (Nov. 13th & Nov. 20th) there will be no lecture. The deadline for homework #4 will be Friday, Nov. 27th. There was no exercise today, instead the exercise covering homework #4 will be held in place of the lecture on Friday, starting 10:15!
To summarize, the next dates are:
- Friday, Nov. 13th, 10:15 – Exercise for homework #4
- Friday, Nov. 27th, 10:15 – Deadline for homework #4 and next lecture
Heute gibts mal wieder neue Hausaufgaben. Wir werden uns damit beschäftigen, Änderungen auf unserem Modell mit popup Actions anzusteuern und so Refactorings etc. durchzuführen. Alles weitere findet ihr hier: SE2_Uebung2