From 6d8485bd7919b2451364f5ef99a434714aadc0d1 Mon Sep 17 00:00:00 2001 From: Lior Spach <ls12@inf.ufpr.br> Date: Wed, 20 May 2015 00:22:45 -0300 Subject: [PATCH] c2 --- compiler/Test.scala | 85 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 compiler/Test.scala diff --git a/compiler/Test.scala b/compiler/Test.scala new file mode 100644 index 0000000..7f665c3 --- /dev/null +++ b/compiler/Test.scala @@ -0,0 +1,85 @@ + +package lexer + +import scala.annotation.tailrec + +object Test { + def main(args:Array[String]) { + test1 + test2 + } + + def test1 = { + val lex = new Lexer + val testString = "lala:=la22=l34++l44".toList + val answer = List(Token("lala","identificador"), + Token(":=","operador"), + Token("la22","identificador"), + Token("=","operador"), + Token("l34","identificador"), + Token("++","operador"), + Token("l44","identificador") + ) + val result = answer.corresponds(lex.getTokens(testString)) { _==_ } + println("Test 1: "+(if (result) "Success" else "Fail")) + } + + def test2 = { + val lex = new Lexer + val testString = simplePascalProgram.toList + val answer = List( + Token("program","reservada"),Token("exemplo12","identificador"),Token("(","controle"),Token("input","identificador"),Token(",","controle"),Token("output","identificador"),Token(")","controle"),Token(";","controle"), + Token("var","reservada"),Token("x","identificador"),Token(":","dois pontos"),Token("integer","reservada"), + Token(";","controle"),Token("procedure","reservada"),Token("p","identificador"),Token("(","controle"), + Token("var","reservada"),Token("t","identificador"),Token(":","dois pontos"),Token("integer","reservada"), + Token(")","controle"),Token(";","controle"),Token("begin","reservada"),Token("read","reservada"), + Token("(","controle"),Token("x","identificador"),Token(")","controle"),Token(";","controle"),Token("t","identificador"),Token(":=","operador"), + Token("x","identificador"),Token("end","reservada"),Token(";","controle"),Token("begin","reservada"), + Token("p","identificador"),Token("(","controle"),Token("x","identificador"),Token(")","controle"), + Token(";","controle"),Token("write","reservada"),Token("(","controle"),Token("x","identificador"), + Token(")","controle"),Token("end","reservada"),Token(".","controle")) + val result = answer.corresponds(lex.getTokens(testString)) { _==_ } + println("Test 2: "+(if (result) "Success" else "Fail")) + } + +val words = "Hello my nice words" +val simplePascalProgram = +"""program exemplo12 (input,output); + var x: integer; + procedure p(var t: integer); + begin + read(x); + t := x + end; +begin + p(x); + write(x) +end. +""" +val complexPascalProgram = +"""program exemplo12 (input,output); + var x: integer; + procedure p(var t: integer); + label 100,200; + var s : integer; + function f(z:integer):integer; + begin (* f *) + if z<0 then goto 200 + else if z=0 then f:=2 + else f:=f(z-2)*z+1 + end; (* f *) + begin (* p *) + 100: s:=f(t); t:=s + if t<x then goto 100; + 200: x:=x-1 + end; + procedure r; + procedure q; + var y:integer; + begin read(y); p(y); write(y) end; (* q *) + begin q end; (* r *) + begin read(x); r end. +""" + + +} \ No newline at end of file -- GitLab