Advertisement
cardel

Untitled

Jun 24th, 2019
1,033
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 1.48 KB | None | 0 0
  1. #lang eopl
  2.  
  3.  
  4. ; <programa> := (un-programa)    expresion
  5. ;
  6. ; <expresion> := (numero-lit) <número>              
  7. ;             := (texto-lit)"<letras>"
  8. ;             := (primitiva-exp) <primitiva> [expresion (expresion*) (;)]
  9. ;
  10. ; <primitiva> := (suma) +
  11. ;             := (resta) -
  12. ;             := (modulo) mod
  13. ;             := (multiplicacion) *
  14. ;             := (concat) concat
  15. ;             := (length) length
  16. ;
  17. ; <número> digito digito*
  18. ; <letras> letra (letra | digito)*
  19. ;
  20.  
  21.  
  22. (define lexica
  23.   '(
  24.     (espacio (whitespace) skip)
  25.     (numero (digit (arbno digit)) number)
  26.     (letra (letter (arbno (or digit letter))) string)
  27.     )
  28.   )
  29.  
  30. (define gramatical
  31.   '(
  32.     (programa (expresion) un-programa)
  33.     (expresion (numero) numero-lit)
  34.     (expresion (letra) texto-lit)
  35.     (expresion (primitiva "[" (separated-list expresion ";") "]") primitiva-exp)
  36.     (primitiva ("+") suma)
  37.     (primitiva ("-") resta)
  38.     (primitiva ("mod") mod)
  39.     (primitiva ("*") multiplicacion)
  40.     (primitiva ("concat") concat)
  41.     (primitiva ("length") length)
  42.     )
  43.   )
  44.  
  45. (sllgen:make-define-datatypes lexica gramatical)
  46. ;;(sllgen:list-define-datatypes lexica gramatical)
  47.  
  48.  
  49.  
  50. (define escanear
  51.   (sllgen:make-string-scanner lexica gramatical)
  52. )
  53.  
  54. (define parsear
  55.   (sllgen:make-string-parser lexica gramatical)
  56. )
  57.  
  58.  
  59. (define interpretador
  60.   (sllgen:make-rep-loop "777knoysi777 "
  61.     (lambda (programa)  programa)
  62.     (sllgen:make-stream-parser
  63.       lexica
  64.       gramatical)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement