diff --git a/core/src/main/antlr/Portugol.g4 b/core/src/main/antlr/Portugol.g4
index 6caef5367..1dc458a57 100644
--- a/core/src/main/antlr/Portugol.g4
+++ b/core/src/main/antlr/Portugol.g4
@@ -41,9 +41,10 @@ tamanhoArray
: expressao; // aceita inteiro ou variável como tamanho do array, o semântico verifica se a variável é constante
declaracaoFuncao
- : FUNCAO TIPO? ID ABRE_PARENTESES listaParametros? FECHA_PARENTESES
- ABRE_CHAVES comando* FECHA_CHAVES ;
+ : FUNCAO TIPO? ID parametroFuncao ABRE_CHAVES comando* FECHA_CHAVES ;
+parametroFuncao
+ : ABRE_PARENTESES listaParametros? FECHA_PARENTESES ;
listaParametros
: parametro (VIRGULA parametro)* ;
@@ -58,7 +59,7 @@ parametroMatriz
comando
: listaDeclaracoes
- | se
+ | se
| enquanto
| facaEnquanto
| para
@@ -84,7 +85,10 @@ retorne
: RETORNE expressao? ;
se
- : SE ABRE_PARENTESES expressao FECHA_PARENTESES listaComandos (SENAO listaComandos)? ;
+ : SE ABRE_PARENTESES expressao FECHA_PARENTESES listaComandos (senao)? ;
+
+senao
+ : SENAO listaComandos ;
enquanto
: ENQUANTO ABRE_PARENTESES expressao FECHA_PARENTESES listaComandos ;
diff --git a/core/src/main/antlr/PortugolLexico.g4 b/core/src/main/antlr/PortugolLexico.g4
index 2e6937d82..ebb05c22e 100644
--- a/core/src/main/antlr/PortugolLexico.g4
+++ b/core/src/main/antlr/PortugolLexico.g4
@@ -111,4 +111,4 @@ VIRGULA : ',';
PONTOVIRGULA : ';';
-DOISPONTOS : ':';
+DOISPONTOS : ':';
\ No newline at end of file
diff --git a/core/src/main/java/br/univali/portugol/nucleo/BuscadorDeSimbolo.java b/core/src/main/java/br/univali/portugol/nucleo/BuscadorDeSimbolo.java
index 9e643a2cf..92e9bd26d 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/BuscadorDeSimbolo.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/BuscadorDeSimbolo.java
@@ -677,4 +677,14 @@ public Object visitar(NoTitulo noTitulo) throws ExcecaoVisitaASA {
public Object visitar(NoVaPara noVaPara) throws ExcecaoVisitaASA {
return null;
}
+
+ @Override
+ public Object visitar(NoSenao noSenao) throws ExcecaoVisitaASA {
+ return null;
+ }
+
+ @Override
+ public Object visitar(NoParametroFuncao noParametroFuncao) throws ExcecaoVisitaASA {
+ return null;
+ }
}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/AnalisadorDeclaracaoTamanhoVetorMatriz.java b/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/AnalisadorDeclaracaoTamanhoVetorMatriz.java
index 493c58042..d0f77ed15 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/AnalisadorDeclaracaoTamanhoVetorMatriz.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/AnalisadorDeclaracaoTamanhoVetorMatriz.java
@@ -51,6 +51,7 @@
import br.univali.portugol.nucleo.asa.NoOperacaoSoma;
import br.univali.portugol.nucleo.asa.NoOperacaoSubtracao;
import br.univali.portugol.nucleo.asa.NoPara;
+import br.univali.portugol.nucleo.asa.NoParametroFuncao;
import br.univali.portugol.nucleo.asa.NoPare;
import br.univali.portugol.nucleo.asa.NoReal;
import br.univali.portugol.nucleo.asa.NoReferenciaMatriz;
@@ -58,6 +59,7 @@
import br.univali.portugol.nucleo.asa.NoReferenciaVetor;
import br.univali.portugol.nucleo.asa.NoRetorne;
import br.univali.portugol.nucleo.asa.NoSe;
+import br.univali.portugol.nucleo.asa.NoSenao;
import br.univali.portugol.nucleo.asa.NoTitulo;
import br.univali.portugol.nucleo.asa.NoVaPara;
import br.univali.portugol.nucleo.asa.NoVetor;
@@ -406,4 +408,14 @@ public Object visitar(NoDeclaracaoParametro noDeclaracaoParametro) throws Exceca
public Object visitar(NoInclusaoBiblioteca noInclusaoBiblioteca) throws ExcecaoVisitaASA {
throw new ExcecaoVisitaASA("Not supported yet.", null, null); //To change body of generated methods, choose Tools | Templates.
}
+
+ @Override
+ public Object visitar(NoSenao noSenao) throws ExcecaoVisitaASA {
+ throw new ExcecaoVisitaASA("Not supported yet.", null, null); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public Object visitar(NoParametroFuncao noParametroFuncao) throws ExcecaoVisitaASA {
+ throw new ExcecaoVisitaASA("Not supported yet.", null, null); //To change body of generated methods, choose Tools | Templates.
+ }
}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/AnalisadorRetornoDeFuncao.java b/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/AnalisadorRetornoDeFuncao.java
index 665e6b2fd..fc276a675 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/AnalisadorRetornoDeFuncao.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/AnalisadorRetornoDeFuncao.java
@@ -43,6 +43,7 @@
import br.univali.portugol.nucleo.asa.NoOperacaoSoma;
import br.univali.portugol.nucleo.asa.NoOperacaoSubtracao;
import br.univali.portugol.nucleo.asa.NoPara;
+import br.univali.portugol.nucleo.asa.NoParametroFuncao;
import br.univali.portugol.nucleo.asa.NoPare;
import br.univali.portugol.nucleo.asa.NoReal;
import br.univali.portugol.nucleo.asa.NoReferenciaMatriz;
@@ -50,6 +51,7 @@
import br.univali.portugol.nucleo.asa.NoReferenciaVetor;
import br.univali.portugol.nucleo.asa.NoRetorne;
import br.univali.portugol.nucleo.asa.NoSe;
+import br.univali.portugol.nucleo.asa.NoSenao;
import br.univali.portugol.nucleo.asa.NoTitulo;
import br.univali.portugol.nucleo.asa.NoVaPara;
import br.univali.portugol.nucleo.asa.NoVetor;
@@ -436,4 +438,14 @@ public Object visitar(NoInclusaoBiblioteca noInclusaoBiblioteca) throws ExcecaoV
return false;
}
+ @Override
+ public Object visitar(NoSenao noSenao) throws ExcecaoVisitaASA {
+ return false;
+ }
+
+ @Override
+ public Object visitar(NoParametroFuncao noParametroFuncao) throws ExcecaoVisitaASA {
+ return false;
+ }
+
}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/AnalisadorSemantico.java b/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/AnalisadorSemantico.java
index ff482e653..47ad4dd5d 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/AnalisadorSemantico.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/AnalisadorSemantico.java
@@ -2600,4 +2600,16 @@ public Object visitar(NoVaPara noVaPara) throws ExcecaoVisitaASA
setarPaiDoNo(noVaPara);
throw new ExcecaoVisitaASA("Erro", new ErroComandoNaoSuportado(noVaPara.getTrechoCodigoFonte()), asa, noVaPara);
}
+
+ @Override
+ public Object visitar(NoSenao noSenao) throws ExcecaoVisitaASA {
+ setarPaiDoNo(noSenao);
+ throw new ExcecaoVisitaASA("Erro", new ErroComandoNaoSuportado(noSenao.getTrechoCodigoFonte()), asa, noSenao);
+ }
+
+ @Override
+ public Object visitar(NoParametroFuncao noParametroFuncao) throws ExcecaoVisitaASA {
+ setarPaiDoNo(noParametroFuncao);
+ throw new ExcecaoVisitaASA("Erro", new ErroComandoNaoSuportado(noParametroFuncao.getTrechoCodigoFonte()), asa, noParametroFuncao);
+ }
}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/avisos/AvisoSimboloGlobalOcultado.java b/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/avisos/AvisoSimboloGlobalOcultado.java
index 16297b580..fbcbe66c9 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/avisos/AvisoSimboloGlobalOcultado.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/semantica/avisos/AvisoSimboloGlobalOcultado.java
@@ -7,6 +7,7 @@
import br.univali.portugol.nucleo.asa.NoDeclaracaoParametro;
import br.univali.portugol.nucleo.asa.NoDeclaracaoVariavel;
import br.univali.portugol.nucleo.asa.NoDeclaracaoVetor;
+import br.univali.portugol.nucleo.asa.NoParametroFuncao;
import br.univali.portugol.nucleo.asa.VisitanteASABasico;
import br.univali.portugol.nucleo.mensagens.AvisoAnalise;
import br.univali.portugol.nucleo.simbolos.Funcao;
@@ -150,5 +151,10 @@ public Object visitar(NoDeclaracaoFuncao declaracaoFuncao) throws ExcecaoVisitaA
{
return super.visitar(declaracaoFuncao); //To change body of generated methods, choose Tools | Templates.
}
+
+ @Override
+ public Object visitar(NoParametroFuncao noParametroFuncao) throws ExcecaoVisitaASA {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
}
}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/AnalisadorSintatico.java b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/AnalisadorSintatico.java
index df497c7ef..0ce05d7eb 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/AnalisadorSintatico.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/AnalisadorSintatico.java
@@ -12,11 +12,15 @@
import br.univali.portugol.nucleo.mensagens.ErroSintatico;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.BitSet;
import java.util.Collection;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.antlr.runtime.UnwantedTokenException;
import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.atn.ATNConfigSet;
+import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.misc.IntervalSet;
import org.antlr.v4.runtime.misc.ParseCancellationException;
@@ -121,7 +125,6 @@ public void syntaxError(Recognizer, ?> recognizer, Object offendingSymbol, int
notificarErroSintatico(traduzirErroParsing(e, msg, line, charPositionInLine));
}
}
-
});
PortugolParser portugolParser = new PortugolParser(new CommonTokenStream(portugolLexer));
@@ -150,6 +153,32 @@ public void reportMissingToken(Parser recognizer) {
String msg = "missing " + expecting.toString(recognizer.getVocabulary()) + " at " + getTokenErrorDisplay(t);
throw new RecognitionException(msg, recognizer, recognizer.getInputStream(), recognizer.getContext());
}
+
+ @Override
+ protected void reportUnwantedToken(Parser recognizer) {
+ beginErrorCondition(recognizer);
+ Token t = recognizer.getCurrentToken();
+ String msg = "O token " +getTokenErrorDisplay(t)+ " não faz sentido neste local. Remove-lo pode solucionar o problema";
+ throw new RecognitionException(msg, recognizer, recognizer.getInputStream(), recognizer.getContext());
+ }
+
+ @Override
+ protected void reportFailedPredicate(Parser recognizer, FailedPredicateException e) {
+ beginErrorCondition(recognizer);
+ Token t = recognizer.getCurrentToken();
+ IntervalSet expecting = getExpectedTokens(recognizer);
+ String msg = "Expressão " +getTokenErrorDisplay(t)+ " não faz sentido, era esperado o token "+expecting.toString(recognizer.getVocabulary())+".";
+ throw new RecognitionException(msg, recognizer, recognizer.getInputStream(), recognizer.getContext());
+ }
+
+ @Override
+ protected void reportNoViableAlternative(Parser recognizer, NoViableAltException e) {
+ beginErrorCondition(recognizer);
+ Token t = recognizer.getCurrentToken();
+ IntervalSet expecting = getExpectedTokens(recognizer);
+ String msg = "Expressão " +getTokenErrorDisplay(t)+ " não faz sentido, era esperado o token "+expecting.toString(recognizer.getVocabulary())+".";
+ throw new RecognitionException(msg, recognizer, recognizer.getInputStream(), recognizer.getContext());
+ }
});
try {
@@ -161,7 +190,7 @@ public void reportMissingToken(Parser recognizer) {
return asa;
}
catch (RecognitionException excecao) {
- tratarErroParsing(excecao, codigoFonte);
+ tratarErroParsing(excecao, excecao.getLocalizedMessage());
}
catch(ParseCancellationException e) {
System.out.println(e);
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/GeradorASA.java b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/GeradorASA.java
index 5c5a98fa4..c7a53b610 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/GeradorASA.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/GeradorASA.java
@@ -175,13 +175,10 @@ public No visitDeclaracaoFuncao(PortugolParser.DeclaracaoFuncaoContext ctx) {
TipoDado tipoRetorno = TipoDado.obterTipoDadoPeloNome(nomeTipoRetorno);
NoDeclaracaoFuncao declaracaoFuncao = new NoDeclaracaoFuncao(nomeFuncao, tipoRetorno, Quantificador.VALOR);
-
- if (ctx.listaParametros() != null) { // se a função tem parâmetros
- List parametros = new ArrayList<>();
- for (ParametroContext parametroContext : ctx.listaParametros().parametro()) {
- parametros.add((NoDeclaracaoParametro)parametroContext.accept(this));
- }
- declaracaoFuncao.setParametros(parametros);
+
+ if (ctx.parametroFuncao() != null) { // se a função tem parâmetros
+ NoParametroFuncao noParametroFuncao = (NoParametroFuncao) visit(ctx.parametroFuncao());
+ declaracaoFuncao.setParametros(noParametroFuncao.getParametros());
}
declaracaoFuncao.setBlocos(getBlocos(ctx.comando()));
@@ -196,6 +193,16 @@ public No visitDeclaracaoFuncao(PortugolParser.DeclaracaoFuncaoContext ctx) {
return declaracaoFuncao;
}
+ @Override
+ public No visitParametroFuncao(ParametroFuncaoContext ctx) {
+ NoParametroFuncao noParametroFuncao = new NoParametroFuncao();
+ if(ctx.listaParametros()!=null)
+ for (ParametroContext parametroContext : ctx.listaParametros().parametro()) {
+ noParametroFuncao.addParametro((NoDeclaracaoParametro)parametroContext.accept(this));
+ }
+ return noParametroFuncao;
+ }
+
@Override
public No visitRetorne(RetorneContext ctx) {
TrechoCodigoFonte trechoCodigoFonte = getTrechoCodigoFonte(ctx.RETORNE());
@@ -669,18 +676,23 @@ public No visitEnquanto(EnquantoContext ctx) {
@Override
public No visitSe(SeContext ctx) {
- NoSe se = new NoSe((NoExpressao)ctx.expressao().accept(this));
-
- se.setBlocosVerdadeiros(getBlocos(ctx.listaComandos(0)));
-
- if (ctx.SENAO() != null) {
- se.setBlocosFalsos(getBlocos(ctx.listaComandos(1)));
- }
-
- se.setTrechoCodigoFonte(getTrechoCodigoFonte(ctx.SE(), ctx.getText().length()));
-
+ NoSe se = new NoSe((NoExpressao)ctx.expressao().accept(this));
+ se.setBlocosVerdadeiros(getBlocos(ctx.listaComandos()));
+ if(ctx.senao() != null)
+ {
+ NoSenao senao = (NoSenao) visit(ctx.senao());
+ se.setBlocosFalsos(senao.getBlocosFalsos());
+ }
+ se.setTrechoCodigoFonte(getTrechoCodigoFonte(ctx.SE(), ctx.getText().length()));
return se;
}
+
+ @Override
+ public No visitSenao(SenaoContext ctx) {
+ NoSenao senao = new NoSenao();
+ senao.setBlocosFalsos(getBlocos(ctx.listaComandos()));
+ return senao;
+ }
@Override
public No visitChamadaFuncao(PortugolParser.ChamadaFuncaoContext ctx) {
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/antlr4/PortugolBaseVisitor.java b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/antlr4/PortugolBaseVisitor.java
index 064d79196..21c2df9b2 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/antlr4/PortugolBaseVisitor.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/antlr4/PortugolBaseVisitor.java
@@ -102,6 +102,13 @@ public class PortugolBaseVisitor extends AbstractParseTreeVisitor implemen
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitDeclaracaoFuncao(PortugolParser.DeclaracaoFuncaoContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitParametroFuncao(PortugolParser.ParametroFuncaoContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@@ -186,6 +193,13 @@ public class PortugolBaseVisitor extends AbstractParseTreeVisitor implemen
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitSe(PortugolParser.SeContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitSenao(PortugolParser.SenaoContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/antlr4/PortugolParser.java b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/antlr4/PortugolParser.java
index 9f85bdf2a..9ae04ef7d 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/antlr4/PortugolParser.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/antlr4/PortugolParser.java
@@ -35,24 +35,24 @@ public class PortugolParser extends Parser {
RULE_declaracao = 3, RULE_declaracaoVariavel = 4, RULE_declaracaoMatriz = 5,
RULE_inicializacaoMatriz = 6, RULE_linhaMatriz = 7, RULE_colunaMatriz = 8,
RULE_declaracaoArray = 9, RULE_inicializacaoArray = 10, RULE_tamanhoArray = 11,
- RULE_declaracaoFuncao = 12, RULE_listaParametros = 13, RULE_parametro = 14,
- RULE_parametroArray = 15, RULE_parametroMatriz = 16, RULE_comando = 17,
- RULE_atribuicao = 18, RULE_atribuicaoComposta = 19, RULE_retorne = 20,
- RULE_se = 21, RULE_enquanto = 22, RULE_facaEnquanto = 23, RULE_para = 24,
- RULE_listaComandos = 25, RULE_inicializacaoPara = 26, RULE_condicao = 27,
- RULE_incrementoPara = 28, RULE_escolha = 29, RULE_caso = 30, RULE_pare = 31,
- RULE_indiceArray = 32, RULE_expressao = 33, RULE_listaExpressoes = 34,
- RULE_escopoBiblioteca = 35;
+ RULE_declaracaoFuncao = 12, RULE_parametroFuncao = 13, RULE_listaParametros = 14,
+ RULE_parametro = 15, RULE_parametroArray = 16, RULE_parametroMatriz = 17,
+ RULE_comando = 18, RULE_atribuicao = 19, RULE_atribuicaoComposta = 20,
+ RULE_retorne = 21, RULE_se = 22, RULE_senao = 23, RULE_enquanto = 24,
+ RULE_facaEnquanto = 25, RULE_para = 26, RULE_listaComandos = 27, RULE_inicializacaoPara = 28,
+ RULE_condicao = 29, RULE_incrementoPara = 30, RULE_escolha = 31, RULE_caso = 32,
+ RULE_pare = 33, RULE_indiceArray = 34, RULE_expressao = 35, RULE_listaExpressoes = 36,
+ RULE_escopoBiblioteca = 37;
private static String[] makeRuleNames() {
return new String[] {
"arquivo", "inclusaoBiblioteca", "listaDeclaracoes", "declaracao", "declaracaoVariavel",
"declaracaoMatriz", "inicializacaoMatriz", "linhaMatriz", "colunaMatriz",
"declaracaoArray", "inicializacaoArray", "tamanhoArray", "declaracaoFuncao",
- "listaParametros", "parametro", "parametroArray", "parametroMatriz",
- "comando", "atribuicao", "atribuicaoComposta", "retorne", "se", "enquanto",
- "facaEnquanto", "para", "listaComandos", "inicializacaoPara", "condicao",
- "incrementoPara", "escolha", "caso", "pare", "indiceArray", "expressao",
- "listaExpressoes", "escopoBiblioteca"
+ "parametroFuncao", "listaParametros", "parametro", "parametroArray",
+ "parametroMatriz", "comando", "atribuicao", "atribuicaoComposta", "retorne",
+ "se", "senao", "enquanto", "facaEnquanto", "para", "listaComandos", "inicializacaoPara",
+ "condicao", "incrementoPara", "escolha", "caso", "pare", "indiceArray",
+ "expressao", "listaExpressoes", "escopoBiblioteca"
};
}
public static final String[] ruleNames = makeRuleNames();
@@ -177,42 +177,42 @@ public final ArquivoContext arquivo() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(72);
+ setState(76);
match(PROGRAMA);
- setState(73);
- match(ABRE_CHAVES);
setState(77);
+ match(ABRE_CHAVES);
+ setState(81);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==INCLUA) {
{
{
- setState(74);
+ setState(78);
inclusaoBiblioteca();
}
}
- setState(79);
+ setState(83);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(84);
+ setState(88);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TIPO) | (1L << CONSTANTE) | (1L << FUNCAO))) != 0)) {
{
- setState(82);
+ setState(86);
_errHandler.sync(this);
switch (_input.LA(1)) {
case FUNCAO:
{
- setState(80);
+ setState(84);
declaracaoFuncao();
}
break;
case TIPO:
case CONSTANTE:
{
- setState(81);
+ setState(85);
listaDeclaracoes();
}
break;
@@ -220,11 +220,11 @@ public final ArquivoContext arquivo() throws RecognitionException {
throw new NoViableAltException(this);
}
}
- setState(86);
+ setState(90);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(87);
+ setState(91);
match(FECHA_CHAVES);
}
}
@@ -265,20 +265,20 @@ public final InclusaoBibliotecaContext inclusaoBiblioteca() throws RecognitionEx
try {
enterOuterAlt(_localctx, 1);
{
- setState(89);
+ setState(93);
match(INCLUA);
- setState(90);
+ setState(94);
match(BIBLIOTECA);
- setState(91);
+ setState(95);
match(ID);
- setState(94);
+ setState(98);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==OP_ALIAS_BIBLIOTECA) {
{
- setState(92);
+ setState(96);
match(OP_ALIAS_BIBLIOTECA);
- setState(93);
+ setState(97);
match(ID);
}
}
@@ -327,33 +327,33 @@ public final ListaDeclaracoesContext listaDeclaracoes() throws RecognitionExcept
try {
enterOuterAlt(_localctx, 1);
{
- setState(97);
+ setState(101);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==CONSTANTE) {
{
- setState(96);
+ setState(100);
match(CONSTANTE);
}
}
- setState(99);
+ setState(103);
match(TIPO);
- setState(100);
+ setState(104);
declaracao();
- setState(105);
+ setState(109);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==VIRGULA) {
{
{
- setState(101);
+ setState(105);
match(VIRGULA);
- setState(102);
+ setState(106);
declaracao();
}
}
- setState(107);
+ setState(111);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -395,27 +395,27 @@ public final DeclaracaoContext declaracao() throws RecognitionException {
DeclaracaoContext _localctx = new DeclaracaoContext(_ctx, getState());
enterRule(_localctx, 6, RULE_declaracao);
try {
- setState(111);
+ setState(115);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(108);
+ setState(112);
declaracaoVariavel();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(109);
+ setState(113);
declaracaoArray();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(110);
+ setState(114);
declaracaoMatriz();
}
break;
@@ -456,16 +456,16 @@ public final DeclaracaoVariavelContext declaracaoVariavel() throws RecognitionEx
try {
enterOuterAlt(_localctx, 1);
{
- setState(113);
+ setState(117);
match(ID);
- setState(116);
+ setState(120);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==OP_ATRIBUICAO) {
{
- setState(114);
+ setState(118);
match(OP_ATRIBUICAO);
- setState(115);
+ setState(119);
expressao(0);
}
}
@@ -521,44 +521,44 @@ public final DeclaracaoMatrizContext declaracaoMatriz() throws RecognitionExcept
try {
enterOuterAlt(_localctx, 1);
{
- setState(118);
+ setState(122);
match(ID);
- setState(119);
+ setState(123);
match(ABRE_COLCHETES);
- setState(121);
+ setState(125);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABRE_PARENTESES) | (1L << OP_NAO) | (1L << OP_SUBTRACAO) | (1L << OP_ADICAO) | (1L << OP_INCREMENTO_UNARIO) | (1L << OP_DECREMENTO_UNARIO) | (1L << OP_NOT_BITWISE) | (1L << LOGICO) | (1L << CARACTER) | (1L << STRING) | (1L << ID) | (1L << REAL) | (1L << INT) | (1L << HEXADECIMAL))) != 0)) {
{
- setState(120);
+ setState(124);
linhaMatriz();
}
}
- setState(123);
+ setState(127);
match(FECHA_COLCHETES);
- setState(124);
+ setState(128);
match(ABRE_COLCHETES);
- setState(126);
+ setState(130);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABRE_PARENTESES) | (1L << OP_NAO) | (1L << OP_SUBTRACAO) | (1L << OP_ADICAO) | (1L << OP_INCREMENTO_UNARIO) | (1L << OP_DECREMENTO_UNARIO) | (1L << OP_NOT_BITWISE) | (1L << LOGICO) | (1L << CARACTER) | (1L << STRING) | (1L << ID) | (1L << REAL) | (1L << INT) | (1L << HEXADECIMAL))) != 0)) {
{
- setState(125);
+ setState(129);
colunaMatriz();
}
}
- setState(128);
+ setState(132);
match(FECHA_COLCHETES);
- setState(131);
+ setState(135);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==OP_ATRIBUICAO) {
{
- setState(129);
+ setState(133);
match(OP_ATRIBUICAO);
- setState(130);
+ setState(134);
inicializacaoMatriz();
}
}
@@ -607,27 +607,27 @@ public final InicializacaoMatrizContext inicializacaoMatriz() throws Recognition
try {
enterOuterAlt(_localctx, 1);
{
- setState(133);
+ setState(137);
match(ABRE_CHAVES);
- setState(134);
+ setState(138);
inicializacaoArray();
- setState(139);
+ setState(143);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==VIRGULA) {
{
{
- setState(135);
+ setState(139);
match(VIRGULA);
- setState(136);
+ setState(140);
inicializacaoArray();
}
}
- setState(141);
+ setState(145);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(142);
+ setState(146);
match(FECHA_CHAVES);
}
}
@@ -663,7 +663,7 @@ public final LinhaMatrizContext linhaMatriz() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(144);
+ setState(148);
tamanhoArray();
}
}
@@ -699,7 +699,7 @@ public final ColunaMatrizContext colunaMatriz() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(146);
+ setState(150);
tamanhoArray();
}
}
@@ -743,30 +743,30 @@ public final DeclaracaoArrayContext declaracaoArray() throws RecognitionExceptio
try {
enterOuterAlt(_localctx, 1);
{
- setState(148);
+ setState(152);
match(ID);
- setState(149);
+ setState(153);
match(ABRE_COLCHETES);
- setState(151);
+ setState(155);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABRE_PARENTESES) | (1L << OP_NAO) | (1L << OP_SUBTRACAO) | (1L << OP_ADICAO) | (1L << OP_INCREMENTO_UNARIO) | (1L << OP_DECREMENTO_UNARIO) | (1L << OP_NOT_BITWISE) | (1L << LOGICO) | (1L << CARACTER) | (1L << STRING) | (1L << ID) | (1L << REAL) | (1L << INT) | (1L << HEXADECIMAL))) != 0)) {
{
- setState(150);
+ setState(154);
tamanhoArray();
}
}
- setState(153);
+ setState(157);
match(FECHA_COLCHETES);
- setState(156);
+ setState(160);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==OP_ATRIBUICAO) {
{
- setState(154);
+ setState(158);
match(OP_ATRIBUICAO);
- setState(155);
+ setState(159);
inicializacaoArray();
}
}
@@ -808,19 +808,19 @@ public final InicializacaoArrayContext inicializacaoArray() throws RecognitionEx
try {
enterOuterAlt(_localctx, 1);
{
- setState(158);
+ setState(162);
match(ABRE_CHAVES);
- setState(160);
+ setState(164);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABRE_PARENTESES) | (1L << OP_NAO) | (1L << OP_SUBTRACAO) | (1L << OP_ADICAO) | (1L << OP_INCREMENTO_UNARIO) | (1L << OP_DECREMENTO_UNARIO) | (1L << OP_NOT_BITWISE) | (1L << LOGICO) | (1L << CARACTER) | (1L << STRING) | (1L << ID) | (1L << REAL) | (1L << INT) | (1L << HEXADECIMAL))) != 0)) {
{
- setState(159);
+ setState(163);
listaExpressoes();
}
}
- setState(162);
+ setState(166);
match(FECHA_CHAVES);
}
}
@@ -856,7 +856,7 @@ public final TamanhoArrayContext tamanhoArray() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(164);
+ setState(168);
expressao(0);
}
}
@@ -874,14 +874,12 @@ public final TamanhoArrayContext tamanhoArray() throws RecognitionException {
public static class DeclaracaoFuncaoContext extends ParserRuleContext {
public TerminalNode FUNCAO() { return getToken(PortugolParser.FUNCAO, 0); }
public TerminalNode ID() { return getToken(PortugolParser.ID, 0); }
- public TerminalNode ABRE_PARENTESES() { return getToken(PortugolParser.ABRE_PARENTESES, 0); }
- public TerminalNode FECHA_PARENTESES() { return getToken(PortugolParser.FECHA_PARENTESES, 0); }
+ public ParametroFuncaoContext parametroFuncao() {
+ return getRuleContext(ParametroFuncaoContext.class,0);
+ }
public TerminalNode ABRE_CHAVES() { return getToken(PortugolParser.ABRE_CHAVES, 0); }
public TerminalNode FECHA_CHAVES() { return getToken(PortugolParser.FECHA_CHAVES, 0); }
public TerminalNode TIPO() { return getToken(PortugolParser.TIPO, 0); }
- public ListaParametrosContext listaParametros() {
- return getRuleContext(ListaParametrosContext.class,0);
- }
public List comando() {
return getRuleContexts(ComandoContext.class);
}
@@ -906,34 +904,22 @@ public final DeclaracaoFuncaoContext declaracaoFuncao() throws RecognitionExcept
try {
enterOuterAlt(_localctx, 1);
{
- setState(166);
+ setState(170);
match(FUNCAO);
- setState(168);
+ setState(172);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==TIPO) {
{
- setState(167);
+ setState(171);
match(TIPO);
}
}
- setState(170);
+ setState(174);
match(ID);
- setState(171);
- match(ABRE_PARENTESES);
- setState(173);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==TIPO) {
- {
- setState(172);
- listaParametros();
- }
- }
-
setState(175);
- match(FECHA_PARENTESES);
+ parametroFuncao();
setState(176);
match(ABRE_CHAVES);
setState(180);
@@ -965,6 +951,57 @@ public final DeclaracaoFuncaoContext declaracaoFuncao() throws RecognitionExcept
return _localctx;
}
+ public static class ParametroFuncaoContext extends ParserRuleContext {
+ public TerminalNode ABRE_PARENTESES() { return getToken(PortugolParser.ABRE_PARENTESES, 0); }
+ public TerminalNode FECHA_PARENTESES() { return getToken(PortugolParser.FECHA_PARENTESES, 0); }
+ public ListaParametrosContext listaParametros() {
+ return getRuleContext(ListaParametrosContext.class,0);
+ }
+ public ParametroFuncaoContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_parametroFuncao; }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof PortugolVisitor ) return ((PortugolVisitor extends T>)visitor).visitParametroFuncao(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ParametroFuncaoContext parametroFuncao() throws RecognitionException {
+ ParametroFuncaoContext _localctx = new ParametroFuncaoContext(_ctx, getState());
+ enterRule(_localctx, 26, RULE_parametroFuncao);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(185);
+ match(ABRE_PARENTESES);
+ setState(187);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==TIPO) {
+ {
+ setState(186);
+ listaParametros();
+ }
+ }
+
+ setState(189);
+ match(FECHA_PARENTESES);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
public static class ListaParametrosContext extends ParserRuleContext {
public List parametro() {
return getRuleContexts(ParametroContext.class);
@@ -989,26 +1026,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ListaParametrosContext listaParametros() throws RecognitionException {
ListaParametrosContext _localctx = new ListaParametrosContext(_ctx, getState());
- enterRule(_localctx, 26, RULE_listaParametros);
+ enterRule(_localctx, 28, RULE_listaParametros);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(185);
+ setState(191);
parametro();
- setState(190);
+ setState(196);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==VIRGULA) {
{
{
- setState(186);
+ setState(192);
match(VIRGULA);
- setState(187);
+ setState(193);
parametro();
}
}
- setState(192);
+ setState(198);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1048,37 +1085,37 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ParametroContext parametro() throws RecognitionException {
ParametroContext _localctx = new ParametroContext(_ctx, getState());
- enterRule(_localctx, 28, RULE_parametro);
+ enterRule(_localctx, 30, RULE_parametro);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(193);
+ setState(199);
match(TIPO);
- setState(195);
+ setState(201);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==E_COMERCIAL) {
{
- setState(194);
+ setState(200);
match(E_COMERCIAL);
}
}
- setState(197);
+ setState(203);
match(ID);
- setState(200);
+ setState(206);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
case 1:
{
- setState(198);
+ setState(204);
parametroArray();
}
break;
case 2:
{
- setState(199);
+ setState(205);
parametroMatriz();
}
break;
@@ -1112,13 +1149,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ParametroArrayContext parametroArray() throws RecognitionException {
ParametroArrayContext _localctx = new ParametroArrayContext(_ctx, getState());
- enterRule(_localctx, 30, RULE_parametroArray);
+ enterRule(_localctx, 32, RULE_parametroArray);
try {
enterOuterAlt(_localctx, 1);
{
- setState(202);
+ setState(208);
match(ABRE_COLCHETES);
- setState(203);
+ setState(209);
match(FECHA_COLCHETES);
}
}
@@ -1155,17 +1192,17 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ParametroMatrizContext parametroMatriz() throws RecognitionException {
ParametroMatrizContext _localctx = new ParametroMatrizContext(_ctx, getState());
- enterRule(_localctx, 32, RULE_parametroMatriz);
+ enterRule(_localctx, 34, RULE_parametroMatriz);
try {
enterOuterAlt(_localctx, 1);
{
- setState(205);
+ setState(211);
match(ABRE_COLCHETES);
- setState(206);
+ setState(212);
match(FECHA_COLCHETES);
- setState(207);
+ setState(213);
match(ABRE_COLCHETES);
- setState(208);
+ setState(214);
match(FECHA_COLCHETES);
}
}
@@ -1227,85 +1264,85 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ComandoContext comando() throws RecognitionException {
ComandoContext _localctx = new ComandoContext(_ctx, getState());
- enterRule(_localctx, 34, RULE_comando);
+ enterRule(_localctx, 36, RULE_comando);
try {
- setState(221);
+ setState(227);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(210);
+ setState(216);
listaDeclaracoes();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(211);
+ setState(217);
se();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(212);
+ setState(218);
enquanto();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(213);
+ setState(219);
facaEnquanto();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(214);
+ setState(220);
para();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(215);
+ setState(221);
escolha();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
- setState(216);
+ setState(222);
retorne();
}
break;
case 8:
enterOuterAlt(_localctx, 8);
{
- setState(217);
+ setState(223);
pare();
}
break;
case 9:
enterOuterAlt(_localctx, 9);
{
- setState(218);
+ setState(224);
atribuicao();
}
break;
case 10:
enterOuterAlt(_localctx, 10);
{
- setState(219);
+ setState(225);
atribuicaoComposta();
}
break;
case 11:
enterOuterAlt(_localctx, 11);
{
- setState(220);
+ setState(226);
expressao(0);
}
break;
@@ -1343,15 +1380,15 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AtribuicaoContext atribuicao() throws RecognitionException {
AtribuicaoContext _localctx = new AtribuicaoContext(_ctx, getState());
- enterRule(_localctx, 36, RULE_atribuicao);
+ enterRule(_localctx, 38, RULE_atribuicao);
try {
enterOuterAlt(_localctx, 1);
{
- setState(223);
+ setState(229);
expressao(0);
- setState(224);
+ setState(230);
match(OP_ATRIBUICAO);
- setState(225);
+ setState(231);
expressao(0);
}
}
@@ -1440,20 +1477,20 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AtribuicaoCompostaContext atribuicaoComposta() throws RecognitionException {
AtribuicaoCompostaContext _localctx = new AtribuicaoCompostaContext(_ctx, getState());
- enterRule(_localctx, 38, RULE_atribuicaoComposta);
+ enterRule(_localctx, 40, RULE_atribuicaoComposta);
try {
- setState(243);
+ setState(249);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
case 1:
_localctx = new AtribuicaoCompostaSomaContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(227);
+ setState(233);
expressao(0);
- setState(228);
+ setState(234);
match(OP_MAIS_IGUAL);
- setState(229);
+ setState(235);
expressao(0);
}
break;
@@ -1461,11 +1498,11 @@ public final AtribuicaoCompostaContext atribuicaoComposta() throws RecognitionEx
_localctx = new AtribuicaoCompostaSubtracaoContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(231);
+ setState(237);
expressao(0);
- setState(232);
+ setState(238);
match(OP_MENOS_IGUAL);
- setState(233);
+ setState(239);
expressao(0);
}
break;
@@ -1473,11 +1510,11 @@ public final AtribuicaoCompostaContext atribuicaoComposta() throws RecognitionEx
_localctx = new AtribuicaoCompostaMultiplicacaoContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(235);
+ setState(241);
expressao(0);
- setState(236);
+ setState(242);
match(OP_MULTIPLICACAO_IGUAL);
- setState(237);
+ setState(243);
expressao(0);
}
break;
@@ -1485,11 +1522,11 @@ public final AtribuicaoCompostaContext atribuicaoComposta() throws RecognitionEx
_localctx = new AtribuicaoCompostaDivisaoContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(239);
+ setState(245);
expressao(0);
- setState(240);
+ setState(246);
match(OP_DIVISAO_IGUAL);
- setState(241);
+ setState(247);
expressao(0);
}
break;
@@ -1524,18 +1561,18 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final RetorneContext retorne() throws RecognitionException {
RetorneContext _localctx = new RetorneContext(_ctx, getState());
- enterRule(_localctx, 40, RULE_retorne);
+ enterRule(_localctx, 42, RULE_retorne);
try {
enterOuterAlt(_localctx, 1);
{
- setState(245);
+ setState(251);
match(RETORNE);
- setState(247);
+ setState(253);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
case 1:
{
- setState(246);
+ setState(252);
expressao(0);
}
break;
@@ -1560,13 +1597,12 @@ public ExpressaoContext expressao() {
return getRuleContext(ExpressaoContext.class,0);
}
public TerminalNode FECHA_PARENTESES() { return getToken(PortugolParser.FECHA_PARENTESES, 0); }
- public List listaComandos() {
- return getRuleContexts(ListaComandosContext.class);
+ public ListaComandosContext listaComandos() {
+ return getRuleContext(ListaComandosContext.class,0);
}
- public ListaComandosContext listaComandos(int i) {
- return getRuleContext(ListaComandosContext.class,i);
+ public SenaoContext senao() {
+ return getRuleContext(SenaoContext.class,0);
}
- public TerminalNode SENAO() { return getToken(PortugolParser.SENAO, 0); }
public SeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -1580,29 +1616,27 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final SeContext se() throws RecognitionException {
SeContext _localctx = new SeContext(_ctx, getState());
- enterRule(_localctx, 42, RULE_se);
+ enterRule(_localctx, 44, RULE_se);
try {
enterOuterAlt(_localctx, 1);
{
- setState(249);
+ setState(255);
match(SE);
- setState(250);
+ setState(256);
match(ABRE_PARENTESES);
- setState(251);
+ setState(257);
expressao(0);
- setState(252);
+ setState(258);
match(FECHA_PARENTESES);
- setState(253);
+ setState(259);
listaComandos();
- setState(256);
+ setState(261);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
case 1:
{
- setState(254);
- match(SENAO);
- setState(255);
- listaComandos();
+ setState(260);
+ senao();
}
break;
}
@@ -1619,6 +1653,45 @@ public final SeContext se() throws RecognitionException {
return _localctx;
}
+ public static class SenaoContext extends ParserRuleContext {
+ public TerminalNode SENAO() { return getToken(PortugolParser.SENAO, 0); }
+ public ListaComandosContext listaComandos() {
+ return getRuleContext(ListaComandosContext.class,0);
+ }
+ public SenaoContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_senao; }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof PortugolVisitor ) return ((PortugolVisitor extends T>)visitor).visitSenao(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final SenaoContext senao() throws RecognitionException {
+ SenaoContext _localctx = new SenaoContext(_ctx, getState());
+ enterRule(_localctx, 46, RULE_senao);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(263);
+ match(SENAO);
+ setState(264);
+ listaComandos();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
public static class EnquantoContext extends ParserRuleContext {
public TerminalNode ENQUANTO() { return getToken(PortugolParser.ENQUANTO, 0); }
public TerminalNode ABRE_PARENTESES() { return getToken(PortugolParser.ABRE_PARENTESES, 0); }
@@ -1642,19 +1715,19 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final EnquantoContext enquanto() throws RecognitionException {
EnquantoContext _localctx = new EnquantoContext(_ctx, getState());
- enterRule(_localctx, 44, RULE_enquanto);
+ enterRule(_localctx, 48, RULE_enquanto);
try {
enterOuterAlt(_localctx, 1);
{
- setState(258);
+ setState(266);
match(ENQUANTO);
- setState(259);
+ setState(267);
match(ABRE_PARENTESES);
- setState(260);
+ setState(268);
expressao(0);
- setState(261);
+ setState(269);
match(FECHA_PARENTESES);
- setState(262);
+ setState(270);
listaComandos();
}
}
@@ -1693,21 +1766,21 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FacaEnquantoContext facaEnquanto() throws RecognitionException {
FacaEnquantoContext _localctx = new FacaEnquantoContext(_ctx, getState());
- enterRule(_localctx, 46, RULE_facaEnquanto);
+ enterRule(_localctx, 50, RULE_facaEnquanto);
try {
enterOuterAlt(_localctx, 1);
{
- setState(264);
+ setState(272);
match(FACA);
- setState(265);
+ setState(273);
listaComandos();
- setState(266);
+ setState(274);
match(ENQUANTO);
- setState(267);
+ setState(275);
match(ABRE_PARENTESES);
- setState(268);
+ setState(276);
expressao(0);
- setState(269);
+ setState(277);
match(FECHA_PARENTESES);
}
}
@@ -1755,36 +1828,36 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ParaContext para() throws RecognitionException {
ParaContext _localctx = new ParaContext(_ctx, getState());
- enterRule(_localctx, 48, RULE_para);
+ enterRule(_localctx, 52, RULE_para);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(271);
+ setState(279);
match(PARA);
- setState(272);
+ setState(280);
match(ABRE_PARENTESES);
- setState(274);
+ setState(282);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABRE_PARENTESES) | (1L << TIPO) | (1L << CONSTANTE) | (1L << OP_NAO) | (1L << OP_SUBTRACAO) | (1L << OP_ADICAO) | (1L << OP_INCREMENTO_UNARIO) | (1L << OP_DECREMENTO_UNARIO) | (1L << OP_NOT_BITWISE) | (1L << LOGICO) | (1L << CARACTER) | (1L << STRING) | (1L << ID) | (1L << REAL) | (1L << INT) | (1L << HEXADECIMAL))) != 0)) {
{
- setState(273);
+ setState(281);
inicializacaoPara();
}
}
- setState(276);
+ setState(284);
match(PONTOVIRGULA);
- setState(277);
+ setState(285);
condicao();
- setState(278);
+ setState(286);
match(PONTOVIRGULA);
- setState(279);
+ setState(287);
incrementoPara();
- setState(280);
+ setState(288);
match(FECHA_PARENTESES);
- setState(281);
+ setState(289);
listaComandos();
}
}
@@ -1821,33 +1894,33 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ListaComandosContext listaComandos() throws RecognitionException {
ListaComandosContext _localctx = new ListaComandosContext(_ctx, getState());
- enterRule(_localctx, 50, RULE_listaComandos);
+ enterRule(_localctx, 54, RULE_listaComandos);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(292);
+ setState(300);
_errHandler.sync(this);
switch (_input.LA(1)) {
case ABRE_CHAVES:
{
- setState(283);
+ setState(291);
match(ABRE_CHAVES);
- setState(287);
+ setState(295);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABRE_PARENTESES) | (1L << TIPO) | (1L << FACA) | (1L << ENQUANTO) | (1L << PARA) | (1L << SE) | (1L << CONSTANTE) | (1L << ESCOLHA) | (1L << PARE) | (1L << RETORNE) | (1L << OP_NAO) | (1L << OP_SUBTRACAO) | (1L << OP_ADICAO) | (1L << OP_INCREMENTO_UNARIO) | (1L << OP_DECREMENTO_UNARIO) | (1L << OP_NOT_BITWISE) | (1L << LOGICO) | (1L << CARACTER) | (1L << STRING) | (1L << ID) | (1L << REAL) | (1L << INT) | (1L << HEXADECIMAL))) != 0)) {
{
{
- setState(284);
+ setState(292);
comando();
}
}
- setState(289);
+ setState(297);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(290);
+ setState(298);
match(FECHA_CHAVES);
}
break;
@@ -1875,7 +1948,7 @@ public final ListaComandosContext listaComandos() throws RecognitionException {
case INT:
case HEXADECIMAL:
{
- setState(291);
+ setState(299);
comando();
}
break;
@@ -1916,29 +1989,29 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final InicializacaoParaContext inicializacaoPara() throws RecognitionException {
InicializacaoParaContext _localctx = new InicializacaoParaContext(_ctx, getState());
- enterRule(_localctx, 52, RULE_inicializacaoPara);
+ enterRule(_localctx, 56, RULE_inicializacaoPara);
try {
- setState(297);
+ setState(305);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(294);
+ setState(302);
atribuicao();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(295);
+ setState(303);
listaDeclaracoes();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(296);
+ setState(304);
match(ID);
}
break;
@@ -1972,11 +2045,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final CondicaoContext condicao() throws RecognitionException {
CondicaoContext _localctx = new CondicaoContext(_ctx, getState());
- enterRule(_localctx, 54, RULE_condicao);
+ enterRule(_localctx, 58, RULE_condicao);
try {
enterOuterAlt(_localctx, 1);
{
- setState(299);
+ setState(307);
expressao(0);
}
}
@@ -2014,29 +2087,29 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final IncrementoParaContext incrementoPara() throws RecognitionException {
IncrementoParaContext _localctx = new IncrementoParaContext(_ctx, getState());
- enterRule(_localctx, 56, RULE_incrementoPara);
+ enterRule(_localctx, 60, RULE_incrementoPara);
try {
- setState(304);
+ setState(312);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(301);
+ setState(309);
expressao(0);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(302);
+ setState(310);
atribuicaoComposta();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(303);
+ setState(311);
atribuicao();
}
break;
@@ -2081,36 +2154,36 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final EscolhaContext escolha() throws RecognitionException {
EscolhaContext _localctx = new EscolhaContext(_ctx, getState());
- enterRule(_localctx, 58, RULE_escolha);
+ enterRule(_localctx, 62, RULE_escolha);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(306);
+ setState(314);
match(ESCOLHA);
- setState(307);
+ setState(315);
match(ABRE_PARENTESES);
- setState(308);
+ setState(316);
expressao(0);
- setState(309);
+ setState(317);
match(FECHA_PARENTESES);
- setState(310);
+ setState(318);
match(ABRE_CHAVES);
- setState(314);
+ setState(322);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==CASO) {
{
{
- setState(311);
+ setState(319);
caso();
}
}
- setState(316);
+ setState(324);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(317);
+ setState(325);
match(FECHA_CHAVES);
}
}
@@ -2156,20 +2229,20 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final CasoContext caso() throws RecognitionException {
CasoContext _localctx = new CasoContext(_ctx, getState());
- enterRule(_localctx, 60, RULE_caso);
+ enterRule(_localctx, 64, RULE_caso);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(319);
+ setState(327);
match(CASO);
- setState(322);
+ setState(330);
_errHandler.sync(this);
switch (_input.LA(1)) {
case CONTRARIO:
{
- setState(320);
+ setState(328);
match(CONTRARIO);
}
break;
@@ -2188,16 +2261,16 @@ public final CasoContext caso() throws RecognitionException {
case INT:
case HEXADECIMAL:
{
- setState(321);
+ setState(329);
expressao(0);
}
break;
default:
throw new NoViableAltException(this);
}
- setState(324);
+ setState(332);
match(DOISPONTOS);
- setState(339);
+ setState(347);
_errHandler.sync(this);
switch (_input.LA(1)) {
case ABRE_PARENTESES:
@@ -2226,19 +2299,19 @@ public final CasoContext caso() throws RecognitionException {
case INT:
case HEXADECIMAL:
{
- setState(328);
+ setState(336);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,32,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(325);
+ setState(333);
comando();
}
}
}
- setState(330);
+ setState(338);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,32,_ctx);
}
@@ -2246,35 +2319,35 @@ public final CasoContext caso() throws RecognitionException {
break;
case ABRE_CHAVES:
{
- setState(331);
+ setState(339);
match(ABRE_CHAVES);
- setState(335);
+ setState(343);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABRE_PARENTESES) | (1L << TIPO) | (1L << FACA) | (1L << ENQUANTO) | (1L << PARA) | (1L << SE) | (1L << CONSTANTE) | (1L << ESCOLHA) | (1L << PARE) | (1L << RETORNE) | (1L << OP_NAO) | (1L << OP_SUBTRACAO) | (1L << OP_ADICAO) | (1L << OP_INCREMENTO_UNARIO) | (1L << OP_DECREMENTO_UNARIO) | (1L << OP_NOT_BITWISE) | (1L << LOGICO) | (1L << CARACTER) | (1L << STRING) | (1L << ID) | (1L << REAL) | (1L << INT) | (1L << HEXADECIMAL))) != 0)) {
{
{
- setState(332);
+ setState(340);
comando();
}
}
- setState(337);
+ setState(345);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(338);
+ setState(346);
match(FECHA_CHAVES);
}
break;
default:
throw new NoViableAltException(this);
}
- setState(342);
+ setState(350);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==PARE) {
{
- setState(341);
+ setState(349);
pare();
}
}
@@ -2307,11 +2380,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PareContext pare() throws RecognitionException {
PareContext _localctx = new PareContext(_ctx, getState());
- enterRule(_localctx, 62, RULE_pare);
+ enterRule(_localctx, 66, RULE_pare);
try {
enterOuterAlt(_localctx, 1);
{
- setState(344);
+ setState(352);
match(PARE);
}
}
@@ -2345,15 +2418,15 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final IndiceArrayContext indiceArray() throws RecognitionException {
IndiceArrayContext _localctx = new IndiceArrayContext(_ctx, getState());
- enterRule(_localctx, 64, RULE_indiceArray);
+ enterRule(_localctx, 68, RULE_indiceArray);
try {
enterOuterAlt(_localctx, 1);
{
- setState(346);
+ setState(354);
match(ABRE_COLCHETES);
- setState(347);
+ setState(355);
expressao(0);
- setState(348);
+ setState(356);
match(FECHA_COLCHETES);
}
}
@@ -2892,14 +2965,14 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
int _parentState = getState();
ExpressaoContext _localctx = new ExpressaoContext(_ctx, _parentState);
ExpressaoContext _prevctx = _localctx;
- int _startState = 66;
- enterRecursionRule(_localctx, 66, RULE_expressao, _p);
+ int _startState = 70;
+ enterRecursionRule(_localctx, 70, RULE_expressao, _p);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(426);
+ setState(434);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) {
case 1:
@@ -2908,31 +2981,31 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_ctx = _localctx;
_prevctx = _localctx;
- setState(352);
+ setState(360);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) {
case 1:
{
- setState(351);
+ setState(359);
escopoBiblioteca();
}
break;
}
- setState(354);
+ setState(362);
match(ID);
- setState(355);
+ setState(363);
match(ABRE_PARENTESES);
- setState(357);
+ setState(365);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABRE_PARENTESES) | (1L << OP_NAO) | (1L << OP_SUBTRACAO) | (1L << OP_ADICAO) | (1L << OP_INCREMENTO_UNARIO) | (1L << OP_DECREMENTO_UNARIO) | (1L << OP_NOT_BITWISE) | (1L << LOGICO) | (1L << CARACTER) | (1L << STRING) | (1L << ID) | (1L << REAL) | (1L << INT) | (1L << HEXADECIMAL))) != 0)) {
{
- setState(356);
+ setState(364);
listaExpressoes();
}
}
- setState(359);
+ setState(367);
match(FECHA_PARENTESES);
}
break;
@@ -2941,19 +3014,19 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new ReferenciaArrayContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(361);
+ setState(369);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) {
case 1:
{
- setState(360);
+ setState(368);
escopoBiblioteca();
}
break;
}
- setState(363);
+ setState(371);
match(ID);
- setState(364);
+ setState(372);
indiceArray();
}
break;
@@ -2962,26 +3035,26 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new ReferenciaMatrizContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(366);
+ setState(374);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) {
case 1:
{
- setState(365);
+ setState(373);
escopoBiblioteca();
}
break;
}
- setState(368);
+ setState(376);
match(ID);
- setState(369);
+ setState(377);
indiceArray();
- setState(371);
+ setState(379);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,40,_ctx) ) {
case 1:
{
- setState(370);
+ setState(378);
indiceArray();
}
break;
@@ -2993,9 +3066,9 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new MenosUnarioContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(373);
+ setState(381);
match(OP_SUBTRACAO);
- setState(374);
+ setState(382);
expressao(33);
}
break;
@@ -3004,9 +3077,9 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new MaisUnarioContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(375);
+ setState(383);
match(OP_ADICAO);
- setState(376);
+ setState(384);
expressao(32);
}
break;
@@ -3015,9 +3088,9 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new NegacaoContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(377);
+ setState(385);
match(OP_NAO);
- setState(378);
+ setState(386);
expressao(31);
}
break;
@@ -3026,9 +3099,9 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new NegacaoBitwiseContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(379);
+ setState(387);
match(OP_NOT_BITWISE);
- setState(380);
+ setState(388);
expressao(30);
}
break;
@@ -3037,21 +3110,21 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new IncrementoUnarioPosfixadoContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(381);
+ setState(389);
match(ID);
- setState(386);
+ setState(394);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==ABRE_COLCHETES) {
{
- setState(382);
+ setState(390);
indiceArray();
- setState(384);
+ setState(392);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==ABRE_COLCHETES) {
{
- setState(383);
+ setState(391);
indiceArray();
}
}
@@ -3059,7 +3132,7 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
}
}
- setState(388);
+ setState(396);
match(OP_INCREMENTO_UNARIO);
}
break;
@@ -3068,21 +3141,21 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new DecrementoUnarioPosfixadoContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(389);
+ setState(397);
match(ID);
- setState(394);
+ setState(402);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==ABRE_COLCHETES) {
{
- setState(390);
+ setState(398);
indiceArray();
- setState(392);
+ setState(400);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==ABRE_COLCHETES) {
{
- setState(391);
+ setState(399);
indiceArray();
}
}
@@ -3090,7 +3163,7 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
}
}
- setState(396);
+ setState(404);
match(OP_DECREMENTO_UNARIO);
}
break;
@@ -3099,23 +3172,23 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new IncrementoUnarioPrefixadoContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(397);
+ setState(405);
match(OP_INCREMENTO_UNARIO);
- setState(398);
+ setState(406);
match(ID);
- setState(403);
+ setState(411);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,46,_ctx) ) {
case 1:
{
- setState(399);
+ setState(407);
indiceArray();
- setState(401);
+ setState(409);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
case 1:
{
- setState(400);
+ setState(408);
indiceArray();
}
break;
@@ -3130,23 +3203,23 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new DecrementoUnarioPrefixadoContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(405);
+ setState(413);
match(OP_DECREMENTO_UNARIO);
- setState(406);
+ setState(414);
match(ID);
- setState(411);
+ setState(419);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) {
case 1:
{
- setState(407);
+ setState(415);
indiceArray();
- setState(409);
+ setState(417);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) {
case 1:
{
- setState(408);
+ setState(416);
indiceArray();
}
break;
@@ -3161,17 +3234,17 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new ReferenciaParaVariavelContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(414);
+ setState(422);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,49,_ctx) ) {
case 1:
{
- setState(413);
+ setState(421);
escopoBiblioteca();
}
break;
}
- setState(416);
+ setState(424);
match(ID);
}
break;
@@ -3180,7 +3253,7 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new NumeroInteiroContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(417);
+ setState(425);
_la = _input.LA(1);
if ( !(_la==INT || _la==HEXADECIMAL) ) {
_errHandler.recoverInline(this);
@@ -3197,7 +3270,7 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new NumeroRealContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(418);
+ setState(426);
match(REAL);
}
break;
@@ -3206,7 +3279,7 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new ValorLogicoContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(419);
+ setState(427);
match(LOGICO);
}
break;
@@ -3215,7 +3288,7 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new CaracterContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(420);
+ setState(428);
match(CARACTER);
}
break;
@@ -3224,7 +3297,7 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new StringContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(421);
+ setState(429);
match(STRING);
}
break;
@@ -3233,17 +3306,17 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
_localctx = new ExpressaoEntreParentesesContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(422);
+ setState(430);
match(ABRE_PARENTESES);
- setState(423);
+ setState(431);
expressao(0);
- setState(424);
+ setState(432);
match(FECHA_PARENTESES);
}
break;
}
_ctx.stop = _input.LT(-1);
- setState(484);
+ setState(492);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,52,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -3251,18 +3324,18 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(482);
+ setState(490);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,51,_ctx) ) {
case 1:
{
_localctx = new MultiplicacaoContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(428);
+ setState(436);
if (!(precpred(_ctx, 25))) throw new FailedPredicateException(this, "precpred(_ctx, 25)");
- setState(429);
+ setState(437);
match(OP_MULTIPLICACAO);
- setState(430);
+ setState(438);
expressao(26);
}
break;
@@ -3270,11 +3343,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new DivisaoContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(431);
+ setState(439);
if (!(precpred(_ctx, 24))) throw new FailedPredicateException(this, "precpred(_ctx, 24)");
- setState(432);
+ setState(440);
match(OP_DIVISAO);
- setState(433);
+ setState(441);
expressao(25);
}
break;
@@ -3282,11 +3355,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new ModuloContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(434);
+ setState(442);
if (!(precpred(_ctx, 23))) throw new FailedPredicateException(this, "precpred(_ctx, 23)");
- setState(435);
+ setState(443);
match(OP_MOD);
- setState(436);
+ setState(444);
expressao(24);
}
break;
@@ -3294,11 +3367,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new AdicaoContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(437);
+ setState(445);
if (!(precpred(_ctx, 22))) throw new FailedPredicateException(this, "precpred(_ctx, 22)");
- setState(438);
+ setState(446);
match(OP_ADICAO);
- setState(439);
+ setState(447);
expressao(23);
}
break;
@@ -3306,11 +3379,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new SubtracaoContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(440);
+ setState(448);
if (!(precpred(_ctx, 21))) throw new FailedPredicateException(this, "precpred(_ctx, 21)");
- setState(441);
+ setState(449);
match(OP_SUBTRACAO);
- setState(442);
+ setState(450);
expressao(22);
}
break;
@@ -3318,11 +3391,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoIgualdadeContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(443);
+ setState(451);
if (!(precpred(_ctx, 20))) throw new FailedPredicateException(this, "precpred(_ctx, 20)");
- setState(444);
+ setState(452);
match(OP_IGUALDADE);
- setState(445);
+ setState(453);
expressao(21);
}
break;
@@ -3330,11 +3403,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoDiferencaContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(446);
+ setState(454);
if (!(precpred(_ctx, 19))) throw new FailedPredicateException(this, "precpred(_ctx, 19)");
- setState(447);
+ setState(455);
match(OP_DIFERENCA);
- setState(448);
+ setState(456);
expressao(20);
}
break;
@@ -3342,11 +3415,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoMaiorContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(449);
+ setState(457);
if (!(precpred(_ctx, 18))) throw new FailedPredicateException(this, "precpred(_ctx, 18)");
- setState(450);
+ setState(458);
match(OP_MAIOR);
- setState(451);
+ setState(459);
expressao(19);
}
break;
@@ -3354,11 +3427,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoMenorContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(452);
+ setState(460);
if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)");
- setState(453);
+ setState(461);
match(OP_MENOR);
- setState(454);
+ setState(462);
expressao(18);
}
break;
@@ -3366,11 +3439,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoMenorIgualContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(455);
+ setState(463);
if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)");
- setState(456);
+ setState(464);
match(OP_MENOR_IGUAL);
- setState(457);
+ setState(465);
expressao(17);
}
break;
@@ -3378,11 +3451,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoMaiorIgualContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(458);
+ setState(466);
if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)");
- setState(459);
+ setState(467);
match(OP_MAIOR_IGUAL);
- setState(460);
+ setState(468);
expressao(16);
}
break;
@@ -3390,11 +3463,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoELogicoContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(461);
+ setState(469);
if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)");
- setState(462);
+ setState(470);
match(OP_E_LOGICO);
- setState(463);
+ setState(471);
expressao(15);
}
break;
@@ -3402,11 +3475,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoOuLogicoContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(464);
+ setState(472);
if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)");
- setState(465);
+ setState(473);
match(OP_OU_LOGICO);
- setState(466);
+ setState(474);
expressao(14);
}
break;
@@ -3414,11 +3487,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoXorContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(467);
+ setState(475);
if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
- setState(468);
+ setState(476);
match(OP_XOR);
- setState(469);
+ setState(477);
expressao(13);
}
break;
@@ -3426,11 +3499,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoShiftLeftContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(470);
+ setState(478);
if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
- setState(471);
+ setState(479);
match(OP_SHIFT_LEFT);
- setState(472);
+ setState(480);
expressao(12);
}
break;
@@ -3438,11 +3511,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoShiftRightContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(473);
+ setState(481);
if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
- setState(474);
+ setState(482);
match(OP_SHIFT_RIGHT);
- setState(475);
+ setState(483);
expressao(11);
}
break;
@@ -3450,11 +3523,11 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoAndBitwiseContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(476);
+ setState(484);
if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
- setState(477);
+ setState(485);
match(E_COMERCIAL);
- setState(478);
+ setState(486);
expressao(10);
}
break;
@@ -3462,18 +3535,18 @@ private ExpressaoContext expressao(int _p) throws RecognitionException {
{
_localctx = new OperacaoOrBitwiseContext(new ExpressaoContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expressao);
- setState(479);
+ setState(487);
if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
- setState(480);
+ setState(488);
match(OP_OU_BITWISE);
- setState(481);
+ setState(489);
expressao(9);
}
break;
}
}
}
- setState(486);
+ setState(494);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,52,_ctx);
}
@@ -3526,66 +3599,66 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ListaExpressoesContext listaExpressoes() throws RecognitionException {
ListaExpressoesContext _localctx = new ListaExpressoesContext(_ctx, getState());
- enterRule(_localctx, 68, RULE_listaExpressoes);
+ enterRule(_localctx, 72, RULE_listaExpressoes);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(490);
+ setState(498);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) {
case 1:
{
- setState(487);
+ setState(495);
expressao(0);
}
break;
case 2:
{
- setState(488);
+ setState(496);
atribuicaoComposta();
}
break;
case 3:
{
- setState(489);
+ setState(497);
atribuicao();
}
break;
}
- setState(500);
+ setState(508);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==VIRGULA) {
{
{
- setState(492);
+ setState(500);
match(VIRGULA);
- setState(496);
+ setState(504);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) {
case 1:
{
- setState(493);
+ setState(501);
expressao(0);
}
break;
case 2:
{
- setState(494);
+ setState(502);
atribuicaoComposta();
}
break;
case 3:
{
- setState(495);
+ setState(503);
atribuicao();
}
break;
}
}
}
- setState(502);
+ setState(510);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -3618,14 +3691,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final EscopoBibliotecaContext escopoBiblioteca() throws RecognitionException {
EscopoBibliotecaContext _localctx = new EscopoBibliotecaContext(_ctx, getState());
- enterRule(_localctx, 70, RULE_escopoBiblioteca);
+ enterRule(_localctx, 74, RULE_escopoBiblioteca);
try {
enterOuterAlt(_localctx, 1);
{
{
- setState(503);
+ setState(511);
match(ID);
- setState(504);
+ setState(512);
match(PONTO);
}
}
@@ -3643,7 +3716,7 @@ public final EscopoBibliotecaContext escopoBiblioteca() throws RecognitionExcept
public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
switch (ruleIndex) {
- case 33:
+ case 35:
return expressao_sempred((ExpressaoContext)_localctx, predIndex);
}
return true;
@@ -3691,196 +3764,198 @@ private boolean expressao_sempred(ExpressaoContext _localctx, int predIndex) {
}
public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3D\u01fd\4\2\t\2\4"+
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3D\u0205\4\2\t\2\4"+
"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
"\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
- "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\3\2\3\2\3\2\7\2N\n\2\f\2\16\2Q\13\2\3\2"+
- "\3\2\7\2U\n\2\f\2\16\2X\13\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\5\3a\n\3\3\4"+
- "\5\4d\n\4\3\4\3\4\3\4\3\4\7\4j\n\4\f\4\16\4m\13\4\3\5\3\5\3\5\5\5r\n\5"+
- "\3\6\3\6\3\6\5\6w\n\6\3\7\3\7\3\7\5\7|\n\7\3\7\3\7\3\7\5\7\u0081\n\7\3"+
- "\7\3\7\3\7\5\7\u0086\n\7\3\b\3\b\3\b\3\b\7\b\u008c\n\b\f\b\16\b\u008f"+
- "\13\b\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\13\5\13\u009a\n\13\3\13\3\13"+
- "\3\13\5\13\u009f\n\13\3\f\3\f\5\f\u00a3\n\f\3\f\3\f\3\r\3\r\3\16\3\16"+
- "\5\16\u00ab\n\16\3\16\3\16\3\16\5\16\u00b0\n\16\3\16\3\16\3\16\7\16\u00b5"+
- "\n\16\f\16\16\16\u00b8\13\16\3\16\3\16\3\17\3\17\3\17\7\17\u00bf\n\17"+
- "\f\17\16\17\u00c2\13\17\3\20\3\20\5\20\u00c6\n\20\3\20\3\20\3\20\5\20"+
- "\u00cb\n\20\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23"+
- "\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u00e0\n\23\3\24\3\24\3\24\3\24"+
- "\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25"+
- "\3\25\3\25\5\25\u00f6\n\25\3\26\3\26\5\26\u00fa\n\26\3\27\3\27\3\27\3"+
- "\27\3\27\3\27\3\27\5\27\u0103\n\27\3\30\3\30\3\30\3\30\3\30\3\30\3\31"+
- "\3\31\3\31\3\31\3\31\3\31\3\31\3\32\3\32\3\32\5\32\u0115\n\32\3\32\3\32"+
- "\3\32\3\32\3\32\3\32\3\32\3\33\3\33\7\33\u0120\n\33\f\33\16\33\u0123\13"+
- "\33\3\33\3\33\5\33\u0127\n\33\3\34\3\34\3\34\5\34\u012c\n\34\3\35\3\35"+
- "\3\36\3\36\3\36\5\36\u0133\n\36\3\37\3\37\3\37\3\37\3\37\3\37\7\37\u013b"+
- "\n\37\f\37\16\37\u013e\13\37\3\37\3\37\3 \3 \3 \5 \u0145\n \3 \3 \7 \u0149"+
- "\n \f \16 \u014c\13 \3 \3 \7 \u0150\n \f \16 \u0153\13 \3 \5 \u0156\n"+
- " \3 \5 \u0159\n \3!\3!\3\"\3\"\3\"\3\"\3#\3#\5#\u0163\n#\3#\3#\3#\5#\u0168"+
- "\n#\3#\3#\5#\u016c\n#\3#\3#\3#\5#\u0171\n#\3#\3#\3#\5#\u0176\n#\3#\3#"+
- "\3#\3#\3#\3#\3#\3#\3#\3#\3#\5#\u0183\n#\5#\u0185\n#\3#\3#\3#\3#\5#\u018b"+
- "\n#\5#\u018d\n#\3#\3#\3#\3#\3#\5#\u0194\n#\5#\u0196\n#\3#\3#\3#\3#\5#"+
- "\u019c\n#\5#\u019e\n#\3#\5#\u01a1\n#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\5#"+
- "\u01ad\n#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#"+
- "\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#"+
- "\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\7#\u01e5\n#\f#\16#\u01e8\13#\3$\3$\3"+
- "$\5$\u01ed\n$\3$\3$\3$\3$\5$\u01f3\n$\7$\u01f5\n$\f$\16$\u01f8\13$\3%"+
- "\3%\3%\3%\2\3D&\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62"+
- "\64\668:<>@BDFH\2\3\3\2<=\2\u0241\2J\3\2\2\2\4[\3\2\2\2\6c\3\2\2\2\bq"+
- "\3\2\2\2\ns\3\2\2\2\fx\3\2\2\2\16\u0087\3\2\2\2\20\u0092\3\2\2\2\22\u0094"+
- "\3\2\2\2\24\u0096\3\2\2\2\26\u00a0\3\2\2\2\30\u00a6\3\2\2\2\32\u00a8\3"+
- "\2\2\2\34\u00bb\3\2\2\2\36\u00c3\3\2\2\2 \u00cc\3\2\2\2\"\u00cf\3\2\2"+
- "\2$\u00df\3\2\2\2&\u00e1\3\2\2\2(\u00f5\3\2\2\2*\u00f7\3\2\2\2,\u00fb"+
- "\3\2\2\2.\u0104\3\2\2\2\60\u010a\3\2\2\2\62\u0111\3\2\2\2\64\u0126\3\2"+
- "\2\2\66\u012b\3\2\2\28\u012d\3\2\2\2:\u0132\3\2\2\2<\u0134\3\2\2\2>\u0141"+
- "\3\2\2\2@\u015a\3\2\2\2B\u015c\3\2\2\2D\u01ac\3\2\2\2F\u01ec\3\2\2\2H"+
- "\u01f9\3\2\2\2JK\7\21\2\2KO\7\7\2\2LN\5\4\3\2ML\3\2\2\2NQ\3\2\2\2OM\3"+
- "\2\2\2OP\3\2\2\2PV\3\2\2\2QO\3\2\2\2RU\5\32\16\2SU\5\6\4\2TR\3\2\2\2T"+
- "S\3\2\2\2UX\3\2\2\2VT\3\2\2\2VW\3\2\2\2WY\3\2\2\2XV\3\2\2\2YZ\7\b\2\2"+
- "Z\3\3\2\2\2[\\\7\27\2\2\\]\7\30\2\2]`\7:\2\2^_\7/\2\2_a\7:\2\2`^\3\2\2"+
- "\2`a\3\2\2\2a\5\3\2\2\2bd\7\17\2\2cb\3\2\2\2cd\3\2\2\2de\3\2\2\2ef\7\t"+
- "\2\2fk\5\b\5\2gh\7B\2\2hj\5\b\5\2ig\3\2\2\2jm\3\2\2\2ki\3\2\2\2kl\3\2"+
- "\2\2l\7\3\2\2\2mk\3\2\2\2nr\5\n\6\2or\5\24\13\2pr\5\f\7\2qn\3\2\2\2qo"+
- "\3\2\2\2qp\3\2\2\2r\t\3\2\2\2sv\7:\2\2tu\7!\2\2uw\5D#\2vt\3\2\2\2vw\3"+
- "\2\2\2w\13\3\2\2\2xy\7:\2\2y{\7\5\2\2z|\5\20\t\2{z\3\2\2\2{|\3\2\2\2|"+
- "}\3\2\2\2}~\7\6\2\2~\u0080\7\5\2\2\177\u0081\5\22\n\2\u0080\177\3\2\2"+
- "\2\u0080\u0081\3\2\2\2\u0081\u0082\3\2\2\2\u0082\u0085\7\6\2\2\u0083\u0084"+
- "\7!\2\2\u0084\u0086\5\16\b\2\u0085\u0083\3\2\2\2\u0085\u0086\3\2\2\2\u0086"+
- "\r\3\2\2\2\u0087\u0088\7\7\2\2\u0088\u008d\5\26\f\2\u0089\u008a\7B\2\2"+
- "\u008a\u008c\5\26\f\2\u008b\u0089\3\2\2\2\u008c\u008f\3\2\2\2\u008d\u008b"+
- "\3\2\2\2\u008d\u008e\3\2\2\2\u008e\u0090\3\2\2\2\u008f\u008d\3\2\2\2\u0090"+
- "\u0091\7\b\2\2\u0091\17\3\2\2\2\u0092\u0093\5\30\r\2\u0093\21\3\2\2\2"+
- "\u0094\u0095\5\30\r\2\u0095\23\3\2\2\2\u0096\u0097\7:\2\2\u0097\u0099"+
- "\7\5\2\2\u0098\u009a\5\30\r\2\u0099\u0098\3\2\2\2\u0099\u009a\3\2\2\2"+
- "\u009a\u009b\3\2\2\2\u009b\u009e\7\6\2\2\u009c\u009d\7!\2\2\u009d\u009f"+
- "\5\26\f\2\u009e\u009c\3\2\2\2\u009e\u009f\3\2\2\2\u009f\25\3\2\2\2\u00a0"+
- "\u00a2\7\7\2\2\u00a1\u00a3\5F$\2\u00a2\u00a1\3\2\2\2\u00a2\u00a3\3\2\2"+
- "\2\u00a3\u00a4\3\2\2\2\u00a4\u00a5\7\b\2\2\u00a5\27\3\2\2\2\u00a6\u00a7"+
- "\5D#\2\u00a7\31\3\2\2\2\u00a8\u00aa\7\20\2\2\u00a9\u00ab\7\t\2\2\u00aa"+
- "\u00a9\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab\u00ac\3\2\2\2\u00ac\u00ad\7:"+
- "\2\2\u00ad\u00af\7\3\2\2\u00ae\u00b0\5\34\17\2\u00af\u00ae\3\2\2\2\u00af"+
- "\u00b0\3\2\2\2\u00b0\u00b1\3\2\2\2\u00b1\u00b2\7\4\2\2\u00b2\u00b6\7\7"+
- "\2\2\u00b3\u00b5\5$\23\2\u00b4\u00b3\3\2\2\2\u00b5\u00b8\3\2\2\2\u00b6"+
+ "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\3\2\3\2\3\2\7\2R\n\2\f\2\16"+
+ "\2U\13\2\3\2\3\2\7\2Y\n\2\f\2\16\2\\\13\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3"+
+ "\5\3e\n\3\3\4\5\4h\n\4\3\4\3\4\3\4\3\4\7\4n\n\4\f\4\16\4q\13\4\3\5\3\5"+
+ "\3\5\5\5v\n\5\3\6\3\6\3\6\5\6{\n\6\3\7\3\7\3\7\5\7\u0080\n\7\3\7\3\7\3"+
+ "\7\5\7\u0085\n\7\3\7\3\7\3\7\5\7\u008a\n\7\3\b\3\b\3\b\3\b\7\b\u0090\n"+
+ "\b\f\b\16\b\u0093\13\b\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\13\5\13\u009e"+
+ "\n\13\3\13\3\13\3\13\5\13\u00a3\n\13\3\f\3\f\5\f\u00a7\n\f\3\f\3\f\3\r"+
+ "\3\r\3\16\3\16\5\16\u00af\n\16\3\16\3\16\3\16\3\16\7\16\u00b5\n\16\f\16"+
+ "\16\16\u00b8\13\16\3\16\3\16\3\17\3\17\5\17\u00be\n\17\3\17\3\17\3\20"+
+ "\3\20\3\20\7\20\u00c5\n\20\f\20\16\20\u00c8\13\20\3\21\3\21\5\21\u00cc"+
+ "\n\21\3\21\3\21\3\21\5\21\u00d1\n\21\3\22\3\22\3\22\3\23\3\23\3\23\3\23"+
+ "\3\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\5\24\u00e6"+
+ "\n\24\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26"+
+ "\3\26\3\26\3\26\3\26\3\26\3\26\3\26\5\26\u00fc\n\26\3\27\3\27\5\27\u0100"+
+ "\n\27\3\30\3\30\3\30\3\30\3\30\3\30\5\30\u0108\n\30\3\31\3\31\3\31\3\32"+
+ "\3\32\3\32\3\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34"+
+ "\3\34\5\34\u011d\n\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\7\35"+
+ "\u0128\n\35\f\35\16\35\u012b\13\35\3\35\3\35\5\35\u012f\n\35\3\36\3\36"+
+ "\3\36\5\36\u0134\n\36\3\37\3\37\3 \3 \3 \5 \u013b\n \3!\3!\3!\3!\3!\3"+
+ "!\7!\u0143\n!\f!\16!\u0146\13!\3!\3!\3\"\3\"\3\"\5\"\u014d\n\"\3\"\3\""+
+ "\7\"\u0151\n\"\f\"\16\"\u0154\13\"\3\"\3\"\7\"\u0158\n\"\f\"\16\"\u015b"+
+ "\13\"\3\"\5\"\u015e\n\"\3\"\5\"\u0161\n\"\3#\3#\3$\3$\3$\3$\3%\3%\5%\u016b"+
+ "\n%\3%\3%\3%\5%\u0170\n%\3%\3%\5%\u0174\n%\3%\3%\3%\5%\u0179\n%\3%\3%"+
+ "\3%\5%\u017e\n%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\5%\u018b\n%\5%\u018d"+
+ "\n%\3%\3%\3%\3%\5%\u0193\n%\5%\u0195\n%\3%\3%\3%\3%\3%\5%\u019c\n%\5%"+
+ "\u019e\n%\3%\3%\3%\3%\5%\u01a4\n%\5%\u01a6\n%\3%\5%\u01a9\n%\3%\3%\3%"+
+ "\3%\3%\3%\3%\3%\3%\3%\5%\u01b5\n%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%"+
+ "\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%"+
+ "\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\7%\u01ed\n%"+
+ "\f%\16%\u01f0\13%\3&\3&\3&\5&\u01f5\n&\3&\3&\3&\3&\5&\u01fb\n&\7&\u01fd"+
+ "\n&\f&\16&\u0200\13&\3\'\3\'\3\'\3\'\2\3H(\2\4\6\b\n\f\16\20\22\24\26"+
+ "\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJL\2\3\3\2<=\2\u0247\2N\3\2"+
+ "\2\2\4_\3\2\2\2\6g\3\2\2\2\bu\3\2\2\2\nw\3\2\2\2\f|\3\2\2\2\16\u008b\3"+
+ "\2\2\2\20\u0096\3\2\2\2\22\u0098\3\2\2\2\24\u009a\3\2\2\2\26\u00a4\3\2"+
+ "\2\2\30\u00aa\3\2\2\2\32\u00ac\3\2\2\2\34\u00bb\3\2\2\2\36\u00c1\3\2\2"+
+ "\2 \u00c9\3\2\2\2\"\u00d2\3\2\2\2$\u00d5\3\2\2\2&\u00e5\3\2\2\2(\u00e7"+
+ "\3\2\2\2*\u00fb\3\2\2\2,\u00fd\3\2\2\2.\u0101\3\2\2\2\60\u0109\3\2\2\2"+
+ "\62\u010c\3\2\2\2\64\u0112\3\2\2\2\66\u0119\3\2\2\28\u012e\3\2\2\2:\u0133"+
+ "\3\2\2\2<\u0135\3\2\2\2>\u013a\3\2\2\2@\u013c\3\2\2\2B\u0149\3\2\2\2D"+
+ "\u0162\3\2\2\2F\u0164\3\2\2\2H\u01b4\3\2\2\2J\u01f4\3\2\2\2L\u0201\3\2"+
+ "\2\2NO\7\21\2\2OS\7\7\2\2PR\5\4\3\2QP\3\2\2\2RU\3\2\2\2SQ\3\2\2\2ST\3"+
+ "\2\2\2TZ\3\2\2\2US\3\2\2\2VY\5\32\16\2WY\5\6\4\2XV\3\2\2\2XW\3\2\2\2Y"+
+ "\\\3\2\2\2ZX\3\2\2\2Z[\3\2\2\2[]\3\2\2\2\\Z\3\2\2\2]^\7\b\2\2^\3\3\2\2"+
+ "\2_`\7\27\2\2`a\7\30\2\2ad\7:\2\2bc\7/\2\2ce\7:\2\2db\3\2\2\2de\3\2\2"+
+ "\2e\5\3\2\2\2fh\7\17\2\2gf\3\2\2\2gh\3\2\2\2hi\3\2\2\2ij\7\t\2\2jo\5\b"+
+ "\5\2kl\7B\2\2ln\5\b\5\2mk\3\2\2\2nq\3\2\2\2om\3\2\2\2op\3\2\2\2p\7\3\2"+
+ "\2\2qo\3\2\2\2rv\5\n\6\2sv\5\24\13\2tv\5\f\7\2ur\3\2\2\2us\3\2\2\2ut\3"+
+ "\2\2\2v\t\3\2\2\2wz\7:\2\2xy\7!\2\2y{\5H%\2zx\3\2\2\2z{\3\2\2\2{\13\3"+
+ "\2\2\2|}\7:\2\2}\177\7\5\2\2~\u0080\5\20\t\2\177~\3\2\2\2\177\u0080\3"+
+ "\2\2\2\u0080\u0081\3\2\2\2\u0081\u0082\7\6\2\2\u0082\u0084\7\5\2\2\u0083"+
+ "\u0085\5\22\n\2\u0084\u0083\3\2\2\2\u0084\u0085\3\2\2\2\u0085\u0086\3"+
+ "\2\2\2\u0086\u0089\7\6\2\2\u0087\u0088\7!\2\2\u0088\u008a\5\16\b\2\u0089"+
+ "\u0087\3\2\2\2\u0089\u008a\3\2\2\2\u008a\r\3\2\2\2\u008b\u008c\7\7\2\2"+
+ "\u008c\u0091\5\26\f\2\u008d\u008e\7B\2\2\u008e\u0090\5\26\f\2\u008f\u008d"+
+ "\3\2\2\2\u0090\u0093\3\2\2\2\u0091\u008f\3\2\2\2\u0091\u0092\3\2\2\2\u0092"+
+ "\u0094\3\2\2\2\u0093\u0091\3\2\2\2\u0094\u0095\7\b\2\2\u0095\17\3\2\2"+
+ "\2\u0096\u0097\5\30\r\2\u0097\21\3\2\2\2\u0098\u0099\5\30\r\2\u0099\23"+
+ "\3\2\2\2\u009a\u009b\7:\2\2\u009b\u009d\7\5\2\2\u009c\u009e\5\30\r\2\u009d"+
+ "\u009c\3\2\2\2\u009d\u009e\3\2\2\2\u009e\u009f\3\2\2\2\u009f\u00a2\7\6"+
+ "\2\2\u00a0\u00a1\7!\2\2\u00a1\u00a3\5\26\f\2\u00a2\u00a0\3\2\2\2\u00a2"+
+ "\u00a3\3\2\2\2\u00a3\25\3\2\2\2\u00a4\u00a6\7\7\2\2\u00a5\u00a7\5J&\2"+
+ "\u00a6\u00a5\3\2\2\2\u00a6\u00a7\3\2\2\2\u00a7\u00a8\3\2\2\2\u00a8\u00a9"+
+ "\7\b\2\2\u00a9\27\3\2\2\2\u00aa\u00ab\5H%\2\u00ab\31\3\2\2\2\u00ac\u00ae"+
+ "\7\20\2\2\u00ad\u00af\7\t\2\2\u00ae\u00ad\3\2\2\2\u00ae\u00af\3\2\2\2"+
+ "\u00af\u00b0\3\2\2\2\u00b0\u00b1\7:\2\2\u00b1\u00b2\5\34\17\2\u00b2\u00b6"+
+ "\7\7\2\2\u00b3\u00b5\5&\24\2\u00b4\u00b3\3\2\2\2\u00b5\u00b8\3\2\2\2\u00b6"+
"\u00b4\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7\u00b9\3\2\2\2\u00b8\u00b6\3\2"+
- "\2\2\u00b9\u00ba\7\b\2\2\u00ba\33\3\2\2\2\u00bb\u00c0\5\36\20\2\u00bc"+
- "\u00bd\7B\2\2\u00bd\u00bf\5\36\20\2\u00be\u00bc\3\2\2\2\u00bf\u00c2\3"+
- "\2\2\2\u00c0\u00be\3\2\2\2\u00c0\u00c1\3\2\2\2\u00c1\35\3\2\2\2\u00c2"+
- "\u00c0\3\2\2\2\u00c3\u00c5\7\t\2\2\u00c4\u00c6\7\60\2\2\u00c5\u00c4\3"+
- "\2\2\2\u00c5\u00c6\3\2\2\2\u00c6\u00c7\3\2\2\2\u00c7\u00ca\7:\2\2\u00c8"+
- "\u00cb\5 \21\2\u00c9\u00cb\5\"\22\2\u00ca\u00c8\3\2\2\2\u00ca\u00c9\3"+
- "\2\2\2\u00ca\u00cb\3\2\2\2\u00cb\37\3\2\2\2\u00cc\u00cd\7\5\2\2\u00cd"+
- "\u00ce\7\6\2\2\u00ce!\3\2\2\2\u00cf\u00d0\7\5\2\2\u00d0\u00d1\7\6\2\2"+
- "\u00d1\u00d2\7\5\2\2\u00d2\u00d3\7\6\2\2\u00d3#\3\2\2\2\u00d4\u00e0\5"+
- "\6\4\2\u00d5\u00e0\5,\27\2\u00d6\u00e0\5.\30\2\u00d7\u00e0\5\60\31\2\u00d8"+
- "\u00e0\5\62\32\2\u00d9\u00e0\5<\37\2\u00da\u00e0\5*\26\2\u00db\u00e0\5"+
- "@!\2\u00dc\u00e0\5&\24\2\u00dd\u00e0\5(\25\2\u00de\u00e0\5D#\2\u00df\u00d4"+
- "\3\2\2\2\u00df\u00d5\3\2\2\2\u00df\u00d6\3\2\2\2\u00df\u00d7\3\2\2\2\u00df"+
- "\u00d8\3\2\2\2\u00df\u00d9\3\2\2\2\u00df\u00da\3\2\2\2\u00df\u00db\3\2"+
- "\2\2\u00df\u00dc\3\2\2\2\u00df\u00dd\3\2\2\2\u00df\u00de\3\2\2\2\u00e0"+
- "%\3\2\2\2\u00e1\u00e2\5D#\2\u00e2\u00e3\7!\2\2\u00e3\u00e4\5D#\2\u00e4"+
- "\'\3\2\2\2\u00e5\u00e6\5D#\2\u00e6\u00e7\7\61\2\2\u00e7\u00e8\5D#\2\u00e8"+
- "\u00f6\3\2\2\2\u00e9\u00ea\5D#\2\u00ea\u00eb\7\62\2\2\u00eb\u00ec\5D#"+
- "\2\u00ec\u00f6\3\2\2\2\u00ed\u00ee\5D#\2\u00ee\u00ef\7\63\2\2\u00ef\u00f0"+
- "\5D#\2\u00f0\u00f6\3\2\2\2\u00f1\u00f2\5D#\2\u00f2\u00f3\7\64\2\2\u00f3"+
- "\u00f4\5D#\2\u00f4\u00f6\3\2\2\2\u00f5\u00e5\3\2\2\2\u00f5\u00e9\3\2\2"+
- "\2\u00f5\u00ed\3\2\2\2\u00f5\u00f1\3\2\2\2\u00f6)\3\2\2\2\u00f7\u00f9"+
- "\7\26\2\2\u00f8\u00fa\5D#\2\u00f9\u00f8\3\2\2\2\u00f9\u00fa\3\2\2\2\u00fa"+
- "+\3\2\2\2\u00fb\u00fc\7\r\2\2\u00fc\u00fd\7\3\2\2\u00fd\u00fe\5D#\2\u00fe"+
- "\u00ff\7\4\2\2\u00ff\u0102\5\64\33\2\u0100\u0101\7\16\2\2\u0101\u0103"+
- "\5\64\33\2\u0102\u0100\3\2\2\2\u0102\u0103\3\2\2\2\u0103-\3\2\2\2\u0104"+
- "\u0105\7\13\2\2\u0105\u0106\7\3\2\2\u0106\u0107\5D#\2\u0107\u0108\7\4"+
- "\2\2\u0108\u0109\5\64\33\2\u0109/\3\2\2\2\u010a\u010b\7\n\2\2\u010b\u010c"+
- "\5\64\33\2\u010c\u010d\7\13\2\2\u010d\u010e\7\3\2\2\u010e\u010f\5D#\2"+
- "\u010f\u0110\7\4\2\2\u0110\61\3\2\2\2\u0111\u0112\7\f\2\2\u0112\u0114"+
- "\7\3\2\2\u0113\u0115\5\66\34\2\u0114\u0113\3\2\2\2\u0114\u0115\3\2\2\2"+
- "\u0115\u0116\3\2\2\2\u0116\u0117\7C\2\2\u0117\u0118\58\35\2\u0118\u0119"+
- "\7C\2\2\u0119\u011a\5:\36\2\u011a\u011b\7\4\2\2\u011b\u011c\5\64\33\2"+
- "\u011c\63\3\2\2\2\u011d\u0121\7\7\2\2\u011e\u0120\5$\23\2\u011f\u011e"+
- "\3\2\2\2\u0120\u0123\3\2\2\2\u0121\u011f\3\2\2\2\u0121\u0122\3\2\2\2\u0122"+
- "\u0124\3\2\2\2\u0123\u0121\3\2\2\2\u0124\u0127\7\b\2\2\u0125\u0127\5$"+
- "\23\2\u0126\u011d\3\2\2\2\u0126\u0125\3\2\2\2\u0127\65\3\2\2\2\u0128\u012c"+
- "\5&\24\2\u0129\u012c\5\6\4\2\u012a\u012c\7:\2\2\u012b\u0128\3\2\2\2\u012b"+
- "\u0129\3\2\2\2\u012b\u012a\3\2\2\2\u012c\67\3\2\2\2\u012d\u012e\5D#\2"+
- "\u012e9\3\2\2\2\u012f\u0133\5D#\2\u0130\u0133\5(\25\2\u0131\u0133\5&\24"+
- "\2\u0132\u012f\3\2\2\2\u0132\u0130\3\2\2\2\u0132\u0131\3\2\2\2\u0133;"+
- "\3\2\2\2\u0134\u0135\7\22\2\2\u0135\u0136\7\3\2\2\u0136\u0137\5D#\2\u0137"+
- "\u0138\7\4\2\2\u0138\u013c\7\7\2\2\u0139\u013b\5> \2\u013a\u0139\3\2\2"+
- "\2\u013b\u013e\3\2\2\2\u013c\u013a\3\2\2\2\u013c\u013d\3\2\2\2\u013d\u013f"+
- "\3\2\2\2\u013e\u013c\3\2\2\2\u013f\u0140\7\b\2\2\u0140=\3\2\2\2\u0141"+
- "\u0144\7\23\2\2\u0142\u0145\7\24\2\2\u0143\u0145\5D#\2\u0144\u0142\3\2"+
- "\2\2\u0144\u0143\3\2\2\2\u0145\u0146\3\2\2\2\u0146\u0155\7D\2\2\u0147"+
- "\u0149\5$\23\2\u0148\u0147\3\2\2\2\u0149\u014c\3\2\2\2\u014a\u0148\3\2"+
- "\2\2\u014a\u014b\3\2\2\2\u014b\u0156\3\2\2\2\u014c\u014a\3\2\2\2\u014d"+
- "\u0151\7\7\2\2\u014e\u0150\5$\23\2\u014f\u014e\3\2\2\2\u0150\u0153\3\2"+
- "\2\2\u0151\u014f\3\2\2\2\u0151\u0152\3\2\2\2\u0152\u0154\3\2\2\2\u0153"+
- "\u0151\3\2\2\2\u0154\u0156\7\b\2\2\u0155\u014a\3\2\2\2\u0155\u014d\3\2"+
- "\2\2\u0156\u0158\3\2\2\2\u0157\u0159\5@!\2\u0158\u0157\3\2\2\2\u0158\u0159"+
- "\3\2\2\2\u0159?\3\2\2\2\u015a\u015b\7\25\2\2\u015bA\3\2\2\2\u015c\u015d"+
- "\7\5\2\2\u015d\u015e\5D#\2\u015e\u015f\7\6\2\2\u015fC\3\2\2\2\u0160\u0162"+
- "\b#\1\2\u0161\u0163\5H%\2\u0162\u0161\3\2\2\2\u0162\u0163\3\2\2\2\u0163"+
- "\u0164\3\2\2\2\u0164\u0165\7:\2\2\u0165\u0167\7\3\2\2\u0166\u0168\5F$"+
- "\2\u0167\u0166\3\2\2\2\u0167\u0168\3\2\2\2\u0168\u0169\3\2\2\2\u0169\u01ad"+
- "\7\4\2\2\u016a\u016c\5H%\2\u016b\u016a\3\2\2\2\u016b\u016c\3\2\2\2\u016c"+
- "\u016d\3\2\2\2\u016d\u016e\7:\2\2\u016e\u01ad\5B\"\2\u016f\u0171\5H%\2"+
- "\u0170\u016f\3\2\2\2\u0170\u0171\3\2\2\2\u0171\u0172\3\2\2\2\u0172\u0173"+
- "\7:\2\2\u0173\u0175\5B\"\2\u0174\u0176\5B\"\2\u0175\u0174\3\2\2\2\u0175"+
- "\u0176\3\2\2\2\u0176\u01ad\3\2\2\2\u0177\u0178\7\34\2\2\u0178\u01ad\5"+
- "D##\u0179\u017a\7\35\2\2\u017a\u01ad\5D#\"\u017b\u017c\7\31\2\2\u017c"+
- "\u01ad\5D#!\u017d\u017e\7.\2\2\u017e\u01ad\5D# \u017f\u0184\7:\2\2\u0180"+
- "\u0182\5B\"\2\u0181\u0183\5B\"\2\u0182\u0181\3\2\2\2\u0182\u0183\3\2\2"+
- "\2\u0183\u0185\3\2\2\2\u0184\u0180\3\2\2\2\u0184\u0185\3\2\2\2\u0185\u0186"+
- "\3\2\2\2\u0186\u01ad\7(\2\2\u0187\u018c\7:\2\2\u0188\u018a\5B\"\2\u0189"+
- "\u018b\5B\"\2\u018a\u0189\3\2\2\2\u018a\u018b\3\2\2\2\u018b\u018d\3\2"+
- "\2\2\u018c\u0188\3\2\2\2\u018c\u018d\3\2\2\2\u018d\u018e\3\2\2\2\u018e"+
- "\u01ad\7)\2\2\u018f\u0190\7(\2\2\u0190\u0195\7:\2\2\u0191\u0193\5B\"\2"+
- "\u0192\u0194\5B\"\2\u0193\u0192\3\2\2\2\u0193\u0194\3\2\2\2\u0194\u0196"+
- "\3\2\2\2\u0195\u0191\3\2\2\2\u0195\u0196\3\2\2\2\u0196\u01ad\3\2\2\2\u0197"+
- "\u0198\7)\2\2\u0198\u019d\7:\2\2\u0199\u019b\5B\"\2\u019a\u019c\5B\"\2"+
- "\u019b\u019a\3\2\2\2\u019b\u019c\3\2\2\2\u019c\u019e\3\2\2\2\u019d\u0199"+
- "\3\2\2\2\u019d\u019e\3\2\2\2\u019e\u01ad\3\2\2\2\u019f\u01a1\5H%\2\u01a0"+
- "\u019f\3\2\2\2\u01a0\u01a1\3\2\2\2\u01a1\u01a2\3\2\2\2\u01a2\u01ad\7:"+
- "\2\2\u01a3\u01ad\t\2\2\2\u01a4\u01ad\7;\2\2\u01a5\u01ad\7\65\2\2\u01a6"+
- "\u01ad\78\2\2\u01a7\u01ad\79\2\2\u01a8\u01a9\7\3\2\2\u01a9\u01aa\5D#\2"+
- "\u01aa\u01ab\7\4\2\2\u01ab\u01ad\3\2\2\2\u01ac\u0160\3\2\2\2\u01ac\u016b"+
- "\3\2\2\2\u01ac\u0170\3\2\2\2\u01ac\u0177\3\2\2\2\u01ac\u0179\3\2\2\2\u01ac"+
- "\u017b\3\2\2\2\u01ac\u017d\3\2\2\2\u01ac\u017f\3\2\2\2\u01ac\u0187\3\2"+
- "\2\2\u01ac\u018f\3\2\2\2\u01ac\u0197\3\2\2\2\u01ac\u01a0\3\2\2\2\u01ac"+
- "\u01a3\3\2\2\2\u01ac\u01a4\3\2\2\2\u01ac\u01a5\3\2\2\2\u01ac\u01a6\3\2"+
- "\2\2\u01ac\u01a7\3\2\2\2\u01ac\u01a8\3\2\2\2\u01ad\u01e6\3\2\2\2\u01ae"+
- "\u01af\f\33\2\2\u01af\u01b0\7\36\2\2\u01b0\u01e5\5D#\34\u01b1\u01b2\f"+
- "\32\2\2\u01b2\u01b3\7\37\2\2\u01b3\u01e5\5D#\33\u01b4\u01b5\f\31\2\2\u01b5"+
- "\u01b6\7 \2\2\u01b6\u01e5\5D#\32\u01b7\u01b8\f\30\2\2\u01b8\u01b9\7\35"+
- "\2\2\u01b9\u01e5\5D#\31\u01ba\u01bb\f\27\2\2\u01bb\u01bc\7\34\2\2\u01bc"+
- "\u01e5\5D#\30\u01bd\u01be\f\26\2\2\u01be\u01bf\7\"\2\2\u01bf\u01e5\5D"+
- "#\27\u01c0\u01c1\f\25\2\2\u01c1\u01c2\7#\2\2\u01c2\u01e5\5D#\26\u01c3"+
- "\u01c4\f\24\2\2\u01c4\u01c5\7$\2\2\u01c5\u01e5\5D#\25\u01c6\u01c7\f\23"+
- "\2\2\u01c7\u01c8\7%\2\2\u01c8\u01e5\5D#\24\u01c9\u01ca\f\22\2\2\u01ca"+
- "\u01cb\7&\2\2\u01cb\u01e5\5D#\23\u01cc\u01cd\f\21\2\2\u01cd\u01ce\7\'"+
- "\2\2\u01ce\u01e5\5D#\22\u01cf\u01d0\f\20\2\2\u01d0\u01d1\7\32\2\2\u01d1"+
- "\u01e5\5D#\21\u01d2\u01d3\f\17\2\2\u01d3\u01d4\7\33\2\2\u01d4\u01e5\5"+
- "D#\20\u01d5\u01d6\f\16\2\2\u01d6\u01d7\7,\2\2\u01d7\u01e5\5D#\17\u01d8"+
- "\u01d9\f\r\2\2\u01d9\u01da\7*\2\2\u01da\u01e5\5D#\16\u01db\u01dc\f\f\2"+
- "\2\u01dc\u01dd\7+\2\2\u01dd\u01e5\5D#\r\u01de\u01df\f\13\2\2\u01df\u01e0"+
- "\7\60\2\2\u01e0\u01e5\5D#\f\u01e1\u01e2\f\n\2\2\u01e2\u01e3\7-\2\2\u01e3"+
- "\u01e5\5D#\13\u01e4\u01ae\3\2\2\2\u01e4\u01b1\3\2\2\2\u01e4\u01b4\3\2"+
- "\2\2\u01e4\u01b7\3\2\2\2\u01e4\u01ba\3\2\2\2\u01e4\u01bd\3\2\2\2\u01e4"+
- "\u01c0\3\2\2\2\u01e4\u01c3\3\2\2\2\u01e4\u01c6\3\2\2\2\u01e4\u01c9\3\2"+
- "\2\2\u01e4\u01cc\3\2\2\2\u01e4\u01cf\3\2\2\2\u01e4\u01d2\3\2\2\2\u01e4"+
- "\u01d5\3\2\2\2\u01e4\u01d8\3\2\2\2\u01e4\u01db\3\2\2\2\u01e4\u01de\3\2"+
- "\2\2\u01e4\u01e1\3\2\2\2\u01e5\u01e8\3\2\2\2\u01e6\u01e4\3\2\2\2\u01e6"+
- "\u01e7\3\2\2\2\u01e7E\3\2\2\2\u01e8\u01e6\3\2\2\2\u01e9\u01ed\5D#\2\u01ea"+
- "\u01ed\5(\25\2\u01eb\u01ed\5&\24\2\u01ec\u01e9\3\2\2\2\u01ec\u01ea\3\2"+
- "\2\2\u01ec\u01eb\3\2\2\2\u01ed\u01f6\3\2\2\2\u01ee\u01f2\7B\2\2\u01ef"+
- "\u01f3\5D#\2\u01f0\u01f3\5(\25\2\u01f1\u01f3\5&\24\2\u01f2\u01ef\3\2\2"+
- "\2\u01f2\u01f0\3\2\2\2\u01f2\u01f1\3\2\2\2\u01f3\u01f5\3\2\2\2\u01f4\u01ee"+
- "\3\2\2\2\u01f5\u01f8\3\2\2\2\u01f6\u01f4\3\2\2\2\u01f6\u01f7\3\2\2\2\u01f7"+
- "G\3\2\2\2\u01f8\u01f6\3\2\2\2\u01f9\u01fa\7:\2\2\u01fa\u01fb\7A\2\2\u01fb"+
- "I\3\2\2\2:OTV`ckqv{\u0080\u0085\u008d\u0099\u009e\u00a2\u00aa\u00af\u00b6"+
- "\u00c0\u00c5\u00ca\u00df\u00f5\u00f9\u0102\u0114\u0121\u0126\u012b\u0132"+
- "\u013c\u0144\u014a\u0151\u0155\u0158\u0162\u0167\u016b\u0170\u0175\u0182"+
- "\u0184\u018a\u018c\u0193\u0195\u019b\u019d\u01a0\u01ac\u01e4\u01e6\u01ec"+
- "\u01f2\u01f6";
+ "\2\2\u00b9\u00ba\7\b\2\2\u00ba\33\3\2\2\2\u00bb\u00bd\7\3\2\2\u00bc\u00be"+
+ "\5\36\20\2\u00bd\u00bc\3\2\2\2\u00bd\u00be\3\2\2\2\u00be\u00bf\3\2\2\2"+
+ "\u00bf\u00c0\7\4\2\2\u00c0\35\3\2\2\2\u00c1\u00c6\5 \21\2\u00c2\u00c3"+
+ "\7B\2\2\u00c3\u00c5\5 \21\2\u00c4\u00c2\3\2\2\2\u00c5\u00c8\3\2\2\2\u00c6"+
+ "\u00c4\3\2\2\2\u00c6\u00c7\3\2\2\2\u00c7\37\3\2\2\2\u00c8\u00c6\3\2\2"+
+ "\2\u00c9\u00cb\7\t\2\2\u00ca\u00cc\7\60\2\2\u00cb\u00ca\3\2\2\2\u00cb"+
+ "\u00cc\3\2\2\2\u00cc\u00cd\3\2\2\2\u00cd\u00d0\7:\2\2\u00ce\u00d1\5\""+
+ "\22\2\u00cf\u00d1\5$\23\2\u00d0\u00ce\3\2\2\2\u00d0\u00cf\3\2\2\2\u00d0"+
+ "\u00d1\3\2\2\2\u00d1!\3\2\2\2\u00d2\u00d3\7\5\2\2\u00d3\u00d4\7\6\2\2"+
+ "\u00d4#\3\2\2\2\u00d5\u00d6\7\5\2\2\u00d6\u00d7\7\6\2\2\u00d7\u00d8\7"+
+ "\5\2\2\u00d8\u00d9\7\6\2\2\u00d9%\3\2\2\2\u00da\u00e6\5\6\4\2\u00db\u00e6"+
+ "\5.\30\2\u00dc\u00e6\5\62\32\2\u00dd\u00e6\5\64\33\2\u00de\u00e6\5\66"+
+ "\34\2\u00df\u00e6\5@!\2\u00e0\u00e6\5,\27\2\u00e1\u00e6\5D#\2\u00e2\u00e6"+
+ "\5(\25\2\u00e3\u00e6\5*\26\2\u00e4\u00e6\5H%\2\u00e5\u00da\3\2\2\2\u00e5"+
+ "\u00db\3\2\2\2\u00e5\u00dc\3\2\2\2\u00e5\u00dd\3\2\2\2\u00e5\u00de\3\2"+
+ "\2\2\u00e5\u00df\3\2\2\2\u00e5\u00e0\3\2\2\2\u00e5\u00e1\3\2\2\2\u00e5"+
+ "\u00e2\3\2\2\2\u00e5\u00e3\3\2\2\2\u00e5\u00e4\3\2\2\2\u00e6\'\3\2\2\2"+
+ "\u00e7\u00e8\5H%\2\u00e8\u00e9\7!\2\2\u00e9\u00ea\5H%\2\u00ea)\3\2\2\2"+
+ "\u00eb\u00ec\5H%\2\u00ec\u00ed\7\61\2\2\u00ed\u00ee\5H%\2\u00ee\u00fc"+
+ "\3\2\2\2\u00ef\u00f0\5H%\2\u00f0\u00f1\7\62\2\2\u00f1\u00f2\5H%\2\u00f2"+
+ "\u00fc\3\2\2\2\u00f3\u00f4\5H%\2\u00f4\u00f5\7\63\2\2\u00f5\u00f6\5H%"+
+ "\2\u00f6\u00fc\3\2\2\2\u00f7\u00f8\5H%\2\u00f8\u00f9\7\64\2\2\u00f9\u00fa"+
+ "\5H%\2\u00fa\u00fc\3\2\2\2\u00fb\u00eb\3\2\2\2\u00fb\u00ef\3\2\2\2\u00fb"+
+ "\u00f3\3\2\2\2\u00fb\u00f7\3\2\2\2\u00fc+\3\2\2\2\u00fd\u00ff\7\26\2\2"+
+ "\u00fe\u0100\5H%\2\u00ff\u00fe\3\2\2\2\u00ff\u0100\3\2\2\2\u0100-\3\2"+
+ "\2\2\u0101\u0102\7\r\2\2\u0102\u0103\7\3\2\2\u0103\u0104\5H%\2\u0104\u0105"+
+ "\7\4\2\2\u0105\u0107\58\35\2\u0106\u0108\5\60\31\2\u0107\u0106\3\2\2\2"+
+ "\u0107\u0108\3\2\2\2\u0108/\3\2\2\2\u0109\u010a\7\16\2\2\u010a\u010b\5"+
+ "8\35\2\u010b\61\3\2\2\2\u010c\u010d\7\13\2\2\u010d\u010e\7\3\2\2\u010e"+
+ "\u010f\5H%\2\u010f\u0110\7\4\2\2\u0110\u0111\58\35\2\u0111\63\3\2\2\2"+
+ "\u0112\u0113\7\n\2\2\u0113\u0114\58\35\2\u0114\u0115\7\13\2\2\u0115\u0116"+
+ "\7\3\2\2\u0116\u0117\5H%\2\u0117\u0118\7\4\2\2\u0118\65\3\2\2\2\u0119"+
+ "\u011a\7\f\2\2\u011a\u011c\7\3\2\2\u011b\u011d\5:\36\2\u011c\u011b\3\2"+
+ "\2\2\u011c\u011d\3\2\2\2\u011d\u011e\3\2\2\2\u011e\u011f\7C\2\2\u011f"+
+ "\u0120\5<\37\2\u0120\u0121\7C\2\2\u0121\u0122\5> \2\u0122\u0123\7\4\2"+
+ "\2\u0123\u0124\58\35\2\u0124\67\3\2\2\2\u0125\u0129\7\7\2\2\u0126\u0128"+
+ "\5&\24\2\u0127\u0126\3\2\2\2\u0128\u012b\3\2\2\2\u0129\u0127\3\2\2\2\u0129"+
+ "\u012a\3\2\2\2\u012a\u012c\3\2\2\2\u012b\u0129\3\2\2\2\u012c\u012f\7\b"+
+ "\2\2\u012d\u012f\5&\24\2\u012e\u0125\3\2\2\2\u012e\u012d\3\2\2\2\u012f"+
+ "9\3\2\2\2\u0130\u0134\5(\25\2\u0131\u0134\5\6\4\2\u0132\u0134\7:\2\2\u0133"+
+ "\u0130\3\2\2\2\u0133\u0131\3\2\2\2\u0133\u0132\3\2\2\2\u0134;\3\2\2\2"+
+ "\u0135\u0136\5H%\2\u0136=\3\2\2\2\u0137\u013b\5H%\2\u0138\u013b\5*\26"+
+ "\2\u0139\u013b\5(\25\2\u013a\u0137\3\2\2\2\u013a\u0138\3\2\2\2\u013a\u0139"+
+ "\3\2\2\2\u013b?\3\2\2\2\u013c\u013d\7\22\2\2\u013d\u013e\7\3\2\2\u013e"+
+ "\u013f\5H%\2\u013f\u0140\7\4\2\2\u0140\u0144\7\7\2\2\u0141\u0143\5B\""+
+ "\2\u0142\u0141\3\2\2\2\u0143\u0146\3\2\2\2\u0144\u0142\3\2\2\2\u0144\u0145"+
+ "\3\2\2\2\u0145\u0147\3\2\2\2\u0146\u0144\3\2\2\2\u0147\u0148\7\b\2\2\u0148"+
+ "A\3\2\2\2\u0149\u014c\7\23\2\2\u014a\u014d\7\24\2\2\u014b\u014d\5H%\2"+
+ "\u014c\u014a\3\2\2\2\u014c\u014b\3\2\2\2\u014d\u014e\3\2\2\2\u014e\u015d"+
+ "\7D\2\2\u014f\u0151\5&\24\2\u0150\u014f\3\2\2\2\u0151\u0154\3\2\2\2\u0152"+
+ "\u0150\3\2\2\2\u0152\u0153\3\2\2\2\u0153\u015e\3\2\2\2\u0154\u0152\3\2"+
+ "\2\2\u0155\u0159\7\7\2\2\u0156\u0158\5&\24\2\u0157\u0156\3\2\2\2\u0158"+
+ "\u015b\3\2\2\2\u0159\u0157\3\2\2\2\u0159\u015a\3\2\2\2\u015a\u015c\3\2"+
+ "\2\2\u015b\u0159\3\2\2\2\u015c\u015e\7\b\2\2\u015d\u0152\3\2\2\2\u015d"+
+ "\u0155\3\2\2\2\u015e\u0160\3\2\2\2\u015f\u0161\5D#\2\u0160\u015f\3\2\2"+
+ "\2\u0160\u0161\3\2\2\2\u0161C\3\2\2\2\u0162\u0163\7\25\2\2\u0163E\3\2"+
+ "\2\2\u0164\u0165\7\5\2\2\u0165\u0166\5H%\2\u0166\u0167\7\6\2\2\u0167G"+
+ "\3\2\2\2\u0168\u016a\b%\1\2\u0169\u016b\5L\'\2\u016a\u0169\3\2\2\2\u016a"+
+ "\u016b\3\2\2\2\u016b\u016c\3\2\2\2\u016c\u016d\7:\2\2\u016d\u016f\7\3"+
+ "\2\2\u016e\u0170\5J&\2\u016f\u016e\3\2\2\2\u016f\u0170\3\2\2\2\u0170\u0171"+
+ "\3\2\2\2\u0171\u01b5\7\4\2\2\u0172\u0174\5L\'\2\u0173\u0172\3\2\2\2\u0173"+
+ "\u0174\3\2\2\2\u0174\u0175\3\2\2\2\u0175\u0176\7:\2\2\u0176\u01b5\5F$"+
+ "\2\u0177\u0179\5L\'\2\u0178\u0177\3\2\2\2\u0178\u0179\3\2\2\2\u0179\u017a"+
+ "\3\2\2\2\u017a\u017b\7:\2\2\u017b\u017d\5F$\2\u017c\u017e\5F$\2\u017d"+
+ "\u017c\3\2\2\2\u017d\u017e\3\2\2\2\u017e\u01b5\3\2\2\2\u017f\u0180\7\34"+
+ "\2\2\u0180\u01b5\5H%#\u0181\u0182\7\35\2\2\u0182\u01b5\5H%\"\u0183\u0184"+
+ "\7\31\2\2\u0184\u01b5\5H%!\u0185\u0186\7.\2\2\u0186\u01b5\5H% \u0187\u018c"+
+ "\7:\2\2\u0188\u018a\5F$\2\u0189\u018b\5F$\2\u018a\u0189\3\2\2\2\u018a"+
+ "\u018b\3\2\2\2\u018b\u018d\3\2\2\2\u018c\u0188\3\2\2\2\u018c\u018d\3\2"+
+ "\2\2\u018d\u018e\3\2\2\2\u018e\u01b5\7(\2\2\u018f\u0194\7:\2\2\u0190\u0192"+
+ "\5F$\2\u0191\u0193\5F$\2\u0192\u0191\3\2\2\2\u0192\u0193\3\2\2\2\u0193"+
+ "\u0195\3\2\2\2\u0194\u0190\3\2\2\2\u0194\u0195\3\2\2\2\u0195\u0196\3\2"+
+ "\2\2\u0196\u01b5\7)\2\2\u0197\u0198\7(\2\2\u0198\u019d\7:\2\2\u0199\u019b"+
+ "\5F$\2\u019a\u019c\5F$\2\u019b\u019a\3\2\2\2\u019b\u019c\3\2\2\2\u019c"+
+ "\u019e\3\2\2\2\u019d\u0199\3\2\2\2\u019d\u019e\3\2\2\2\u019e\u01b5\3\2"+
+ "\2\2\u019f\u01a0\7)\2\2\u01a0\u01a5\7:\2\2\u01a1\u01a3\5F$\2\u01a2\u01a4"+
+ "\5F$\2\u01a3\u01a2\3\2\2\2\u01a3\u01a4\3\2\2\2\u01a4\u01a6\3\2\2\2\u01a5"+
+ "\u01a1\3\2\2\2\u01a5\u01a6\3\2\2\2\u01a6\u01b5\3\2\2\2\u01a7\u01a9\5L"+
+ "\'\2\u01a8\u01a7\3\2\2\2\u01a8\u01a9\3\2\2\2\u01a9\u01aa\3\2\2\2\u01aa"+
+ "\u01b5\7:\2\2\u01ab\u01b5\t\2\2\2\u01ac\u01b5\7;\2\2\u01ad\u01b5\7\65"+
+ "\2\2\u01ae\u01b5\78\2\2\u01af\u01b5\79\2\2\u01b0\u01b1\7\3\2\2\u01b1\u01b2"+
+ "\5H%\2\u01b2\u01b3\7\4\2\2\u01b3\u01b5\3\2\2\2\u01b4\u0168\3\2\2\2\u01b4"+
+ "\u0173\3\2\2\2\u01b4\u0178\3\2\2\2\u01b4\u017f\3\2\2\2\u01b4\u0181\3\2"+
+ "\2\2\u01b4\u0183\3\2\2\2\u01b4\u0185\3\2\2\2\u01b4\u0187\3\2\2\2\u01b4"+
+ "\u018f\3\2\2\2\u01b4\u0197\3\2\2\2\u01b4\u019f\3\2\2\2\u01b4\u01a8\3\2"+
+ "\2\2\u01b4\u01ab\3\2\2\2\u01b4\u01ac\3\2\2\2\u01b4\u01ad\3\2\2\2\u01b4"+
+ "\u01ae\3\2\2\2\u01b4\u01af\3\2\2\2\u01b4\u01b0\3\2\2\2\u01b5\u01ee\3\2"+
+ "\2\2\u01b6\u01b7\f\33\2\2\u01b7\u01b8\7\36\2\2\u01b8\u01ed\5H%\34\u01b9"+
+ "\u01ba\f\32\2\2\u01ba\u01bb\7\37\2\2\u01bb\u01ed\5H%\33\u01bc\u01bd\f"+
+ "\31\2\2\u01bd\u01be\7 \2\2\u01be\u01ed\5H%\32\u01bf\u01c0\f\30\2\2\u01c0"+
+ "\u01c1\7\35\2\2\u01c1\u01ed\5H%\31\u01c2\u01c3\f\27\2\2\u01c3\u01c4\7"+
+ "\34\2\2\u01c4\u01ed\5H%\30\u01c5\u01c6\f\26\2\2\u01c6\u01c7\7\"\2\2\u01c7"+
+ "\u01ed\5H%\27\u01c8\u01c9\f\25\2\2\u01c9\u01ca\7#\2\2\u01ca\u01ed\5H%"+
+ "\26\u01cb\u01cc\f\24\2\2\u01cc\u01cd\7$\2\2\u01cd\u01ed\5H%\25\u01ce\u01cf"+
+ "\f\23\2\2\u01cf\u01d0\7%\2\2\u01d0\u01ed\5H%\24\u01d1\u01d2\f\22\2\2\u01d2"+
+ "\u01d3\7&\2\2\u01d3\u01ed\5H%\23\u01d4\u01d5\f\21\2\2\u01d5\u01d6\7\'"+
+ "\2\2\u01d6\u01ed\5H%\22\u01d7\u01d8\f\20\2\2\u01d8\u01d9\7\32\2\2\u01d9"+
+ "\u01ed\5H%\21\u01da\u01db\f\17\2\2\u01db\u01dc\7\33\2\2\u01dc\u01ed\5"+
+ "H%\20\u01dd\u01de\f\16\2\2\u01de\u01df\7,\2\2\u01df\u01ed\5H%\17\u01e0"+
+ "\u01e1\f\r\2\2\u01e1\u01e2\7*\2\2\u01e2\u01ed\5H%\16\u01e3\u01e4\f\f\2"+
+ "\2\u01e4\u01e5\7+\2\2\u01e5\u01ed\5H%\r\u01e6\u01e7\f\13\2\2\u01e7\u01e8"+
+ "\7\60\2\2\u01e8\u01ed\5H%\f\u01e9\u01ea\f\n\2\2\u01ea\u01eb\7-\2\2\u01eb"+
+ "\u01ed\5H%\13\u01ec\u01b6\3\2\2\2\u01ec\u01b9\3\2\2\2\u01ec\u01bc\3\2"+
+ "\2\2\u01ec\u01bf\3\2\2\2\u01ec\u01c2\3\2\2\2\u01ec\u01c5\3\2\2\2\u01ec"+
+ "\u01c8\3\2\2\2\u01ec\u01cb\3\2\2\2\u01ec\u01ce\3\2\2\2\u01ec\u01d1\3\2"+
+ "\2\2\u01ec\u01d4\3\2\2\2\u01ec\u01d7\3\2\2\2\u01ec\u01da\3\2\2\2\u01ec"+
+ "\u01dd\3\2\2\2\u01ec\u01e0\3\2\2\2\u01ec\u01e3\3\2\2\2\u01ec\u01e6\3\2"+
+ "\2\2\u01ec\u01e9\3\2\2\2\u01ed\u01f0\3\2\2\2\u01ee\u01ec\3\2\2\2\u01ee"+
+ "\u01ef\3\2\2\2\u01efI\3\2\2\2\u01f0\u01ee\3\2\2\2\u01f1\u01f5\5H%\2\u01f2"+
+ "\u01f5\5*\26\2\u01f3\u01f5\5(\25\2\u01f4\u01f1\3\2\2\2\u01f4\u01f2\3\2"+
+ "\2\2\u01f4\u01f3\3\2\2\2\u01f5\u01fe\3\2\2\2\u01f6\u01fa\7B\2\2\u01f7"+
+ "\u01fb\5H%\2\u01f8\u01fb\5*\26\2\u01f9\u01fb\5(\25\2\u01fa\u01f7\3\2\2"+
+ "\2\u01fa\u01f8\3\2\2\2\u01fa\u01f9\3\2\2\2\u01fb\u01fd\3\2\2\2\u01fc\u01f6"+
+ "\3\2\2\2\u01fd\u0200\3\2\2\2\u01fe\u01fc\3\2\2\2\u01fe\u01ff\3\2\2\2\u01ff"+
+ "K\3\2\2\2\u0200\u01fe\3\2\2\2\u0201\u0202\7:\2\2\u0202\u0203\7A\2\2\u0203"+
+ "M\3\2\2\2:SXZdgouz\177\u0084\u0089\u0091\u009d\u00a2\u00a6\u00ae\u00b6"+
+ "\u00bd\u00c6\u00cb\u00d0\u00e5\u00fb\u00ff\u0107\u011c\u0129\u012e\u0133"+
+ "\u013a\u0144\u014c\u0152\u0159\u015d\u0160\u016a\u016f\u0173\u0178\u017d"+
+ "\u018a\u018c\u0192\u0194\u019b\u019d\u01a3\u01a5\u01a8\u01b4\u01ec\u01ee"+
+ "\u01f4\u01fa\u01fe";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/antlr4/PortugolVisitor.java b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/antlr4/PortugolVisitor.java
index e5db4f9cc..7a5255331 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/antlr4/PortugolVisitor.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/antlr4/PortugolVisitor.java
@@ -88,6 +88,12 @@ public interface PortugolVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitDeclaracaoFuncao(PortugolParser.DeclaracaoFuncaoContext ctx);
+ /**
+ * Visit a parse tree produced by {@link PortugolParser#parametroFuncao}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitParametroFuncao(PortugolParser.ParametroFuncaoContext ctx);
/**
* Visit a parse tree produced by {@link PortugolParser#listaParametros}.
* @param ctx the parse tree
@@ -164,6 +170,12 @@ public interface PortugolVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitSe(PortugolParser.SeContext ctx);
+ /**
+ * Visit a parse tree produced by {@link PortugolParser#senao}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitSenao(PortugolParser.SenaoContext ctx);
/**
* Visit a parse tree produced by {@link PortugolParser#enquanto}.
* @param ctx the parse tree
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroLinhaPuladaEmString.java b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroLinhaPuladaEmString.java
index c7eb3a4b7..7ad91fdb5 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroLinhaPuladaEmString.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroLinhaPuladaEmString.java
@@ -20,7 +20,7 @@ protected String construirMensagem()
{
StringBuilder sb = new StringBuilder();
- sb.append("Você pulou uma linha ao escrever uma cadeia. Cadeias apenas podem ser escritas em na mesma linha");
+ sb.append("Você pulou uma linha ao escrever uma cadeia. Cadeias apenas podem ser escritas em uma mesma linha");
return sb.toString();
}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroParametrosNaoTipados.java b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroParametrosNaoTipados.java
new file mode 100644
index 000000000..5dc115943
--- /dev/null
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroParametrosNaoTipados.java
@@ -0,0 +1,28 @@
+package br.univali.portugol.nucleo.analise.sintatica.erros;
+
+import br.univali.portugol.nucleo.mensagens.ErroSemiSintatico;
+
+/**
+ *
+ * @author Luiz Fernando Noschang
+ */
+public final class ErroParametrosNaoTipados extends ErroSemiSintatico
+{
+
+
+ public ErroParametrosNaoTipados(int linha, int coluna, String codigofonte)
+ {
+ super(linha, coluna, codigofonte);
+ }
+
+ @Override
+ protected String construirMensagem()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("Os parametros da função, não estão tipados.\n");
+ sb.append("Adicione tipos para cada um dos parametros utilizados ex: funcao nome(inteiro idade, cadeia sobrenome)");
+
+ return sb.toString();
+ }
+}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroParsingNaoTratado.java b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroParsingNaoTratado.java
index 315f77819..28729f319 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroParsingNaoTratado.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroParsingNaoTratado.java
@@ -45,6 +45,6 @@ public ErroParsingNaoTratado(RecognitionException erro, String mensagemPadrao, S
@Override
protected String construirMensagem()
{
- return this.mensagemPadrao + " - Contexto: " + contexto + " - Classe: " + erro.getClass().getSimpleName();
+ return this.mensagemPadrao;
}
}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroRetornoVetorMatriz.java b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroRetornoVetorMatriz.java
new file mode 100644
index 000000000..5001d1535
--- /dev/null
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroRetornoVetorMatriz.java
@@ -0,0 +1,27 @@
+package br.univali.portugol.nucleo.analise.sintatica.erros;
+
+import br.univali.portugol.nucleo.mensagens.ErroSemiSintatico;
+
+/**
+ *
+ * @author Luiz Fernando Noschang
+ */
+public final class ErroRetornoVetorMatriz extends ErroSemiSintatico
+{
+
+
+ public ErroRetornoVetorMatriz(int linha, int coluna, String codigofonte)
+ {
+ super(linha, coluna, codigofonte);
+ }
+
+ @Override
+ protected String construirMensagem()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("Não é possível retornar vetores ou matrizes por funções.\n\n");
+
+ return sb.toString();
+ }
+}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroSenaoInesperado.java b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroSenaoInesperado.java
new file mode 100644
index 000000000..f1f86953f
--- /dev/null
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/erros/ErroSenaoInesperado.java
@@ -0,0 +1,34 @@
+package br.univali.portugol.nucleo.analise.sintatica.erros;
+
+import br.univali.portugol.nucleo.mensagens.ErroSemiSintatico;
+
+/**
+ *
+ * @author Luiz Fernando Noschang
+ */
+public final class ErroSenaoInesperado extends ErroSemiSintatico
+{
+
+
+ public ErroSenaoInesperado(int linha, int coluna, String codigofonte)
+ {
+ super(linha, coluna, codigofonte);
+ }
+
+ @Override
+ protected String construirMensagem()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("O token 'senao' não faz sentido neste local. O comando 'senao' deve ser utilizado com o comando 'se' da seguinte maneira:\n");
+ sb.append("se(condicao){\n\n");
+ sb.append("}senao{\n\n");
+ sb.append("}\n\n");
+ sb.append("ou então: \n\n");
+ sb.append("se(condicao){\n\n");
+ sb.append("}senao se(condicao2){\n\n");
+ sb.append("}\n\n");
+
+ return sb.toString();
+ }
+}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/tradutores/TradutorMismatchedTokenException.java b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/tradutores/TradutorMismatchedTokenException.java
index 3b3c2edd4..3a38cd9c8 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/tradutores/TradutorMismatchedTokenException.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/tradutores/TradutorMismatchedTokenException.java
@@ -8,13 +8,17 @@
import br.univali.portugol.nucleo.analise.sintatica.erros.ErroEscopo;
import br.univali.portugol.nucleo.analise.sintatica.erros.ErroExpressaoEsperada;
import br.univali.portugol.nucleo.analise.sintatica.erros.ErroExpressaoIncompleta;
+import br.univali.portugol.nucleo.analise.sintatica.erros.ErroExpressaoInesperada;
import br.univali.portugol.nucleo.analise.sintatica.erros.ErroExpressoesForaEscopoPrograma;
import br.univali.portugol.nucleo.analise.sintatica.erros.ErroFaltaDoisPontos;
import br.univali.portugol.nucleo.analise.sintatica.erros.ErroNomeSimboloEstaFaltando;
import br.univali.portugol.nucleo.analise.sintatica.erros.ErroPalavraReservadaEstaFaltando;
import br.univali.portugol.nucleo.analise.sintatica.erros.ErroParaEsperaCondicao;
+import br.univali.portugol.nucleo.analise.sintatica.erros.ErroParametrosNaoTipados;
import br.univali.portugol.nucleo.analise.sintatica.erros.ErroParentesis;
import br.univali.portugol.nucleo.analise.sintatica.erros.ErroParsingNaoTratado;
+import br.univali.portugol.nucleo.analise.sintatica.erros.ErroRetornoVetorMatriz;
+import br.univali.portugol.nucleo.analise.sintatica.erros.ErroSenaoInesperado;
import br.univali.portugol.nucleo.analise.sintatica.erros.ErroTipoDeDadoEstaFaltando;
import br.univali.portugol.nucleo.analise.sintatica.erros.ErroTokenFaltando;
import br.univali.portugol.nucleo.mensagens.ErroSintatico;
@@ -46,25 +50,45 @@ public final class TradutorMismatchedTokenException
{
public ErroSintatico traduzirErroParsing(RecognitionException erro, String mensagemPadrao, String codigoFonte)
{
-
- int linha = ((ParserRuleContext)(erro.getCtx())).start.getLine();
- int coluna = ((ParserRuleContext)(erro.getCtx())).start.getCharPositionInLine();
+
+ int linha = TradutorUtils.getToken(erro).getLine();
+ int coluna = TradutorUtils.getToken(erro).getCharPositionInLine();
ContextSet contextos = new ContextSet(erro);
List tokensEsperados = getTokensEsperados(erro);
String contextoAtual = contextos.getContextoAtual();
- if(tokensEsperados.size()>1)
- {
- PortugolLexer lexer = new PortugolLexer(CharStreams.fromString(codigoFonte));
- for (Token token = lexer.nextToken(); token.getType() != Token.EOF; token = lexer.nextToken())
+ String token = TradutorUtils.getToken(erro).getText();
+
+// if(tokensEsperados.size()>1)
+// {
+// PortugolLexer lexer = new PortugolLexer(CharStreams.fromString(codigoFonte));
+// for (Token token = lexer.nextToken(); token.getType() != Token.EOF; token = lexer.nextToken())
+// {
+//// if(token.getType() == PortugolLexer.INVALID_ESCAPE)
+//// {
+//// return new ErroEscapeUnico(token.getLine(), token.getCharPositionInLine(), "\\", token.getText());
+//// }
+// }
+// }
+
+ if(erro.getMessage().contains("Remove-lo pode solucionar o problema"))
+ {
+ if(token.equals("senao"))
{
-// if(token.getType() == PortugolLexer.INVALID_ESCAPE)
-// {
-// return new ErroEscapeUnico(token.getLine(), token.getCharPositionInLine(), "\\", token.getText());
-// }
+ return new ErroSenaoInesperado(linha, coluna, token);
}
+ if(contextoAtual.equals("parametroFuncao"))
+ {
+ return new ErroParametrosNaoTipados(linha, coluna, token);
+ }
+ return new ErroExpressaoInesperada(linha, coluna, token);
+ }
+
+ if(contextoAtual.equals("parametroFuncao"))
+ {
+ return new ErroParametrosNaoTipados(linha, coluna, TradutorUtils.getToken(erro).getText());
}
if (contextoAtual.equals("expressao") ) {
@@ -93,6 +117,10 @@ public ErroSintatico traduzirErroParsing(RecognitionException erro, String mensa
// função, variável ou parâmetro sem nome
if (contextoAtual.startsWith("declaracao") || contextoAtual.equals("parametro")) {
+ if(token.equals("["))
+ {
+ return new ErroRetornoVetorMatriz(linha, coluna, contextoAtual);
+ }
if (tokensEsperados.contains("ID")){
return new ErroNomeSimboloEstaFaltando(linha, coluna, contextoAtual);
}
@@ -111,13 +139,13 @@ public ErroSintatico traduzirErroParsing(RecognitionException erro, String mensa
for (String tokenEsperado : tokensEsperados) {
switch (tokenEsperado)
{
+ case "TIPO": return new ErroTipoDeDadoEstaFaltando(linha, coluna);
case "FECHA_CHAVES": return new ErroEscopo(linha, coluna, ErroEscopo.Tipo.FECHAMENTO, contextoAtual);
case "ABRE_PARENTESES": return new ErroParentesis(linha, coluna, ErroParentesis.Tipo.ABERTURA);
case "FECHA_PARENTESES": return new ErroParentesis(linha, coluna, ErroParentesis.Tipo.FECHAMENTO);
case "DOISPONTOS": return new ErroFaltaDoisPontos(linha, coluna);
case "PONTOVIRGULA": return new ErroTokenFaltando(linha, coluna, tokenEsperado);
case "ENQUANTO": return new ErroPalavraReservadaEstaFaltando(linha, coluna, "enquanto");
- case "TIPO": return new ErroTipoDeDadoEstaFaltando(linha, coluna);
case "PROGRAMA": return new ErroExpressoesForaEscopoPrograma(coluna, codigoFonte, ErroExpressoesForaEscopoPrograma.Local.ANTES);
}
}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/asa/NoParametroFuncao.java b/core/src/main/java/br/univali/portugol/nucleo/asa/NoParametroFuncao.java
new file mode 100644
index 000000000..3da59d7b3
--- /dev/null
+++ b/core/src/main/java/br/univali/portugol/nucleo/asa/NoParametroFuncao.java
@@ -0,0 +1,35 @@
+package br.univali.portugol.nucleo.asa;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @see NoContinue
+ */
+public final class NoParametroFuncao extends NoBloco
+{
+ List parametros;
+ /**
+ * {@inheritDoc }
+ */
+
+
+
+ public NoParametroFuncao()
+ {
+ parametros = new ArrayList<>();
+ }
+
+ public List getParametros() {
+ return parametros;
+ }
+
+ public void addParametro(NoDeclaracaoParametro parametro) {
+ this.parametros.add(parametro);
+ }
+
+ @Override
+ public Object aceitar(VisitanteASA visitante) throws ExcecaoVisitaASA {
+ return visitante.visitar(this);
+ }
+}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/asa/NoSenao.java b/core/src/main/java/br/univali/portugol/nucleo/asa/NoSenao.java
new file mode 100644
index 000000000..e8376fe48
--- /dev/null
+++ b/core/src/main/java/br/univali/portugol/nucleo/asa/NoSenao.java
@@ -0,0 +1,108 @@
+package br.univali.portugol.nucleo.asa;
+
+import br.univali.portugol.nucleo.programa.Estado;
+
+import java.util.List;
+
+/**
+ * Representa um desvio condicional se
no código fonte.
+ *
+ * O comando se
serve para desviar a execução do programa baseado em
+ * uma condição.
+ *
+ * Este comando possui uma expessão lógica que será avaliada. Caso esta expressão seja
+ * verdadeira uma lista específica de comandos será executada, caso seja falsa, uma lista
+ * alternativa de comandos será executada (se houver). Para definir a lista de comandos que
+ * serão executados caso a condição não seja atendida, deve-se usar a palavra reservada
+ * senao
.
+ *
+ * Exemplo:
+ *
+ *
+ * funcao exemploSe()
+ * {
+ * logico estudo = verdadeiro
+ * logico aprendo
+ * logico ficoInteligente
+ * logico ficoBurro
+ *
+ * se (estudo)
+ * {
+ * aprendo = verdadeiro
+ *
+ * se (aprendo)
+ * {
+ * ficoInteligete = verdadeiro
+ * ficoBurro = falso
+ * }
+ * senao
+ * {
+ * ficoInteligente = falso
+ * ficoBurro = verdadeiro
+ * }
+ * }
+ * senao
+ * {
+ * aprendo = falso
+ * ficoInteligente = falso
+ * ficoBurro = verdadeiro
+ * }
+ *
+ *
+ *
+ * @author Luiz Fernando Noschang
+ * @version 1.0
+ */
+public final class NoSenao extends NoBloco
+{
+ private List blocosFalsos;
+ /**
+ *
+ * @param condicao a expressão que será avaliada para determinar quais blocos
+ * de comandos serão executados.
+ * @since 1.0
+ */
+ public NoSenao()
+ {
+
+ }
+
+ /**
+ * Define a lista de blocos que serão executados se a expressão avaliada for falsa.
+ *
+ * @param blocosFalsos a lista de blocos que serão executados se a expressão avaliada for falsa.
+ * @since 1.0
+ */
+ public void setBlocosFalsos(List blocosFalsos)
+ {
+ this.blocosFalsos = blocosFalsos;
+ }
+
+ /**
+ * Obtém a lista de blocos que serão executados se a expressão avaliada for falsa.
+ *
+ * @return a lista de blocos que serão executados se a expressão avaliada for falsa.
+ * @since 1.0
+ */
+ public List getBlocosFalsos()
+ {
+ return blocosFalsos;
+ }
+
+ /**
+ * {@inheritDoc }
+ */
+ @Override
+ public Object aceitar(VisitanteASA visitante) throws ExcecaoVisitaASA
+ {
+ return visitante.visitar(this);
+ }
+
+ @Override
+ public boolean ehParavel(Estado estado)
+ {
+ return super.ehParavel(estado);
+ }
+
+
+}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/asa/VisitanteASA.java b/core/src/main/java/br/univali/portugol/nucleo/asa/VisitanteASA.java
index 762b5ba42..cb51abeca 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/asa/VisitanteASA.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/asa/VisitanteASA.java
@@ -103,6 +103,10 @@ public interface VisitanteASA
public Object visitar(NoSe noSe) throws ExcecaoVisitaASA;
+ public Object visitar(NoSenao noSenao) throws ExcecaoVisitaASA;
+
+ public Object visitar(NoParametroFuncao noParametroFuncao) throws ExcecaoVisitaASA;
+
public Object visitar(NoTitulo noTitulo) throws ExcecaoVisitaASA;
public Object visitar(NoVaPara noVaPara) throws ExcecaoVisitaASA;
@@ -111,5 +115,6 @@ public interface VisitanteASA
public Object visitar(NoDeclaracaoParametro noDeclaracaoParametro) throws ExcecaoVisitaASA;
- public Object visitar(NoInclusaoBiblioteca noInclusaoBiblioteca) throws ExcecaoVisitaASA;
+ public Object visitar(NoInclusaoBiblioteca noInclusaoBiblioteca) throws ExcecaoVisitaASA;
+
}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/asa/VisitanteASABasico.java b/core/src/main/java/br/univali/portugol/nucleo/asa/VisitanteASABasico.java
index 033a90b50..e46ea339d 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/asa/VisitanteASABasico.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/asa/VisitanteASABasico.java
@@ -281,6 +281,12 @@ public Object visitar(NoSe noSe) throws ExcecaoVisitaASA
throw new ExcecaoVisitaASA(new UnsupportedOperationException("Esta operação ainda não foi implementada. " + this.getClass() + ":" + Thread.currentThread().getStackTrace()[1].getMethodName()), null, null) ;
}
+ @Override
+ public Object visitar(NoSenao noSenao) throws ExcecaoVisitaASA
+ {
+ throw new ExcecaoVisitaASA(new UnsupportedOperationException("Esta operação ainda não foi implementada. " + this.getClass() + ":" + Thread.currentThread().getStackTrace()[1].getMethodName()), null, null) ;
+ }
+
@Override
public Object visitar(NoTitulo noTitulo) throws ExcecaoVisitaASA
{
@@ -309,4 +315,9 @@ public Object visitar(NoInclusaoBiblioteca noInclusaoBiblioteca) throws ExcecaoV
{
throw new ExcecaoVisitaASA(new UnsupportedOperationException("Esta operação ainda não foi implementada. " + this.getClass() + ":" + Thread.currentThread().getStackTrace()[1].getMethodName()), null, null) ;
}
+
+ @Override
+ public Object visitar(NoParametroFuncao noParametroFuncao) throws ExcecaoVisitaASA {
+ throw new ExcecaoVisitaASA(new UnsupportedOperationException("Esta operação ainda não foi implementada. " + this.getClass() + ":" + Thread.currentThread().getStackTrace()[1].getMethodName()), null, null) ;
+ }
}
diff --git a/core/src/main/java/br/univali/portugol/nucleo/execucao/DetectaNosParada.java b/core/src/main/java/br/univali/portugol/nucleo/execucao/DetectaNosParada.java
index 3f2170a0f..2b2486b4c 100644
--- a/core/src/main/java/br/univali/portugol/nucleo/execucao/DetectaNosParada.java
+++ b/core/src/main/java/br/univali/portugol/nucleo/execucao/DetectaNosParada.java
@@ -441,4 +441,14 @@ public Object visitar(NoVaPara noVaPara) throws ExcecaoVisitaASA
return null;
}
+ @Override
+ public Object visitar(NoSenao noSenao) throws ExcecaoVisitaASA {
+ return null;
+ }
+
+ @Override
+ public Object visitar(NoParametroFuncao noParametroFuncao) throws ExcecaoVisitaASA {
+ return null;
+ }
+
}
diff --git a/ide/build.gradle b/ide/build.gradle
index 15540e90c..d48f7a20e 100644
--- a/ide/build.gradle
+++ b/ide/build.gradle
@@ -107,14 +107,14 @@ task debug(dependsOn: compileJava, type: JavaExec) {
description = 'Runs this program as a JVM application for debugging'
group = 'application'
-
+ debug = true
doFirst {
main = mainClass
classpath = sourceSets.main.runtimeClasspath
jvmArgs = loadJvmArgs()
- debug = true
+
}
}
diff --git a/ide/src/main/java/br/univali/ps/nucleo/PSAnalytics.java b/ide/src/main/java/br/univali/ps/nucleo/PSAnalytics.java
index 0c5f530af..498133a2d 100644
--- a/ide/src/main/java/br/univali/ps/nucleo/PSAnalytics.java
+++ b/ide/src/main/java/br/univali/ps/nucleo/PSAnalytics.java
@@ -156,18 +156,23 @@ private void editar_usuario_servidor(String url, String id, boolean set_online,
}
}
}
- public static String getHTML(String urlToRead) throws Exception {
- StringBuilder result = new StringBuilder();
- URL url = new URL(urlToRead);
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- conn.setRequestMethod("GET");
- BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
- String line;
- while ((line = rd.readLine()) != null) {
- result.append(line);
- }
- rd.close();
- return result.toString();
+ public static String getHTML(String urlToRead){
+ try {
+ StringBuilder result = new StringBuilder();
+ URL url = new URL(urlToRead);
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("GET");
+ BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+ String line;
+ while ((line = rd.readLine()) != null) {
+ result.append(line);
+ }
+ rd.close();
+ return result.toString();
+
+ } catch (Exception e) {
+ return "FALHA DE CONEXAO";
+ }
}
public void iniciar_sessao_servidor(){
if(pode_enviar_dados)
diff --git a/ide/src/main/java/br/univali/ps/ui/rstautil/tree/AstOutlineTreeFactory.java b/ide/src/main/java/br/univali/ps/ui/rstautil/tree/AstOutlineTreeFactory.java
index 10d3caa91..fe337a1c0 100644
--- a/ide/src/main/java/br/univali/ps/ui/rstautil/tree/AstOutlineTreeFactory.java
+++ b/ide/src/main/java/br/univali/ps/ui/rstautil/tree/AstOutlineTreeFactory.java
@@ -47,6 +47,7 @@
import br.univali.portugol.nucleo.asa.NoOperacaoSoma;
import br.univali.portugol.nucleo.asa.NoOperacaoSubtracao;
import br.univali.portugol.nucleo.asa.NoPara;
+import br.univali.portugol.nucleo.asa.NoParametroFuncao;
import br.univali.portugol.nucleo.asa.NoPare;
import br.univali.portugol.nucleo.asa.NoReal;
import br.univali.portugol.nucleo.asa.NoReferenciaMatriz;
@@ -54,6 +55,7 @@
import br.univali.portugol.nucleo.asa.NoReferenciaVetor;
import br.univali.portugol.nucleo.asa.NoRetorne;
import br.univali.portugol.nucleo.asa.NoSe;
+import br.univali.portugol.nucleo.asa.NoSenao;
import br.univali.portugol.nucleo.asa.NoTitulo;
import br.univali.portugol.nucleo.asa.NoVaPara;
import br.univali.portugol.nucleo.asa.NoVetor;
@@ -711,6 +713,16 @@ public Object visitar(NoVaPara noVaPara) throws ExcecaoVisitaASA
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
+ @Override
+ public Object visitar(NoSenao noSenao) throws ExcecaoVisitaASA {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public Object visitar(NoParametroFuncao noParametroFuncao) throws ExcecaoVisitaASA {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
private class ComparadorNos implements Comparator
{
@Override
diff --git a/ide/src/main/java/br/univali/ps/ui/rstautil/tree/AstTreeCellRenderer.java b/ide/src/main/java/br/univali/ps/ui/rstautil/tree/AstTreeCellRenderer.java
index b3ac45f5c..f28db26e0 100644
--- a/ide/src/main/java/br/univali/ps/ui/rstautil/tree/AstTreeCellRenderer.java
+++ b/ide/src/main/java/br/univali/ps/ui/rstautil/tree/AstTreeCellRenderer.java
@@ -42,6 +42,7 @@
import br.univali.portugol.nucleo.asa.NoOperacaoSoma;
import br.univali.portugol.nucleo.asa.NoOperacaoSubtracao;
import br.univali.portugol.nucleo.asa.NoPara;
+import br.univali.portugol.nucleo.asa.NoParametroFuncao;
import br.univali.portugol.nucleo.asa.NoPare;
import br.univali.portugol.nucleo.asa.NoReal;
import br.univali.portugol.nucleo.asa.NoReferenciaMatriz;
@@ -49,6 +50,7 @@
import br.univali.portugol.nucleo.asa.NoReferenciaVetor;
import br.univali.portugol.nucleo.asa.NoRetorne;
import br.univali.portugol.nucleo.asa.NoSe;
+import br.univali.portugol.nucleo.asa.NoSenao;
import br.univali.portugol.nucleo.asa.NoTitulo;
import br.univali.portugol.nucleo.asa.NoVaPara;
import br.univali.portugol.nucleo.asa.NoVetor;
@@ -731,4 +733,22 @@ public Object visitar(NoVaPara noVaPara) throws ExcecaoVisitaASA {
component.setDisabledIcon(icone);
return null;
}
+
+ @Override
+ public Object visitar(NoSenao noSenao) throws ExcecaoVisitaASA {
+ component.setText("senao");
+ Icon icone = IconFactory.createIcon(IconFactory.CAMINHO_ICONES_PEQUENOS, "unknown.png");
+ component.setIcon(icone);
+ component.setDisabledIcon(icone);
+ return null;
+ }
+
+ @Override
+ public Object visitar(NoParametroFuncao noParametroFuncao) throws ExcecaoVisitaASA {
+ component.setText("parametroFuncao");
+ Icon icone = IconFactory.createIcon(IconFactory.CAMINHO_ICONES_PEQUENOS, "unknown.png");
+ component.setIcon(icone);
+ component.setDisabledIcon(icone);
+ return null;
+ }
}
diff --git a/ide/src/main/java/br/univali/ps/ui/rstautil/tree/filters/SymbolTypeFilter.java b/ide/src/main/java/br/univali/ps/ui/rstautil/tree/filters/SymbolTypeFilter.java
index 5c88b8bfb..3be8be0cd 100644
--- a/ide/src/main/java/br/univali/ps/ui/rstautil/tree/filters/SymbolTypeFilter.java
+++ b/ide/src/main/java/br/univali/ps/ui/rstautil/tree/filters/SymbolTypeFilter.java
@@ -43,6 +43,7 @@
import br.univali.portugol.nucleo.asa.NoOperacaoSoma;
import br.univali.portugol.nucleo.asa.NoOperacaoSubtracao;
import br.univali.portugol.nucleo.asa.NoPara;
+import br.univali.portugol.nucleo.asa.NoParametroFuncao;
import br.univali.portugol.nucleo.asa.NoPare;
import br.univali.portugol.nucleo.asa.NoReal;
import br.univali.portugol.nucleo.asa.NoReferenciaMatriz;
@@ -50,6 +51,7 @@
import br.univali.portugol.nucleo.asa.NoReferenciaVetor;
import br.univali.portugol.nucleo.asa.NoRetorne;
import br.univali.portugol.nucleo.asa.NoSe;
+import br.univali.portugol.nucleo.asa.NoSenao;
import br.univali.portugol.nucleo.asa.NoTitulo;
import br.univali.portugol.nucleo.asa.NoVaPara;
import br.univali.portugol.nucleo.asa.NoVetor;
@@ -596,5 +598,15 @@ public Object visitar(NoInclusaoBiblioteca noInclusaoBiblioteca) throws ExcecaoV
{
return false;
}
+
+ @Override
+ public Object visitar(NoSenao noSenao) throws ExcecaoVisitaASA {
+ return false;
+ }
+
+ @Override
+ public Object visitar(NoParametroFuncao noParametroFuncao) throws ExcecaoVisitaASA {
+ return false;
+ }
}
}