c109f04t2 - CSE 109 Test 1 Monday 17 November 2004

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

View Full Document Right Arrow Icon

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

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: CSE 109 Test 1 Monday 17 November 2004 >>>>>>>>>>>>>>>>>>>>>>SUGGESTED ANSWERS<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1. Assume the lexical analyzer from assignments p5-p8. Assume a language whose programs consist of zero or more lines of code, followed by a line with "END", where each line has one of the forms: READ <identifier> WRITE <identifier> <identifier>++ <identifier>-- Write a program that parses (determines syntactical correctness of) programs entered at the console (keyboard). The program should simply respond by stating whether the program is correct. Hint: Identifiers cannot be declared, so only one pass is needed. ========================================================================= class Parser {public: Parser():lex(){} void parse(); private: Lex lex; static void check(bool b, char * mess); }; } void main() {Parser p; p.parse(); } void Parser::parse() {int tok,savetok; tok=lex.next(); while(tok!=Lex::END) {switch(tok) {case Lex::WRITE: case Lex::READ: tok=lex.next(); check(tok==Lex::IDENT,"Identifier expected"); break; case Lex::IDENT: savetok=lex.next(); check(savetok==Lex::SPLUS || savetok==Lex::SMINUS, " '+' or '-' expected"); tok=lex.next(); check(tok==savetok," '++' or '--' expected"); break;...
View Full Document

This note was uploaded on 03/09/2008 for the course CSE 109 taught by Professor Kay during the Spring '08 term at Lehigh University .

Page1 / 4

c109f04t2 - CSE 109 Test 1 Monday 17 November 2004

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

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