From 8feaf533e29c92ba583edbda78b6e7e6e77d15c4 Mon Sep 17 00:00:00 2001
From: ls12 5o Andar <ls12@inf.ufpr.br>
Date: Tue, 5 May 2015 11:49:12 -0300
Subject: [PATCH] Take function, separacao de funcoes booleanas e conjuntos

---
 compiler/Lexer.scala | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)
 mode change 100644 => 100755 compiler/Lexer.scala

diff --git a/compiler/Lexer.scala b/compiler/Lexer.scala
old mode 100644
new mode 100755
index 786124e..9584721
--- a/compiler/Lexer.scala
+++ b/compiler/Lexer.scala
@@ -3,12 +3,15 @@
 println("started...")
 case class Token(val value:String, val func:String)
 
+// Conjuntos
 val palavrasReservadas = List("begin", "end", "function", "procedure", "var", "program")
+val letras = List.concat('a' to 'z','A' to 'Z',"_")
+val numeros = ('0' to '9').toList
 
-// Conjuntos
-val num          = (c:Char) => ('0' to '9').contains(c)
+//Funcoes booleanas
+val num          = (c:Char) => numeros.contains(c)
 val op           = (c:Char) => "+-*/=:".contains(c)
-val letra        = (c:Char) => ('a' to 'z').contains(c) || ('A' to 'Z').contains(c) || c=='_'
+val letra        = (c:Char) => letras.contains(c)
 val espacoLinTab = (c:Char) => c==' ' || c=='\t' || c=='\n'
 val palavraReservada = (s:String) => palavrasReservadas.contains(s)
 
@@ -22,12 +25,9 @@ val erro = (msg:String) => {println("Erro: "+msg); sys.exit(1)}
 
 def take(iter:BufferedIterator[Char]) = {
   var acc=""
-  while ( //TODO
-    val c = iter.head 
-    if (! espacoLinTab(c) && ! op(c)) {
-      acc += c
-    }
-  }
+  while (iter.hasNext && ! espacoLinTab(iter.head) && ! op(iter.head))
+    acc += iter.next
+  acc
 }
 
 def atomo(str:String) {
@@ -38,7 +38,6 @@ def atomo(str:String) {
 
       case c if num(c) => //NUMERO
         val acc = c + take(iter)
-        println("prox: "+iter.head)
         verificaNumero(acc)
         (acc,"numero")
 
@@ -59,7 +58,7 @@ def atomo(str:String) {
       case c if espacoLinTab(c) => /*pula*/
         iter.dropWhile(espacoLinTab)
         ""
-      case erroCh => erro(erroCh+"")
+      case erroCh => erro(erroCh+"")//TODO:which line error occurred?
     })
   }
 }
-- 
GitLab