@designliquido/lincones-sqlite
Version:
Implementação de LinConEs para SQLite.
43 lines • 1.76 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AvaliadorSintatico = void 0;
const tipos_de_simbolos_1 = __importDefault(require("../comum/fontes/tipos-de-simbolos"));
const avaliador_sintatico_base_1 = require("../comum/fontes/avaliador-sintatico/avaliador-sintatico-base");
class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBase {
declaracao() {
switch (this.simbolos[this.atual].tipo) {
case tipos_de_simbolos_1.default.ATUALIZAR:
return this.comandoAtualizar();
case tipos_de_simbolos_1.default.CRIAR:
return this.comandoCriar();
case tipos_de_simbolos_1.default.EXCLUIR:
return this.comandoExcluir();
case tipos_de_simbolos_1.default.INSERIR:
return this.comandoInserir();
case tipos_de_simbolos_1.default.SELECIONAR:
return this.comandoSelecionar();
default:
this.avancar();
return null;
}
}
analisar(retornoLexador) {
this.erros = [];
this.atual = 0;
this.bloco = 0;
this.simbolos = (retornoLexador === null || retornoLexador === void 0 ? void 0 : retornoLexador.simbolos) || [];
const declaracoes = [];
while (!this.estaNoFinal()) {
declaracoes.push(this.declaracao());
}
return {
comandos: declaracoes,
erros: this.erros
};
}
}
exports.AvaliadorSintatico = AvaliadorSintatico;
//# sourceMappingURL=avaliador-sintatico.js.map