require(“./core”); var types = require(“../lib/types”); var def = types.Type.def; var or = types.Type.or; var geq = require(“../lib/shared”).geq;
def(“ForOfStatement”)
.bases("Statement") .build("left", "right", "body") .field("left", or( def("VariableDeclaration"), def("Expression"))) .field("right", def("Expression")) .field("body", def("Statement"));
def(“LetStatement”)
.bases("Statement") .build("head", "body") // TODO Deviating from the spec by reusing VariableDeclarator here. .field("head", [def("VariableDeclarator")]) .field("body", def("Statement"));
def(“LetExpression”)
.bases("Expression") .build("head", "body") // TODO Deviating from the spec by reusing VariableDeclarator here. .field("head", [def("VariableDeclarator")]) .field("body", def("Expression"));
def(“GraphExpression”)
.bases("Expression") .build("index", "expression") .field("index", geq(0)) .field("expression", def("Literal"));
def(“GraphIndexExpression”)
.bases("Expression") .build("index") .field("index", geq(0));