8.10
3.1.12 v10 Languages
(require cpsc411/langs/v10) | package: cpsc411-lib |
NOTE! This library is unstable and should not be used.
racketish-core-v10 : grammar?
p | ::= | (module (define x value) ... value) | ||
value | ::= | triv | ||
| | (call value value ...) | |||
| | (let ([x value] ...) value) | |||
| | (letrec ([x value] ...) value) | |||
| | (if value value value) | |||
triv | ::= | x | ||
| | fixnum | |||
| | #t | |||
| | #f | |||
| | () | |||
| | (void) | |||
| | (error uint8) | |||
| | ascii-char-literal | |||
| | (lambda (x ...) value) | |||
x | ::= | name? | ||
| | prim-f | |||
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? |
procedure
(racketish-core-v10? a) → boolean?
a : any/c
Decides whether a is a valid program in the racketish-core-v10 grammar, represented as a quoted datum. The first non-terminal in the grammar defines valid programs.
procedure
a : racketish-core-v10?
Evaluates a racketish-core-v10 program to a value.
assigned-lang-v10 : grammar?
p | ::= | (module value) | ||
effect | ::= | (set! aloc value) | ||
value | ::= | triv | ||
| | (call value value ...) | |||
| | (letrec ([aloc value] ...) value) | |||
| | (let (info ((assigned (aloc ...)))) ([aloc value] ...) value) | |||
| | (if value value value) | |||
| | (begin effect ... value) | |||
triv | ::= | fixnum | ||
| | prim-f | |||
| | aloc | |||
| | #t | |||
| | #f | |||
| | () | |||
| | (void) | |||
| | (error uint8) | |||
| | ascii-char-literal | |||
| | (lambda (aloc ...) e) | |||
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 |
procedure
(assigned-lang-v10? a) → boolean?
a : any/c
Decides whether a is a valid program in the assigned-lang-v10 grammar, represented as a quoted datum. The first non-terminal in the grammar defines valid programs.
procedure
(interp-assigned-lang-v10 a) → any/c
a : assigned-lang-v10?
Evaluates a assigned-lang-v10 program to a value.
exprs-safe-lang-v10 : grammar?
p | ::= | (module (define aloc value) ... value) | ||
value | ::= | triv | ||
| | (call value value ...) | |||
| | (let ([aloc value] ...) value) | |||
| | (letrec ([aloc value] ...) value) | |||
| | (if value value value) | |||
triv | ::= | aloc | ||
| | prim-f | |||
| | fixnum | |||
| | #t | |||
| | #f | |||
| | () | |||
| | (void) | |||
| | (error uint8) | |||
| | ascii-char-literal | |||
| | (lambda (x ...) value) | |||
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
(exprs-safe-lang-v10? a) → boolean?
a : any/c
Decides whether a is a valid program in the exprs-safe-lang-v10 grammar, represented as a quoted datum. The first non-terminal in the grammar defines valid programs.
procedure
a : exprs-safe-lang-v10?
Evaluates a exprs-safe-lang-v10 program to a value.