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, [email protected] 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.html
parsesparse.js
and displays its AST. - The page depends on on
parse.js
andtokens.js
. - The file
parse.js
contains 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
tokens
retorna 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