procedure
( read-program [source-namein])
source-name:any/c=(object-namein)in:input-port?=(current-input-port)
struct
(struct syntax-element (location))
location:source-location?
struct
(struct identifier syntax-element (symbol))
symbol:symbol?
struct
(struct function syntax-element (nameparametersbody))
struct
(struct variable-declaration syntax-element (nameinitializer))
name:identifier?
struct
struct
(struct expression:literal expression (value))
value:literal?
struct
struct
(struct expression:reference expression (identifier))
identifier:identifier?
struct
(struct expression:member-reference expression (baseproperty))
base:expression?
struct
(struct operator syntax-element (symbol))
symbol:symbol?struct
(struct expression:postfix expression (operandoperator))
operand:expression?operator:operator?struct
(struct expression:binary expression (leftoperatorright))
left:expression?operator:operator?right:expression?
struct
(struct expression:conditional expression (testtruefalse))
test:expression?true:expression?false:expression?
struct
(struct expression:call expression (functionarguments))
function:expression?
struct
(struct expression:new expression (constructorarguments))
constructor:expression?
struct
(struct expression:function expression (definition))
definition:function?
struct
(struct expression:comma expression (leftright))
left:expression?right:expression?
struct
(struct literal syntax-element ())
struct
(struct literal:null literal ())
struct
(struct literal:boolean literal (value))
value:boolean?struct
(struct literal:number literal (value))
value:number?struct
(struct literal:string literal (value))
value:string?
struct
(struct literal:regexp literal (patternflags))
pattern:string?flags:string?
struct
(struct literal:array literal (elements))
struct
(struct literal:object literal (properties))
struct
(struct property-initializer syntax-element (name))
struct
(struct property-initializer:data property-initializer (value))
value:expression?struct
(struct property-initializer:get property-initializer (function))
function:function?struct
(struct property-initializer:set property-initializer (function))
function:function?
A property-initializer:get initializer must be an anonymous function of no arguments. A property-initializer:set initializer must be an anonymous function of one argument.
struct
struct
(struct statement:block statement (body))
struct
(struct statement:break statement (label))
struct
(struct statement:continue statement (label))
struct
struct
(struct statement:do statement (bodytest))
body:statement?test:expression?
struct
struct
(struct statement:expression statement (expression))
expression:expression?
struct
(struct statement:for statement (initializertestupdatebody))
body:statement?
struct
(struct statement:for-in stmt(indexexpressionbody))
expression:expression?body:statement?
struct
(struct statement:if statement (testtruefalse))
test:expression?true:statement?
struct
(struct statement:label statement (labelstatement))
label:identifier?statement:statement?
struct
(struct statement:return statement (expression))
struct
(struct statement:switch statement (expressionbody))
expression:expression?struct
(struct case-clause syntax-element (expressionbody))
expression:expression?struct
(struct default-clause syntax-element (body))
struct
(struct statement:throw statement (expression))
expression:expression?
struct
catch-idcatch-bodyfinally-body))body:statement:block?
struct
(struct statement:var statement (declarations))
struct
(struct statement:while statement (testbody))
test:expression?body:statement?
struct
(struct statement:with statement (expressionbody))
expression:expression?body:statement?