|
@@ -24,7 +24,7 @@ export class VcatComponent {
|
|
|
|
|
|
public run (): void {
|
|
public run (): void {
|
|
try {
|
|
try {
|
|
- console.log(vcat)
|
|
|
|
|
|
+ vcat.LanguageService.setLang("pt");
|
|
const ast = vcat.SemanticAnalyser.analyseFromSource(this.textCode);
|
|
const ast = vcat.SemanticAnalyser.analyseFromSource(this.textCode);
|
|
const proc = new vcat.IVProgProcessor(ast);
|
|
const proc = new vcat.IVProgProcessor(ast);
|
|
// Registrando um objeto que fornece o minimo necessário para o processador
|
|
// Registrando um objeto que fornece o minimo necessário para o processador
|
|
@@ -32,12 +32,12 @@ export class VcatComponent {
|
|
proc.registerOutput({
|
|
proc.registerOutput({
|
|
sendOutput: console.log,
|
|
sendOutput: console.log,
|
|
});
|
|
});
|
|
- // IVProgProcessor.interpretAST é uma função assíncrona
|
|
|
|
|
|
+
|
|
// Ela devolve o estado final do programa (valores finais das variáveis declaradas dentro da função "inicio" ou no escopo global)
|
|
// Ela devolve o estado final do programa (valores finais das variáveis declaradas dentro da função "inicio" ou no escopo global)
|
|
// A classe Store em src/processor/store/store.ts descreve o parametro mas no contexto atual ele é totalmente irrelevante
|
|
// A classe Store em src/processor/store/store.ts descreve o parametro mas no contexto atual ele é totalmente irrelevante
|
|
proc.interpretAST().then((_finalProgramState: any) => {
|
|
proc.interpretAST().then((_finalProgramState: any) => {
|
|
console.log("Programa executado com sucesso!")
|
|
console.log("Programa executado com sucesso!")
|
|
- });
|
|
|
|
|
|
+ }).catch(console.error);
|
|
} catch (error: any) {
|
|
} catch (error: any) {
|
|
// Caso haja erro de sintaxe ou semântico, antes ou durante a interpretação do código uma exceção será lançada
|
|
// Caso haja erro de sintaxe ou semântico, antes ou durante a interpretação do código uma exceção será lançada
|
|
// Todo objeto error derivado dos erros citados acima possuem esses campos definidos
|
|
// Todo objeto error derivado dos erros citados acima possuem esses campos definidos
|
|
@@ -46,10 +46,12 @@ export class VcatComponent {
|
|
// Vê: src/ast/error/syntaxError.js, src/processor/error/runtimeError.js, src/processor/error/semanticError.js e seus respectivos factories
|
|
// Vê: src/ast/error/syntaxError.js, src/processor/error/runtimeError.js, src/processor/error/semanticError.js e seus respectivos factories
|
|
// NOTA: Em alguns casos a informação de linha e coluna podem nao estar disponivel
|
|
// NOTA: Em alguns casos a informação de linha e coluna podem nao estar disponivel
|
|
// id representa o identificador unico do erro, linha e coluna onde no codigo textual ocorreu o problema
|
|
// id representa o identificador unico do erro, linha e coluna onde no codigo textual ocorreu o problema
|
|
- if (error.id && error.context)
|
|
|
|
|
|
+ if (error.id && error.context) {
|
|
console.error(error.id, error.context.line, error.context.column);
|
|
console.error(error.id, error.context.line, error.context.column);
|
|
- else
|
|
|
|
|
|
+ console.error(error);
|
|
|
|
+ } else {
|
|
console.error(error)
|
|
console.error(error)
|
|
|
|
+ }
|
|
// a linha e coluna foi a estrategia pensada para poder associar o erro com o elemento visual que o gerou
|
|
// a linha e coluna foi a estrategia pensada para poder associar o erro com o elemento visual que o gerou
|
|
// uma vez que seria possivel associar seções do texto com o elemento que o gerou
|
|
// uma vez que seria possivel associar seções do texto com o elemento que o gerou
|
|
}
|
|
}
|