This preview has intentionally blurred sections. Sign up to view the full version.View Full Document
Unformatted text preview: COP4020 Programming Assignment 2 A CALC interpreter Purpose: This project is intended to give you experience in using a parser generator(YACC), writing syntax specification (grammar) for a language, performing parsing and semantics analysis, and practicing error handling in a compiler. Project Summary: Your task is to write an interpreter for a simple calculator whose programming language, CALC , contains basic language constructs such as variables and assignment statements. The interpreter will be written using a compiler generator (YACC). The interpreter will call the lexical analyzer (lex) for the next token, parse the token stream, interpret the program statement-by-statement, and perform static and dynamic semantic checks, and print the results of the calculation in a program. Lexical specification: Table 1 list all tokens in CALC. The set of tokens is a subset of the tokens in PASC in Project 1. Table 1: Token numbers to be returned by yylex Token Symbolic name Token Symbolic name ; SEMInumber , COMMAnumber ( LPARENnumber ) RPARENnumber integer constant ICONSTnumber identifier IDnumber begin BEGINnumber end ENDnumber program PROGRAMnumber is ISnumber- MINUSnumber + PLUSnumber * TIMESnumber div DIVnumber var VARnumber print PRINTnumber end of file EOFnumber = EQnumber Syntax Specification: The syntax of the CALC language is described by a set of syntax diagrams in Figure 1. A syntax diagram is a directed graph with one entry and one exit. Each path through the graph defines an allowable sequence of symbols. For example, the structure of a valid CALC program is defined by the first syntax diagram. The occurrence of the name of another diagram such as declaration and compoundfirst syntax diagram....
View Full Document
- Spring '11
- Context-free grammar, YACC