Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 0 additions & 23 deletions packages/interpreter/src/index.ts

This file was deleted.

31 changes: 31 additions & 0 deletions packages/interpreter/src/interpretador.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Interfaz base para todas las expresiones
export interface Expresion {
interpretar(): number;
}

// Expresión terminal: representa un número
export class Numero implements Expresion {
constructor(private valor: number) {}

interpretar(): number {
return this.valor;
}
}

// Expresión no terminal: suma dos expresiones
export class Suma implements Expresion {
constructor(private izquierda: Expresion, private derecha: Expresion) {}

interpretar(): number {
return this.izquierda.interpretar() + this.derecha.interpretar();
}
}

// Expresión no terminal: resta dos expresiones
export class Resta implements Expresion {
constructor(private izquierda: Expresion, private derecha: Expresion) {}

interpretar(): number {
return this.izquierda.interpretar() - this.derecha.interpretar();
}
}
9 changes: 0 additions & 9 deletions packages/interpreter/tests/index.test.ts

This file was deleted.

20 changes: 20 additions & 0 deletions packages/interpreter/tests/interpretador.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { Numero, Suma, Resta } from '../src/interpretador';

// Test: 5 + 3 = 8
test('Suma simple', () => {
const expresion = new Suma(new Numero(5), new Numero(3));
expect(expresion.interpretar()).toBe(8);
});

// Test: 10 - 4 = 6
test('Resta simple', () => {
const expresion = new Resta(new Numero(10), new Numero(4));
expect(expresion.interpretar()).toBe(6);
});

// Test: (10 - 2) + 1 = 9
test('Expresión combinada', () => {
const resta = new Resta(new Numero(10), new Numero(2));
const suma = new Suma(resta, new Numero(1));
expect(suma.interpretar()).toBe(9);
});