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