CC4
  • Compiladores
  • Laboratorios
    • Lab 1 (COOL)
    • Lab 2 (Lexer)
    • Lab 3 (RDP)
    • Lab 4 (JCUP)
    • Lab 5 (Symbol Table)
    • Lab 6 (Análisis Semántico I)
    • Lab 7 (Análisis Semántico II)
    • Lab 8 (RISC-V)
    • Lab 9 (CodeGen I)
    • Lab 10 (CodeGen II)
    • Lab 11 (Optimizaciones)
  • Proyectos
    • Instalación Material
    • Análisis Léxico
    • Análisis Sintáctico
    • Análisis Semántico
    • Generación de Código
  • Manuales
    • Manual de COOL
    • Manual JLex
    • Manual JCup
    • COOL Runtime System
  • Guías
    • Guía CodeGen
Powered by GitBook
On this page

Was this helpful?

  1. Laboratorios

Lab 2 (Lexer)

En este lab implementarán la primera fase de un compilador, un analizador léxico, para una version sin objetos de COOL. Lo llamaremos CNOOL Classroom Not Object Oriented Language.

Un analizador léxico conforma la primer parte de un compilador. La función principal de un analizador léxico es tomar una cadena de caracteres y separarla en tokens. Cada uno de estos tokens representa un símbolo del lenguaje de programación.

Con el objetivo de ayudarlos en su proyecto, a lo largo de los labs implementaremos fases del proyecto en lenguajes más simples, como ahorita con CNOOL dejando de lado los objetos y los comentarios y diciendo que únicamente existen tres tipos básicos: String, Int y Bool.

La gramática que usarán es una versión modificada de la gramática de COOL, la llamaremos CNOOL:

program ::= [feature]+
feature ::= ID([formal[,formal]*]) : TYPE {expr};
formal  ::= ID : TYPE
expr    ::= ID <- expr
        |   ID([expr[,expr]*])    
        |   ID : TYPE [<- expr]
        |   {[expr;]+}
        |   expr + expr
        |   expr - expr
        |   expr * expr
        |   expr / expr
        |   ~ expr
        |   expr < expr
        |   expr <= expr
        |   expr = expr
        |   not expr
        |   (expr)
        |   ID
        |   integer
        |   string
        |   true
        |   false

Para reciclar los archivos que ya tienen instalados en su máquina, emplearemos el mismo comando que deben utilizar para el proyecto 1:

make -f /usr/class/cs143/assignments/PA2J/Makefile

De todos los archivos que se copiarán, únicamente deben de modificar cool.lex, y agregar las expresiones regulares necesarias para que se generen los tokens de la gramática. Por razones de funcionamiento, no modificaremos el archivo TokenConstants.java, que contiene todos los tokens necesarios para el proyecto. Para facilitar la implementación, retiraremos los comentarios y los strings multilínea, así como el soporte para el caracter ‘\n’ de ellos. Tienen consultar el manual de JLex para este laboratorio.

Referencias

PreviousLab 1 (COOL)NextLab 3 (RDP)

Last updated 5 years ago

Was this helpful?

- Manual de JLex.

JFlex Manual