Download - Ejemplo Práctico de un compilador pequeño

Transcript
Page 1: Ejemplo Práctico de un compilador pequeño

Ejemplo Práctico de un compilador pequeño

Lenguaje Fuente

Análisis Léxico

Análisis Sintáctico

Generador de código objeto

Lenguaje Objeto

Page 2: Ejemplo Práctico de un compilador pequeño

Gramática

ASG VAR = EXP ;

EXP TER REX

REX + EXP | - EXP | VACIO

TER ( EXP ) | VAR | CTE

VAR A | ... | Z

CTE 0 | ... | 9

Page 3: Ejemplo Práctico de un compilador pequeño

Lenguaje Maquina Objeto:

PUSHC CTE top := top + 1;pila[top] := cte;

PUSHA dir.var. top := top + 1;

pila[top] := dir.var.

LOAD pila[top] := mem[pila[top]]

STORE mem[pila[top-1]] := pila[top];top := top-2;

NEG pila[top] := - pila[top];

ADD pila[top-1] := pila[top] + pila[top-1];top := top-1;

Pila

Variables

Programa