Advertisement
cardel

Untitled

Apr 17th, 2017
324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1.  
  2. #lang eopl
  3.  
  4. (define lexica
  5. '((white-sp
  6. (whitespace) skip)
  7. (comment
  8. ("%" (arbno (not #\newline))) skip)
  9. (number
  10. (digit (arbno digit)) number)
  11. (texto
  12. (letter (arbno (or letter digit))) string)
  13. (number
  14. ("-" digit (arbno digit)) number)))
  15.  
  16.  
  17. (define gramatica
  18. '(
  19. (programa (expresion) un-programa)
  20. (expresion (number) numero-lit)
  21. (expresion ("\"" texto "\"") texto-lit)
  22. (expresion (primitiva "[" (separated-list expresion ";") "]") primitiva-exp)
  23. (expresion (texto) identificador)
  24. (primitiva ("+") primitiva-sum)
  25. (primitiva ("-") primitiva-resta)
  26. (primitiva ("*") primitiva-mult)
  27. (primitiva ("/") primitiva-div)
  28. (primitiva ("concat") primitiva-concat)
  29. (primitiva ("length") primitiva-lenght)
  30. ;;Viene lo nuevo
  31. (expresion ("Si" expresion "entonces" expresion "sino" expresion "fin") cond-exp)
  32. ;;Variables locales
  33. (expresion ("declarar" (separated-list texto "=" expresion ";") "haga" expresion "fin") variableLocal-exp)
  34. ;;Procedimientosx
  35. (expresion ("procedimiento" "[" (separated-list texto ";") "]" "haga" expresion "fin") procedimiento-exp)
  36. ;evaluar procedimiento
  37. (expresion ("evaluar" texto "enviando" "[" (separated-list expresion ";") "]" "fin") evaluacion-exp)
  38. )
  39. )
  40.  
  41.  
  42. ;Construidos automáticamente:
  43.  
  44. (sllgen:make-define-datatypes lexica gramatica)
  45.  
  46. (define show-the-datatypes
  47. (lambda () (sllgen:list-define-datatypes lexica gramatica)))
  48.  
  49. ;*******************************************************************************************
  50. ;Parser, Scanner, Interfaz
  51.  
  52. ;El FrontEnd (Análisis léxico (scanner) y sintáctico (parser) integrados)
  53.  
  54. (define scan&parse
  55. (sllgen:make-string-parser lexica gramatica))
  56.  
  57. ;El Analizador Léxico (Scanner)
  58.  
  59. (define just-scan
  60. (sllgen:make-string-scanner lexica gramatica))
  61.  
  62. ;El Interpretador (FrontEnd + Evaluación + señal para lectura )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement