Compiler Theory

cece23
Project1TestData.zip

test1.txt

// Function with Arithmetic Expression function main returns integer; begin 7 + 2 * (5 + 4); end;

test2.txt

// Function with a lexical error function main returns integer; begin 7 * 2 $ (2 + 4); end;

test3.txt

// Punctuation symbols ,;() => // Identifier name name123 // Literals 123 'a' // Logical operator & // Relational operator < // Arithmetic operators + * // Reserved words begin case character end endswitch function is integer list of returns switch when

test4.txt

// Function with All Reserved Words function main returns character; number: real is when 2 < 3, 0 : 1; values: list of integer is (4, 5, 6); begin if number < 6.3 then fold left + (1, 2, 3) endfold; elsif 6 < 7 then fold right + values endfold; else switch a is case 1 => number + 2; case 2 => number * 3; others => number; endswitch; endif; end;

test5.txt

// Program Containing the New Operators function main b: integer, c: integer returns integer; a: integer is 3; begin if (a < 2) | (a > 0) & (~b <> 0) then 7 - 2 / (9 % 4); else if b >= 2 | b <= 6 & !(c = 1) then 7 + 2 * (2 + 4); else a ^ 2; endif; endif; end;

test6.txt

// Program Containing the New Comment, Modified Identifier // and Real Literal and Hex and Character Literals -- This is the new style comment function main b: integer, c: integer returns integer; a: real is .3; d: real is 5.7; a__1: real is .4e2; ab_c_d: real is 4.3E+1; ab1_cd2: real is 4.5e-1; hex: integer is #2aF; char1: character is 'C'; char2: character is '\n'; begin hex + 2; end;

test7.txt

// Function with Two Lexical Errors function main returns integer; begin 7 $ 2 ? (2 + 4); end;

test8.txt

-- Punctuation symbols ,:;() => // Valid identifiers name_1 name_1__a2_ab3 // Invalid identifiers name___2 _name3 name4_ // Integer Literals 23 #3aD // Real Literals 123.45 .123 1.2E2 .1e+2 1.2E-2 // Character Literals 'A' '\n' // Logical operators & | ! // Relational operators = <> > >= < <= // Arithmetic operators + - * / % ^ ~ // Reserved words begin case character else elsif end endcase endfold endif endswitch fold function if integer is left list of others real returns right switch then when