Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang eopl
- ; <programa> := (un-programa) expresion
- ;
- ; <expresion> := (numero-lit) <número>
- ; := (texto-lit)"<letras>"
- ; := (primitiva-exp) <primitiva> [expresion (expresion*) (;)]
- ;
- ; <primitiva> := (suma) +
- ; := (resta) -
- ; := (modulo) mod
- ; := (multiplicacion) *
- ; := (concat) concat
- ; := (length) length
- ;
- ; <número> digito digito*
- ; <letras> letra (letra | digito)*
- ;
- (define lexica
- '(
- (espacio (whitespace) skip)
- (numero (digit (arbno digit)) number)
- (letra (letter (arbno (or digit letter))) string)
- )
- )
- (define gramatical
- '(
- (programa (expresion) un-programa)
- (expresion (numero) numero-lit)
- (expresion (letra) texto-lit)
- (expresion (primitiva "[" (separated-list expresion ";") "]") primitiva-exp)
- (primitiva ("+") suma)
- (primitiva ("-") resta)
- (primitiva ("mod") mod)
- (primitiva ("*") multiplicacion)
- (primitiva ("concat") concat)
- (primitiva ("length") length)
- )
- )
- (sllgen:make-define-datatypes lexica gramatical)
- ;;(sllgen:list-define-datatypes lexica gramatical)
- (define escanear
- (sllgen:make-string-scanner lexica gramatical)
- )
- (define parsear
- (sllgen:make-string-parser lexica gramatical)
- )
- (define interpretador
- (sllgen:make-rep-loop "777knoysi777 "
- (lambda (programa) programa)
- (sllgen:make-stream-parser
- lexica
- gramatical)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement