On this page:
racketish-surface
racketish-surface?
interp-racketish-surface
racketish-unique
racketish-unique?
interp-racketish-unique
8.10
3.1.13 v11 Languages

 (require cpsc411/langs/v11) package: cpsc411-lib

racketish-surface : grammar?

  p ::= (module (define x (lambda (x ...) value)) ... value)
     
  value ::= triv
  | (quote s-expr)
  | (value value ...)
  | (macro-id value ...)
  | (let ([x value] ...) value)
  | (if value value value)
  | (call value value ...)
     
  triv ::= fixnum
  | prim-f
  | x
  | #t
  | #f
  | empty
  | (void)
  | (error uint8)
  | ascii-char-literal
  | (lambda (x ...) value)
  | vec-literal
     
  x ::= name?
  | prim-f
     
  s-expr ::= #t
  | #f
  | fixnum
  | ascii-char-literal
  | (s-expr ...)
     
  macro-id ::= vector
  | and
  | or
  | begin
     
  prim-f ::= *
  | +
  | -
  | eq?
  | <
  | <=
  | >
  | >=
  | fixnum?
  | boolean?
  | empty?
  | void?
  | ascii-char?
  | error?
  | not
  | pair?
  | procedure?
  | vector?
  | cons
  | car
  | cdr
  | make-vector
  | vector-length
  | vector-set!
  | vector-ref
  | procedure-arity
     
  fixnum ::= int61?
     
  uint8 ::= uint8?
     
  ascii-char-literal ::= ascii-char-literal?
     
  vec-literal ::= host:vector?

procedure

(racketish-surface? a)  boolean?

  a : any/c
Decides whether a is a valid program in the racketish-surface grammar, represented as a quoted datum. The first non-terminal in the grammar defines valid programs.
Evaluates a racketish-surface program to a value.

racketish-unique : grammar?

  p ::= (module (define aloc (lambda (aloc ...) value)) ... value)
     
  value ::= triv
  | (quote s-expr)
  | (vector value ...)
  | (value value ...)
  | (macro-id value ...)
  | (let ([aloc value] ...) value)
  | (if value value value)
  | (call value value ...)
     
  triv ::= fixnum
  | prim-f
  | aloc
  | #t
  | #f
  | empty
  | (void)
  | (error uint8)
  | ascii-char-literal
  | (lambda (aloc ...) value)
     
  s-expr ::= #t
  | #f
  | fixnum
  | ascii-char-literal
  | (s-expr ...)
     
  macro-id ::= and
  | or
  | quote
  | vector
  | begin
     
  prim-f ::= *
  | +
  | -
  | eq?
  | <
  | <=
  | >
  | >=
  | fixnum?
  | boolean?
  | empty?
  | void?
  | ascii-char?
  | error?
  | not
  | pair?
  | procedure?
  | vector?
  | cons
  | car
  | cdr
  | make-vector
  | vector-length
  | vector-set!
  | vector-ref
  | procedure-arity
     
  aloc ::= aloc?
     
  fixnum ::= int61?
     
  uint8 ::= uint8?
     
  ascii-char-literal ::= ascii-char-literal?

procedure

(racketish-unique? a)  boolean?

  a : any/c
Decides whether a is a valid program in the racketish-unique grammar, represented as a quoted datum. The first non-terminal in the grammar defines valid programs.

procedure

(interp-racketish-unique a)  any/c

  a : racketish-unique?
Evaluates a racketish-unique program to a value.