|
@@ -1,837 +0,0 @@
|
|
|
-// Generated from grammar/ivprog.g4 by ANTLR 4.7.1
|
|
|
-// jshint ignore: start
|
|
|
-var antlr4 = require('antlr4/index');
|
|
|
-var ivprogListener = require('./ivprogListener').ivprogListener;
|
|
|
-
|
|
|
- import {ASA, NoGlobal} from '../js/asa';
|
|
|
-
|
|
|
-var grammarFileName = "ivprog.g4";
|
|
|
-
|
|
|
-var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
|
|
|
- "\u0003&S\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004\u0004\t\u0004",
|
|
|
- "\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t\u0007\u0004\b",
|
|
|
- "\t\b\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0003\u0003",
|
|
|
- "\u0003\u0003\u0003\u0003\u0003\u0007\u0003\u0019\n\u0003\f\u0003\u000e",
|
|
|
- "\u0003\u001c\u000b\u0003\u0003\u0003\u0003\u0003\u0003\u0004\u0003\u0004",
|
|
|
- "\u0003\u0004\u0003\u0005\u0005\u0005$\n\u0005\u0003\u0005\u0003\u0005",
|
|
|
- "\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
|
|
|
- "\u0007\u0005.\n\u0005\f\u0005\u000e\u00051\u000b\u0005\u0003\u0006\u0003",
|
|
|
- "\u0006\u0003\u0006\u0005\u00066\n\u0006\u0003\u0006\u0003\u0006\u0003",
|
|
|
- "\u0006\u0005\u0006;\n\u0006\u0003\u0006\u0005\u0006>\n\u0006\u0005\u0006",
|
|
|
- "@\n\u0006\u0003\u0006\u0003\u0006\u0005\u0006D\n\u0006\u0003\u0006\u0003",
|
|
|
- "\u0006\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0005",
|
|
|
- "\u0007M\n\u0007\u0003\u0007\u0003\u0007\u0003\b\u0003\b\u0003\b\u0002",
|
|
|
- "\u0002\t\u0002\u0004\u0006\b\n\f\u000e\u0002\u0003\u0004\u0002!!##\u0002",
|
|
|
- "W\u0002\u0010\u0003\u0002\u0002\u0002\u0004\u0014\u0003\u0002\u0002",
|
|
|
- "\u0002\u0006\u001f\u0003\u0002\u0002\u0002\b#\u0003\u0002\u0002\u0002",
|
|
|
- "\n2\u0003\u0002\u0002\u0002\fL\u0003\u0002\u0002\u0002\u000eP\u0003",
|
|
|
- "\u0002\u0002\u0002\u0010\u0011\u0005\u0004\u0003\u0002\u0011\u0012\u0007",
|
|
|
- "\u0002\u0002\u0003\u0012\u0013\b\u0002\u0001\u0002\u0013\u0003\u0003",
|
|
|
- "\u0002\u0002\u0002\u0014\u0015\u0007\t\u0002\u0002\u0015\u0016\u0007",
|
|
|
- "\u0003\u0002\u0002\u0016\u001a\b\u0003\u0001\u0002\u0017\u0019\u0005",
|
|
|
- "\u0006\u0004\u0002\u0018\u0017\u0003\u0002\u0002\u0002\u0019\u001c\u0003",
|
|
|
- "\u0002\u0002\u0002\u001a\u0018\u0003\u0002\u0002\u0002\u001a\u001b\u0003",
|
|
|
- "\u0002\u0002\u0002\u001b\u001d\u0003\u0002\u0002\u0002\u001c\u001a\u0003",
|
|
|
- "\u0002\u0002\u0002\u001d\u001e\u0007\u0004\u0002\u0002\u001e\u0005\u0003",
|
|
|
- "\u0002\u0002\u0002\u001f \u0005\b\u0005\u0002 !\b\u0004\u0001\u0002",
|
|
|
- "!\u0007\u0003\u0002\u0002\u0002\"$\u0007\u0013\u0002\u0002#\"\u0003",
|
|
|
- "\u0002\u0002\u0002#$\u0003\u0002\u0002\u0002$%\u0003\u0002\u0002\u0002",
|
|
|
- "%&\u0005\f\u0007\u0002&\'\u0005\n\u0006\u0002\'(\b\u0005\u0001\u0002",
|
|
|
- "(/\u0003\u0002\u0002\u0002)*\u0007\u0005\u0002\u0002*+\u0005\n\u0006",
|
|
|
- "\u0002+,\b\u0005\u0001\u0002,.\u0003\u0002\u0002\u0002-)\u0003\u0002",
|
|
|
- "\u0002\u0002.1\u0003\u0002\u0002\u0002/-\u0003\u0002\u0002\u0002/0\u0003",
|
|
|
- "\u0002\u0002\u00020\t\u0003\u0002\u0002\u00021/\u0003\u0002\u0002\u0002",
|
|
|
- "2?\u0007\u001f\u0002\u000235\u0007\u0006\u0002\u000246\u0005\u000e\b",
|
|
|
- "\u000254\u0003\u0002\u0002\u000256\u0003\u0002\u0002\u000267\u0003\u0002",
|
|
|
- "\u0002\u00027=\u0007\u0007\u0002\u00028:\u0007\u0006\u0002\u00029;\u0005",
|
|
|
- "\u000e\b\u0002:9\u0003\u0002\u0002\u0002:;\u0003\u0002\u0002\u0002;",
|
|
|
- "<\u0003\u0002\u0002\u0002<>\u0007\u0007\u0002\u0002=8\u0003\u0002\u0002",
|
|
|
- "\u0002=>\u0003\u0002\u0002\u0002>@\u0003\u0002\u0002\u0002?3\u0003\u0002",
|
|
|
- "\u0002\u0002?@\u0003\u0002\u0002\u0002@C\u0003\u0002\u0002\u0002AB\u0007",
|
|
|
- "\b\u0002\u0002BD\u0005\u000e\b\u0002CA\u0003\u0002\u0002\u0002CD\u0003",
|
|
|
- "\u0002\u0002\u0002DE\u0003\u0002\u0002\u0002EF\b\u0006\u0001\u0002F",
|
|
|
- "\u000b\u0003\u0002\u0002\u0002GM\u0007\u000e\u0002\u0002HM\u0007\n\u0002",
|
|
|
- "\u0002IM\u0007\u000f\u0002\u0002JM\u0007\r\u0002\u0002KM\u0007\f\u0002",
|
|
|
- "\u0002LG\u0003\u0002\u0002\u0002LH\u0003\u0002\u0002\u0002LI\u0003\u0002",
|
|
|
- "\u0002\u0002LJ\u0003\u0002\u0002\u0002LK\u0003\u0002\u0002\u0002MN\u0003",
|
|
|
- "\u0002\u0002\u0002NO\b\u0007\u0001\u0002O\r\u0003\u0002\u0002\u0002",
|
|
|
- "PQ\t\u0002\u0002\u0002Q\u000f\u0003\u0002\u0002\u0002\u000b\u001a#/",
|
|
|
- "5:=?CL"].join("");
|
|
|
-
|
|
|
-
|
|
|
-var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);
|
|
|
-
|
|
|
-var decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });
|
|
|
-
|
|
|
-var sharedContextCache = new antlr4.PredictionContextCache();
|
|
|
-
|
|
|
-var literalNames = [ null, "'{'", "'}'", "','", "'['", "']'", "'='", "'programa'",
|
|
|
- "'real'", "'vazio'", "'logico'", "'cadeia'", "'inteiro'",
|
|
|
- "'caracter'", "'escolha'", "'caso'", "'contrario'",
|
|
|
- "'const'", "'funcao'", "'retorne'", "'para'", "'pare'",
|
|
|
- "'faca'", "'enquanto'", "'se'", "'senao'", null, "'nao'" ];
|
|
|
-
|
|
|
-var symbolicNames = [ null, null, null, null, null, null, null, "PR_PROGRAMA",
|
|
|
- "PR_REAL", "PR_VAZIO", "PR_LOGICO", "PR_CADEIA", "PR_INTEIRO",
|
|
|
- "PR_CARACTER", "PR_ESCOLHA", "PR_CASO", "PR_CONTRARIO",
|
|
|
- "PR_CONST", "PR_FUNCAO", "PR_RETORNE", "PR_PARA",
|
|
|
- "PR_PARE", "PR_FACA", "PR_ENQUANTO", "PR_SE", "PR_SENAO",
|
|
|
- "GAMBIARRA", "OPERADOR_NAO", "LOGICO", "ID", "ID_BIBLIOTECA",
|
|
|
- "INTEIRO", "REAL", "CADEIA", "CARACTER", "ESPACO",
|
|
|
- "COMENTARIO" ];
|
|
|
-
|
|
|
-var ruleNames = [ "parse", "programa", "declaracoesGlobais", "listaDeclaracoes",
|
|
|
- "declaracao", "declaracaoTipoDado", "expressao" ];
|
|
|
-
|
|
|
-function ivprogParser (input) {
|
|
|
- antlr4.Parser.call(this, input);
|
|
|
- this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache);
|
|
|
- this.ruleNames = ruleNames;
|
|
|
- this.literalNames = literalNames;
|
|
|
- this.symbolicNames = symbolicNames;
|
|
|
-
|
|
|
- this.criarTrechoCodigoFonte = function(tokenAntlr)
|
|
|
- {
|
|
|
- if (tokenAntlr != null)
|
|
|
- {
|
|
|
- const linha = tokenAntlr.getLine();
|
|
|
- const coluna = tokenAntlr.getCharPositionInLine();
|
|
|
- const tamanhoTexto = tokenAntlr.getText().length();
|
|
|
-
|
|
|
- return {linha: linha, coluna: coluna, tamanhoTexto: tamanhoTexto};
|
|
|
- }
|
|
|
-
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- return this;
|
|
|
-}
|
|
|
-
|
|
|
-ivprogParser.prototype = Object.create(antlr4.Parser.prototype);
|
|
|
-ivprogParser.prototype.constructor = ivprogParser;
|
|
|
-
|
|
|
-Object.defineProperty(ivprogParser.prototype, "atn", {
|
|
|
- get : function() {
|
|
|
- return atn;
|
|
|
- }
|
|
|
-});
|
|
|
-
|
|
|
-ivprogParser.EOF = antlr4.Token.EOF;
|
|
|
-ivprogParser.T__0 = 1;
|
|
|
-ivprogParser.T__1 = 2;
|
|
|
-ivprogParser.T__2 = 3;
|
|
|
-ivprogParser.T__3 = 4;
|
|
|
-ivprogParser.T__4 = 5;
|
|
|
-ivprogParser.T__5 = 6;
|
|
|
-ivprogParser.PR_PROGRAMA = 7;
|
|
|
-ivprogParser.PR_REAL = 8;
|
|
|
-ivprogParser.PR_VAZIO = 9;
|
|
|
-ivprogParser.PR_LOGICO = 10;
|
|
|
-ivprogParser.PR_CADEIA = 11;
|
|
|
-ivprogParser.PR_INTEIRO = 12;
|
|
|
-ivprogParser.PR_CARACTER = 13;
|
|
|
-ivprogParser.PR_ESCOLHA = 14;
|
|
|
-ivprogParser.PR_CASO = 15;
|
|
|
-ivprogParser.PR_CONTRARIO = 16;
|
|
|
-ivprogParser.PR_CONST = 17;
|
|
|
-ivprogParser.PR_FUNCAO = 18;
|
|
|
-ivprogParser.PR_RETORNE = 19;
|
|
|
-ivprogParser.PR_PARA = 20;
|
|
|
-ivprogParser.PR_PARE = 21;
|
|
|
-ivprogParser.PR_FACA = 22;
|
|
|
-ivprogParser.PR_ENQUANTO = 23;
|
|
|
-ivprogParser.PR_SE = 24;
|
|
|
-ivprogParser.PR_SENAO = 25;
|
|
|
-ivprogParser.GAMBIARRA = 26;
|
|
|
-ivprogParser.OPERADOR_NAO = 27;
|
|
|
-ivprogParser.LOGICO = 28;
|
|
|
-ivprogParser.ID = 29;
|
|
|
-ivprogParser.ID_BIBLIOTECA = 30;
|
|
|
-ivprogParser.INTEIRO = 31;
|
|
|
-ivprogParser.REAL = 32;
|
|
|
-ivprogParser.CADEIA = 33;
|
|
|
-ivprogParser.CARACTER = 34;
|
|
|
-ivprogParser.ESPACO = 35;
|
|
|
-ivprogParser.COMENTARIO = 36;
|
|
|
-
|
|
|
-ivprogParser.RULE_parse = 0;
|
|
|
-ivprogParser.RULE_programa = 1;
|
|
|
-ivprogParser.RULE_declaracoesGlobais = 2;
|
|
|
-ivprogParser.RULE_listaDeclaracoes = 3;
|
|
|
-ivprogParser.RULE_declaracao = 4;
|
|
|
-ivprogParser.RULE_declaracaoTipoDado = 5;
|
|
|
-ivprogParser.RULE_expressao = 6;
|
|
|
-
|
|
|
-function ParseContext(parser, parent, invokingState) {
|
|
|
- if(parent===undefined) {
|
|
|
- parent = null;
|
|
|
- }
|
|
|
- if(invokingState===undefined || invokingState===null) {
|
|
|
- invokingState = -1;
|
|
|
- }
|
|
|
- antlr4.ParserRuleContext.call(this, parent, invokingState);
|
|
|
- this.parser = parser;
|
|
|
- this.ruleIndex = ivprogParser.RULE_parse;
|
|
|
- this.asa = null
|
|
|
- this.prog = null; // ProgramaContext
|
|
|
- return this;
|
|
|
-}
|
|
|
-
|
|
|
-ParseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
|
|
|
-ParseContext.prototype.constructor = ParseContext;
|
|
|
-
|
|
|
-ParseContext.prototype.EOF = function() {
|
|
|
- return this.getToken(ivprogParser.EOF, 0);
|
|
|
-};
|
|
|
-
|
|
|
-ParseContext.prototype.programa = function() {
|
|
|
- return this.getTypedRuleContext(ProgramaContext,0);
|
|
|
-};
|
|
|
-
|
|
|
-ParseContext.prototype.enterRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.enterParse(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-ParseContext.prototype.exitRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.exitParse(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-ivprogParser.ParseContext = ParseContext;
|
|
|
-
|
|
|
-ivprogParser.prototype.parse = function() {
|
|
|
-
|
|
|
- var localctx = new ParseContext(this, this._ctx, this.state);
|
|
|
- this.enterRule(localctx, 0, ivprogParser.RULE_parse);
|
|
|
- try {
|
|
|
- this.enterOuterAlt(localctx, 1);
|
|
|
- this.state = 14;
|
|
|
- localctx.prog = this.programa();
|
|
|
- this.state = 15;
|
|
|
- this.match(ivprogParser.EOF);
|
|
|
-
|
|
|
- localctx.asa = localctx.prog.asa
|
|
|
-
|
|
|
- } catch (re) {
|
|
|
- if(re instanceof antlr4.error.RecognitionException) {
|
|
|
- localctx.exception = re;
|
|
|
- this._errHandler.reportError(this, re);
|
|
|
- this._errHandler.recover(this, re);
|
|
|
- } else {
|
|
|
- throw re;
|
|
|
- }
|
|
|
- } finally {
|
|
|
- this.exitRule();
|
|
|
- }
|
|
|
- return localctx;
|
|
|
-};
|
|
|
-
|
|
|
-function ProgramaContext(parser, parent, invokingState) {
|
|
|
- if(parent===undefined) {
|
|
|
- parent = null;
|
|
|
- }
|
|
|
- if(invokingState===undefined || invokingState===null) {
|
|
|
- invokingState = -1;
|
|
|
- }
|
|
|
- antlr4.ParserRuleContext.call(this, parent, invokingState);
|
|
|
- this.parser = parser;
|
|
|
- this.ruleIndex = ivprogParser.RULE_programa;
|
|
|
- this.asa = null
|
|
|
- return this;
|
|
|
-}
|
|
|
-
|
|
|
-ProgramaContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
|
|
|
-ProgramaContext.prototype.constructor = ProgramaContext;
|
|
|
-
|
|
|
-ProgramaContext.prototype.PR_PROGRAMA = function() {
|
|
|
- return this.getToken(ivprogParser.PR_PROGRAMA, 0);
|
|
|
-};
|
|
|
-
|
|
|
-ProgramaContext.prototype.declaracoesGlobais = function(i) {
|
|
|
- if(i===undefined) {
|
|
|
- i = null;
|
|
|
- }
|
|
|
- if(i===null) {
|
|
|
- return this.getTypedRuleContexts(DeclaracoesGlobaisContext);
|
|
|
- } else {
|
|
|
- return this.getTypedRuleContext(DeclaracoesGlobaisContext,i);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-ProgramaContext.prototype.enterRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.enterPrograma(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-ProgramaContext.prototype.exitRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.exitPrograma(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-ivprogParser.ProgramaContext = ProgramaContext;
|
|
|
-
|
|
|
-ivprogParser.prototype.programa = function() {
|
|
|
-
|
|
|
- var localctx = new ProgramaContext(this, this._ctx, this.state);
|
|
|
- this.enterRule(localctx, 2, ivprogParser.RULE_programa);
|
|
|
- var _la = 0; // Token type
|
|
|
- try {
|
|
|
- this.enterOuterAlt(localctx, 1);
|
|
|
- this.state = 18;
|
|
|
- this.match(ivprogParser.PR_PROGRAMA);
|
|
|
- this.state = 19;
|
|
|
- this.match(ivprogParser.T__0);
|
|
|
-
|
|
|
- localctx.asa = new ASA()
|
|
|
-
|
|
|
- this.state = 24;
|
|
|
- this._errHandler.sync(this);
|
|
|
- _la = this._input.LA(1);
|
|
|
- while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ivprogParser.PR_REAL) | (1 << ivprogParser.PR_LOGICO) | (1 << ivprogParser.PR_CADEIA) | (1 << ivprogParser.PR_INTEIRO) | (1 << ivprogParser.PR_CARACTER) | (1 << ivprogParser.PR_CONST))) !== 0)) {
|
|
|
- this.state = 21;
|
|
|
- this.declaracoesGlobais(localctx.asa);
|
|
|
- this.state = 26;
|
|
|
- this._errHandler.sync(this);
|
|
|
- _la = this._input.LA(1);
|
|
|
- }
|
|
|
- this.state = 27;
|
|
|
- this.match(ivprogParser.T__1);
|
|
|
- } catch (re) {
|
|
|
- if(re instanceof antlr4.error.RecognitionException) {
|
|
|
- localctx.exception = re;
|
|
|
- this._errHandler.reportError(this, re);
|
|
|
- this._errHandler.recover(this, re);
|
|
|
- } else {
|
|
|
- throw re;
|
|
|
- }
|
|
|
- } finally {
|
|
|
- this.exitRule();
|
|
|
- }
|
|
|
- return localctx;
|
|
|
-};
|
|
|
-
|
|
|
-function DeclaracoesGlobaisContext(parser, parent, invokingState, asa) {
|
|
|
- if(parent===undefined) {
|
|
|
- parent = null;
|
|
|
- }
|
|
|
- if(invokingState===undefined || invokingState===null) {
|
|
|
- invokingState = -1;
|
|
|
- }
|
|
|
- antlr4.ParserRuleContext.call(this, parent, invokingState);
|
|
|
- this.parser = parser;
|
|
|
- this.ruleIndex = ivprogParser.RULE_declaracoesGlobais;
|
|
|
- this.asa = null
|
|
|
- this.vList = null; // ListaDeclaracoesContext
|
|
|
- this.asa = asa || null;
|
|
|
- return this;
|
|
|
-}
|
|
|
-
|
|
|
-DeclaracoesGlobaisContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
|
|
|
-DeclaracoesGlobaisContext.prototype.constructor = DeclaracoesGlobaisContext;
|
|
|
-
|
|
|
-DeclaracoesGlobaisContext.prototype.listaDeclaracoes = function() {
|
|
|
- return this.getTypedRuleContext(ListaDeclaracoesContext,0);
|
|
|
-};
|
|
|
-
|
|
|
-DeclaracoesGlobaisContext.prototype.enterRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.enterDeclaracoesGlobais(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-DeclaracoesGlobaisContext.prototype.exitRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.exitDeclaracoesGlobais(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-ivprogParser.DeclaracoesGlobaisContext = DeclaracoesGlobaisContext;
|
|
|
-
|
|
|
-ivprogParser.prototype.declaracoesGlobais = function(asa) {
|
|
|
-
|
|
|
- var localctx = new DeclaracoesGlobaisContext(this, this._ctx, this.state, asa);
|
|
|
- this.enterRule(localctx, 4, ivprogParser.RULE_declaracoesGlobais);
|
|
|
- try {
|
|
|
- this.enterOuterAlt(localctx, 1);
|
|
|
- this.state = 29;
|
|
|
- localctx.vList = this.listaDeclaracoes();
|
|
|
-
|
|
|
- if (localctx.asa != null) {
|
|
|
- this.globais = new NoGlobal();
|
|
|
- localctx.vList.lista.forEach( v => this.globais.addDeclaracao(v));
|
|
|
- localctx.asa.nos.push(localctx.vList.lista);
|
|
|
- }
|
|
|
-
|
|
|
- } catch (re) {
|
|
|
- if(re instanceof antlr4.error.RecognitionException) {
|
|
|
- localctx.exception = re;
|
|
|
- this._errHandler.reportError(this, re);
|
|
|
- this._errHandler.recover(this, re);
|
|
|
- } else {
|
|
|
- throw re;
|
|
|
- }
|
|
|
- } finally {
|
|
|
- this.exitRule();
|
|
|
- }
|
|
|
- return localctx;
|
|
|
-};
|
|
|
-
|
|
|
-function ListaDeclaracoesContext(parser, parent, invokingState) {
|
|
|
- if(parent===undefined) {
|
|
|
- parent = null;
|
|
|
- }
|
|
|
- if(invokingState===undefined || invokingState===null) {
|
|
|
- invokingState = -1;
|
|
|
- }
|
|
|
- antlr4.ParserRuleContext.call(this, parent, invokingState);
|
|
|
- this.parser = parser;
|
|
|
- this.ruleIndex = ivprogParser.RULE_listaDeclaracoes;
|
|
|
- this.lista = null
|
|
|
- this.tokenConst = null; // Token
|
|
|
- this.informacaoTipoDado = null; // DeclaracaoTipoDadoContext
|
|
|
- this.vDeclaracao = null; // DeclaracaoContext
|
|
|
- return this;
|
|
|
-}
|
|
|
-
|
|
|
-ListaDeclaracoesContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
|
|
|
-ListaDeclaracoesContext.prototype.constructor = ListaDeclaracoesContext;
|
|
|
-
|
|
|
-ListaDeclaracoesContext.prototype.declaracaoTipoDado = function() {
|
|
|
- return this.getTypedRuleContext(DeclaracaoTipoDadoContext,0);
|
|
|
-};
|
|
|
-
|
|
|
-ListaDeclaracoesContext.prototype.declaracao = function(i) {
|
|
|
- if(i===undefined) {
|
|
|
- i = null;
|
|
|
- }
|
|
|
- if(i===null) {
|
|
|
- return this.getTypedRuleContexts(DeclaracaoContext);
|
|
|
- } else {
|
|
|
- return this.getTypedRuleContext(DeclaracaoContext,i);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-ListaDeclaracoesContext.prototype.PR_CONST = function() {
|
|
|
- return this.getToken(ivprogParser.PR_CONST, 0);
|
|
|
-};
|
|
|
-
|
|
|
-ListaDeclaracoesContext.prototype.enterRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.enterListaDeclaracoes(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-ListaDeclaracoesContext.prototype.exitRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.exitListaDeclaracoes(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-ivprogParser.ListaDeclaracoesContext = ListaDeclaracoesContext;
|
|
|
-
|
|
|
-ivprogParser.prototype.listaDeclaracoes = function() {
|
|
|
-
|
|
|
- var localctx = new ListaDeclaracoesContext(this, this._ctx, this.state);
|
|
|
- this.enterRule(localctx, 6, ivprogParser.RULE_listaDeclaracoes);
|
|
|
-
|
|
|
- localctx.lista = []
|
|
|
-
|
|
|
- var _la = 0; // Token type
|
|
|
- try {
|
|
|
- this.enterOuterAlt(localctx, 1);
|
|
|
- this.state = 33;
|
|
|
- this._errHandler.sync(this);
|
|
|
- _la = this._input.LA(1);
|
|
|
- if(_la===ivprogParser.PR_CONST) {
|
|
|
- this.state = 32;
|
|
|
- localctx.tokenConst = this.match(ivprogParser.PR_CONST);
|
|
|
- }
|
|
|
-
|
|
|
- this.state = 35;
|
|
|
- localctx.informacaoTipoDado = this.declaracaoTipoDado();
|
|
|
-
|
|
|
- this.state = 36;
|
|
|
- localctx.vDeclaracao = this.declaracao(localctx.tokenConst, localctx.informacaoTipoDado.informacaoTipoDado);
|
|
|
-
|
|
|
- if(localctx.vDeclaracao) {
|
|
|
- localctx.lista.push(localctx.vDeclaracao.rDeclaracao);
|
|
|
- }
|
|
|
- localctx.vDeclaracao = null;
|
|
|
-
|
|
|
- this.state = 45;
|
|
|
- this._errHandler.sync(this);
|
|
|
- _la = this._input.LA(1);
|
|
|
- while(_la===ivprogParser.T__2) {
|
|
|
- this.state = 39;
|
|
|
- this.match(ivprogParser.T__2);
|
|
|
- this.state = 40;
|
|
|
- localctx.vDeclaracao = this.declaracao(localctx.tokenConst, localctx.informacaoTipoDado.informacaoTipoDado);
|
|
|
-
|
|
|
- if(localctx.vDeclaracao) {
|
|
|
- localctx.lista.push(localctx.vDeclaracao.rDeclaracao);
|
|
|
- }
|
|
|
- localctx.vDeclaracao = null;
|
|
|
-
|
|
|
- this.state = 47;
|
|
|
- this._errHandler.sync(this);
|
|
|
- _la = this._input.LA(1);
|
|
|
- }
|
|
|
- } catch (re) {
|
|
|
- if(re instanceof antlr4.error.RecognitionException) {
|
|
|
- localctx.exception = re;
|
|
|
- this._errHandler.reportError(this, re);
|
|
|
- this._errHandler.recover(this, re);
|
|
|
- } else {
|
|
|
- throw re;
|
|
|
- }
|
|
|
- } finally {
|
|
|
- this.exitRule();
|
|
|
- }
|
|
|
- return localctx;
|
|
|
-};
|
|
|
-
|
|
|
-function DeclaracaoContext(parser, parent, invokingState, tokenConst, informacaoTipoDado) {
|
|
|
- if(parent===undefined) {
|
|
|
- parent = null;
|
|
|
- }
|
|
|
- if(invokingState===undefined || invokingState===null) {
|
|
|
- invokingState = -1;
|
|
|
- }
|
|
|
- antlr4.ParserRuleContext.call(this, parent, invokingState);
|
|
|
- this.parser = parser;
|
|
|
- this.ruleIndex = ivprogParser.RULE_declaracao;
|
|
|
- this.tokenConst = null
|
|
|
- this.informacaoTipoDado = null
|
|
|
- this.rDeclaracao = null
|
|
|
- this._ID = null; // Token
|
|
|
- this.tk1 = null; // Token
|
|
|
- this.ind1 = null; // ExpressaoContext
|
|
|
- this.tk2 = null; // Token
|
|
|
- this.ind2 = null; // ExpressaoContext
|
|
|
- this.inicializacao = null; // ExpressaoContext
|
|
|
- this.tokenConst = tokenConst || null;
|
|
|
- this.informacaoTipoDado = informacaoTipoDado || null;
|
|
|
- return this;
|
|
|
-}
|
|
|
-
|
|
|
-DeclaracaoContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
|
|
|
-DeclaracaoContext.prototype.constructor = DeclaracaoContext;
|
|
|
-
|
|
|
-DeclaracaoContext.prototype.ID = function() {
|
|
|
- return this.getToken(ivprogParser.ID, 0);
|
|
|
-};
|
|
|
-
|
|
|
-DeclaracaoContext.prototype.expressao = function(i) {
|
|
|
- if(i===undefined) {
|
|
|
- i = null;
|
|
|
- }
|
|
|
- if(i===null) {
|
|
|
- return this.getTypedRuleContexts(ExpressaoContext);
|
|
|
- } else {
|
|
|
- return this.getTypedRuleContext(ExpressaoContext,i);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-DeclaracaoContext.prototype.enterRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.enterDeclaracao(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-DeclaracaoContext.prototype.exitRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.exitDeclaracao(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-ivprogParser.DeclaracaoContext = DeclaracaoContext;
|
|
|
-
|
|
|
-ivprogParser.prototype.declaracao = function(tokenConst, informacaoTipoDado) {
|
|
|
-
|
|
|
- var localctx = new DeclaracaoContext(this, this._ctx, this.state, tokenConst, informacaoTipoDado);
|
|
|
- this.enterRule(localctx, 8, ivprogParser.RULE_declaracao);
|
|
|
- var _la = 0; // Token type
|
|
|
- try {
|
|
|
- this.enterOuterAlt(localctx, 1);
|
|
|
- this.state = 48;
|
|
|
- localctx._ID = this.match(ivprogParser.ID);
|
|
|
- this.state = 61;
|
|
|
- this._errHandler.sync(this);
|
|
|
- _la = this._input.LA(1);
|
|
|
- if(_la===ivprogParser.T__3) {
|
|
|
- this.state = 49;
|
|
|
- localctx.tk1 = this.match(ivprogParser.T__3);
|
|
|
- this.state = 51;
|
|
|
- this._errHandler.sync(this);
|
|
|
- _la = this._input.LA(1);
|
|
|
- if(_la===ivprogParser.INTEIRO || _la===ivprogParser.CADEIA) {
|
|
|
- this.state = 50;
|
|
|
- localctx.ind1 = this.expressao();
|
|
|
- }
|
|
|
-
|
|
|
- this.state = 53;
|
|
|
- this.match(ivprogParser.T__4);
|
|
|
- this.state = 59;
|
|
|
- this._errHandler.sync(this);
|
|
|
- _la = this._input.LA(1);
|
|
|
- if(_la===ivprogParser.T__3) {
|
|
|
- this.state = 54;
|
|
|
- localctx.tk2 = this.match(ivprogParser.T__3);
|
|
|
- this.state = 56;
|
|
|
- this._errHandler.sync(this);
|
|
|
- _la = this._input.LA(1);
|
|
|
- if(_la===ivprogParser.INTEIRO || _la===ivprogParser.CADEIA) {
|
|
|
- this.state = 55;
|
|
|
- localctx.ind2 = this.expressao();
|
|
|
- }
|
|
|
-
|
|
|
- this.state = 58;
|
|
|
- this.match(ivprogParser.T__4);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- this.state = 65;
|
|
|
- this._errHandler.sync(this);
|
|
|
- _la = this._input.LA(1);
|
|
|
- if(_la===ivprogParser.T__5) {
|
|
|
- this.state = 63;
|
|
|
- this.match(ivprogParser.T__5);
|
|
|
- this.state = 64;
|
|
|
- localctx.inicializacao = this.expressao();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- const constante = (localctx.tokenConst != null);
|
|
|
- const tipoDado = (localctx.informacaoTipoDado != null)? localctx.informacaoTipoDado.tipoDado : null;
|
|
|
- const nome = (localctx._ID != null)? (localctx._ID===null ? null : localctx._ID.text) : null;
|
|
|
-
|
|
|
- if ((localctx.tk1 == null) && (localctx.tk2 == null))
|
|
|
- localctx.rDeclaracao = new NoDeclaracaoVariavel(nome, tipoDado, constante)
|
|
|
- else
|
|
|
-
|
|
|
- if ((localctx.tk1 != null) && (localctx.tk2 == null))
|
|
|
- localctx.rDeclaracao = new NoDeclaracaoVetor(nome, tipoDado, (localctx.ind1===null ? null : this._input.getText(new antlr4.Interval(localctx.ind1.start,localctx.ind1.stop))), constante)
|
|
|
-
|
|
|
- else
|
|
|
-
|
|
|
- if ((localctx.tk1 != null) && (localctx.tk2 != null))
|
|
|
- localctx.rDeclaracao = new NoDeclaracaoMatriz(nome, tipoDado, (localctx.ind1===null ? null : this._input.getText(new antlr4.Interval(localctx.ind1.start,localctx.ind1.stop))), (localctx.ind2===null ? null : this._input.getText(new antlr4.Interval(localctx.ind2.start,localctx.ind2.stop))), constante)
|
|
|
-
|
|
|
- localctx.rDeclaracao.setInicializacao(inicializacao);
|
|
|
- localctx.rDeclaracao.setTrechoCodigoFonteNome(criarTrechoCodigoFonte(localctx._ID));
|
|
|
- localctx.rDeclaracao.setTrechoCodigoFonteTipoDado((localctx.informacaoTipoDado != null)? localctx.informacaoTipoDado.getTrechoCodigoFonte(): null);
|
|
|
-
|
|
|
- } catch (re) {
|
|
|
- if(re instanceof antlr4.error.RecognitionException) {
|
|
|
- localctx.exception = re;
|
|
|
- this._errHandler.reportError(this, re);
|
|
|
- this._errHandler.recover(this, re);
|
|
|
- } else {
|
|
|
- throw re;
|
|
|
- }
|
|
|
- } finally {
|
|
|
- this.exitRule();
|
|
|
- }
|
|
|
- return localctx;
|
|
|
-};
|
|
|
-
|
|
|
-function DeclaracaoTipoDadoContext(parser, parent, invokingState) {
|
|
|
- if(parent===undefined) {
|
|
|
- parent = null;
|
|
|
- }
|
|
|
- if(invokingState===undefined || invokingState===null) {
|
|
|
- invokingState = -1;
|
|
|
- }
|
|
|
- antlr4.ParserRuleContext.call(this, parent, invokingState);
|
|
|
- this.parser = parser;
|
|
|
- this.ruleIndex = ivprogParser.RULE_declaracaoTipoDado;
|
|
|
- this.informacaoTipoDado = null
|
|
|
- this.tokenTipoDado = null; // Token
|
|
|
- return this;
|
|
|
-}
|
|
|
-
|
|
|
-DeclaracaoTipoDadoContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
|
|
|
-DeclaracaoTipoDadoContext.prototype.constructor = DeclaracaoTipoDadoContext;
|
|
|
-
|
|
|
-DeclaracaoTipoDadoContext.prototype.PR_INTEIRO = function() {
|
|
|
- return this.getToken(ivprogParser.PR_INTEIRO, 0);
|
|
|
-};
|
|
|
-
|
|
|
-DeclaracaoTipoDadoContext.prototype.PR_REAL = function() {
|
|
|
- return this.getToken(ivprogParser.PR_REAL, 0);
|
|
|
-};
|
|
|
-
|
|
|
-DeclaracaoTipoDadoContext.prototype.PR_CARACTER = function() {
|
|
|
- return this.getToken(ivprogParser.PR_CARACTER, 0);
|
|
|
-};
|
|
|
-
|
|
|
-DeclaracaoTipoDadoContext.prototype.PR_CADEIA = function() {
|
|
|
- return this.getToken(ivprogParser.PR_CADEIA, 0);
|
|
|
-};
|
|
|
-
|
|
|
-DeclaracaoTipoDadoContext.prototype.PR_LOGICO = function() {
|
|
|
- return this.getToken(ivprogParser.PR_LOGICO, 0);
|
|
|
-};
|
|
|
-
|
|
|
-DeclaracaoTipoDadoContext.prototype.enterRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.enterDeclaracaoTipoDado(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-DeclaracaoTipoDadoContext.prototype.exitRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.exitDeclaracaoTipoDado(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-ivprogParser.DeclaracaoTipoDadoContext = DeclaracaoTipoDadoContext;
|
|
|
-
|
|
|
-ivprogParser.prototype.declaracaoTipoDado = function() {
|
|
|
-
|
|
|
- var localctx = new DeclaracaoTipoDadoContext(this, this._ctx, this.state);
|
|
|
- this.enterRule(localctx, 10, ivprogParser.RULE_declaracaoTipoDado);
|
|
|
- try {
|
|
|
- this.enterOuterAlt(localctx, 1);
|
|
|
- this.state = 74;
|
|
|
- this._errHandler.sync(this);
|
|
|
- switch(this._input.LA(1)) {
|
|
|
- case ivprogParser.PR_INTEIRO:
|
|
|
- this.state = 69;
|
|
|
- localctx.tokenTipoDado = this.match(ivprogParser.PR_INTEIRO);
|
|
|
- break;
|
|
|
- case ivprogParser.PR_REAL:
|
|
|
- this.state = 70;
|
|
|
- localctx.tokenTipoDado = this.match(ivprogParser.PR_REAL);
|
|
|
- break;
|
|
|
- case ivprogParser.PR_CARACTER:
|
|
|
- this.state = 71;
|
|
|
- localctx.tokenTipoDado = this.match(ivprogParser.PR_CARACTER);
|
|
|
- break;
|
|
|
- case ivprogParser.PR_CADEIA:
|
|
|
- this.state = 72;
|
|
|
- localctx.tokenTipoDado = this.match(ivprogParser.PR_CADEIA);
|
|
|
- break;
|
|
|
- case ivprogParser.PR_LOGICO:
|
|
|
- this.state = 73;
|
|
|
- localctx.tokenTipoDado = this.match(ivprogParser.PR_LOGICO);
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new antlr4.error.NoViableAltException(this);
|
|
|
- }
|
|
|
-
|
|
|
- localctx.informacaoTipoDado = new InformacaoTipoDado()
|
|
|
- localctx.informacaoTipoDado.setTipoDado(localctx.tokenTipoDado);
|
|
|
- localctx.informacaoTipoDado.setTrechoCodigoFonte(criarTrechoCodigoFonte(localctx.tokenTipoDado));
|
|
|
-
|
|
|
- } catch (re) {
|
|
|
- if(re instanceof antlr4.error.RecognitionException) {
|
|
|
- localctx.exception = re;
|
|
|
- this._errHandler.reportError(this, re);
|
|
|
- this._errHandler.recover(this, re);
|
|
|
- } else {
|
|
|
- throw re;
|
|
|
- }
|
|
|
- } finally {
|
|
|
- this.exitRule();
|
|
|
- }
|
|
|
- return localctx;
|
|
|
-};
|
|
|
-
|
|
|
-function ExpressaoContext(parser, parent, invokingState) {
|
|
|
- if(parent===undefined) {
|
|
|
- parent = null;
|
|
|
- }
|
|
|
- if(invokingState===undefined || invokingState===null) {
|
|
|
- invokingState = -1;
|
|
|
- }
|
|
|
- antlr4.ParserRuleContext.call(this, parent, invokingState);
|
|
|
- this.parser = parser;
|
|
|
- this.ruleIndex = ivprogParser.RULE_expressao;
|
|
|
- return this;
|
|
|
-}
|
|
|
-
|
|
|
-ExpressaoContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
|
|
|
-ExpressaoContext.prototype.constructor = ExpressaoContext;
|
|
|
-
|
|
|
-ExpressaoContext.prototype.INTEIRO = function() {
|
|
|
- return this.getToken(ivprogParser.INTEIRO, 0);
|
|
|
-};
|
|
|
-
|
|
|
-ExpressaoContext.prototype.CADEIA = function() {
|
|
|
- return this.getToken(ivprogParser.CADEIA, 0);
|
|
|
-};
|
|
|
-
|
|
|
-ExpressaoContext.prototype.enterRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.enterExpressao(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-ExpressaoContext.prototype.exitRule = function(listener) {
|
|
|
- if(listener instanceof ivprogListener ) {
|
|
|
- listener.exitExpressao(this);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-ivprogParser.ExpressaoContext = ExpressaoContext;
|
|
|
-
|
|
|
-ivprogParser.prototype.expressao = function() {
|
|
|
-
|
|
|
- var localctx = new ExpressaoContext(this, this._ctx, this.state);
|
|
|
- this.enterRule(localctx, 12, ivprogParser.RULE_expressao);
|
|
|
- var _la = 0; // Token type
|
|
|
- try {
|
|
|
- this.enterOuterAlt(localctx, 1);
|
|
|
- this.state = 78;
|
|
|
- _la = this._input.LA(1);
|
|
|
- if(!(_la===ivprogParser.INTEIRO || _la===ivprogParser.CADEIA)) {
|
|
|
- this._errHandler.recoverInline(this);
|
|
|
- }
|
|
|
- else {
|
|
|
- this._errHandler.reportMatch(this);
|
|
|
- this.consume();
|
|
|
- }
|
|
|
- } catch (re) {
|
|
|
- if(re instanceof antlr4.error.RecognitionException) {
|
|
|
- localctx.exception = re;
|
|
|
- this._errHandler.reportError(this, re);
|
|
|
- this._errHandler.recover(this, re);
|
|
|
- } else {
|
|
|
- throw re;
|
|
|
- }
|
|
|
- } finally {
|
|
|
- this.exitRule();
|
|
|
- }
|
|
|
- return localctx;
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-exports.ivprogParser = ivprogParser;
|