Práctica: Analizador Léxico para Un Subconjunto de JavaScript
Vamos a trabajar a partir de este repo de Douglas Crockford:
- https://github.com/douglascrockford/TDOP
- Autor: Douglas Crockford, douglas@crockford.com en la Wikipedia
- Fecha que figura en el repo: 2010-11-12
- Vea una versión modificada en funcionamiento en http://crguezl.github.io/ull-etsii-grado-pl-minijavascript/
Descripción:
- tdop.html contains a description of Vaughn Pratt’s Top Down Operator Precedence, and describes the parser whose lexer we are going to write in this lab. Is a simplified version of JavaScript.
- The file
index.htmlparsesparse.jsand displays its AST. - The page depends on on
parse.jsandtokens.js. - The file
parse.jscontains the Simplified JavaScript parser. - tokens.js produces an array of token objects from a string.
Douglas Crockford escribió este analizador léxico sin usar expresiones regulares. Crockford prescindió de las regexp porque el analizador sintáctico corresponde a un subconjunto de JS que no tiene - entre otras cosas - expresiones regulares y el autor quería que el analizador se pudiera analizar a si mismo.
Requisitos
- Douglas Crockford escribió este analizador léxico sin usar expresiones regulares. Reescriba el analizador léxico en tokens.js usando expresiones regulares.
- Evite que se hagan copias de la cadena siendo procesada. Muévase
dentro de la misma cadena usando
lastIndex. Quizá usar la opción sticky le ayude. Tiene una solución dada por el profesor en - Modifique la solución de Crockford usado regexps en tokens.js
- Añada un server (vea aquí un ejemplo) para el HTML y haga el despliegue de su aplicación en la máquina virtual del iaas o en Heroku
- Use sessions para controlar quien accede a la aplicación. Puede ver un ejemplo de como hacerlo en los ficheros:
- Cuando haga la entrega indique los enlaces a los repos (analizador) así como a los despliegues
Recursos
- Una solución incompleta de esta práctica se encuentra en:
- https://github.com/crguezl/ull-etsii-grado-pl-minijavascript/tree/gh-pages en github.
- Veala en funcionamiento en http://crguezl.github.io/ull-etsii-grado-pl-minijavascript/
- El método
tokensretorna el array de tokens https://github.com/crguezl/ull-etsii-grado-pl-minijavascript/blob/gh-pages/tokens.js - Ejemplo de server con cookies y sessions: ULL-ESIT-PL-1617/evaluar-manejo-de-cookies-y-sessions-en-expressjs.
- Apuntes de Heroku
- Como Desplegar una Aplicación Web en iaas.ull.es
- Apuntes: Expresiones Regulares
- Eloquent JS: Chapter 9: Regular Expressions
Notas para el Profesor
[~/srcPLgrado/lexical_analysis_top_down_operator_precedence(gh-pages)]$ pwd -P
/Users/casiano/local/src/javascript/PLgrado/lexical_analysis_top_down_operator_precedence