-
Notifications
You must be signed in to change notification settings - Fork 0
10.FileEditor
El Editor de ficheros es una de las secciones más importantes y complejas de nuestro proyecto, se trata de un editor
de Monaco
(un proyecto de Microsoft) modificado y con una extensión creada por nosotros que nos permita analizar, **
interpretar**, autocompletar, marcar y mostrar documentación.
En este ejemplo se ve el proceso para abrir un fichero, su ejecución y varias pruebas, entre ellas mostrar errores (no
hay en el código, solo es un ejemplo del mensaje y la gravedad del posible error), añadir un breakpoint
, ejecutar un
paso o ejecutar la simulación.
Como podemos observar, la línea de ejecución en color azul verdoso corresponde a la etapa IF.
Como podemos ver en el ejemplo del inicio se puede autocompletar las instrucciones, para ello se han puesto una serie de ejemplos que nos añaden los registros y desplazamientos de ejemplo.
Para mostrar la documentación solo debemos pasar el ratón por encima de la palabra (instrucción) y se nos mostrará los datos de la instrucción (En inglés).
Todos estos ejemplos se encuentran definidos en The DLX Instruction Set, BYU Edition
.
Como hemos visto en el ejemplo, el proyecto nos muestra errores simples, pero en caso de tener errores más complejos, estos se verán reflejados una vez que sincronicemos nuestro código con el servidor y esté intérprete el fichero.
Estos errores se muestran en función de la gravedad, con un mensaje descriptivo.
export type TypeErrorInCode = {
line: number;
message: string;
severity: EnumSeverity;
}
Leer la sección 06.TheBreakpoints.md
para comprender como se ajustan los puntos de ruptura (breakpoints) en el
editor.
Después de pedir una simulación, si todo va correctamente (canSimulate
) nos permitirá ejecutar nuestro código, en caso
fallo, el campo de errors
nos reportará los distintos fallos puede ocurrir en nuestro código y que impidan su
ejecución.
export type TypeSimulationInitRequest = {
id: string;
filename: string;
date: string;
content: string;
breakpoints: TypeLine[];
registers: TypeRegisterToUpdate[];
memory: TypeMemoryToUpdate[];
};
export type TypeSimulationInitResponse = {
filename: string;
id: string;
date: string;
lines: number;
canSimulate: boolean;
errors: TypeErrorInCode[];
machineDirectives: TypeDirectiveData[];
machineInstructions: TypeInstructionsData[];
runner: TypeSimulationStep[];
};