Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang eopl
- (define lexica
- '((white-sp
- (whitespace) skip)
- (comment
- ("%" (arbno (not #\newline))) skip)
- (number
- (digit (arbno digit)) number)
- (texto
- (letter (arbno (or letter digit))) string)
- (number
- ("-" digit (arbno digit)) number)))
- (define gramatica
- '(
- (programa (expresion) un-programa)
- (expresion (number) numero-lit)
- (expresion ("\"" texto "\"") texto-lit)
- (expresion (primitiva "[" (separated-list expresion ";") "]") primitiva-exp)
- (expresion (texto) identificador)
- (primitiva ("+") primitiva-sum)
- (primitiva ("-") primitiva-resta)
- (primitiva ("*") primitiva-mult)
- (primitiva ("/") primitiva-div)
- (primitiva ("concat") primitiva-concat)
- (primitiva ("length") primitiva-lenght)
- ;;Viene lo nuevo
- (expresion ("Si" expresion "entonces" expresion "sino" expresion "fin") cond-exp)
- ;;Variables locales
- (expresion ("declarar" (separated-list texto "=" expresion ";") "haga" expresion "fin") variableLocal-exp)
- ;;Procedimientosx
- (expresion ("procedimiento" "[" (separated-list texto ";") "]" "haga" expresion "fin") procedimiento-exp)
- ;evaluar procedimiento
- (expresion ("evaluar" texto "enviando" "[" (separated-list expresion ";") "]" "fin") evaluacion-exp)
- )
- )
- ;Construidos automáticamente:
- (sllgen:make-define-datatypes lexica gramatica)
- (define show-the-datatypes
- (lambda () (sllgen:list-define-datatypes lexica gramatica)))
- ;*******************************************************************************************
- ;Parser, Scanner, Interfaz
- ;El FrontEnd (Análisis léxico (scanner) y sintáctico (parser) integrados)
- (define scan&parse
- (sllgen:make-string-parser lexica gramatica))
- ;El Analizador Léxico (Scanner)
- (define just-scan
- (sllgen:make-string-scanner lexica gramatica))
- ;El Interpretador (FrontEnd + Evaluación + señal para lectura )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement