require(“./core”); var types = require(“../lib/types”); var def = types.Type.def; var or = types.Type.or; var builtin = types.builtInTypes; var isString = builtin.string; var isBoolean = builtin.boolean;
// Note that none of these types are buildable because the Mozilla Parser // API doesn't specify any builder functions, and nobody uses E4X anymore.
def(“XMLDefaultDeclaration”)
.bases("Declaration") .field("namespace", def("Expression"));
def(“XMLAnyName”).bases(“Expression”);
def(“XMLQualifiedIdentifier”)
.bases("Expression") .field("left", or(def("Identifier"), def("XMLAnyName"))) .field("right", or(def("Identifier"), def("Expression"))) .field("computed", isBoolean);
def(“XMLFunctionQualifiedIdentifier”)
.bases("Expression") .field("right", or(def("Identifier"), def("Expression"))) .field("computed", isBoolean);
def(“XMLAttributeSelector”)
.bases("Expression") .field("attribute", def("Expression"));
def(“XMLFilterExpression”)
.bases("Expression") .field("left", def("Expression")) .field("right", def("Expression"));
def(“XMLElement”)
.bases("XML", "Expression") .field("contents", [def("XML")]);
def(“XMLList”)
.bases("XML", "Expression") .field("contents", [def("XML")]);
def(“XML”).bases(“Node”);
def(“XMLEscape”)
.bases("XML") .field("expression", def("Expression"));
def(“XMLText”)
.bases("XML") .field("text", isString);
def(“XMLStartTag”)
.bases("XML") .field("contents", [def("XML")]);
def(“XMLEndTag”)
.bases("XML") .field("contents", [def("XML")]);
def(“XMLPointTag”)
.bases("XML") .field("contents", [def("XML")]);
def(“XMLName”)
.bases("XML") .field("contents", or(isString, [def("XML")]));
def(“XMLAttribute”)
.bases("XML") .field("value", isString);
def(“XMLCdata”)
.bases("XML") .field("contents", isString);
def(“XMLComment”)
.bases("XML") .field("contents", isString);
def(“XMLProcessingInstruction”)
.bases("XML") .field("target", isString) .field("contents", or(isString, null));