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