Browsable MathML Grammar

CC-BY

Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: markup/scientific/mathml/furubayashi/extracted
Source used for this grammar: Yutaka Furubayashi, MathML 2.0 Schemata on RELAX-NG, 15 March 2008

Summary

Syntax

mml.Content ::=
	mml.ctoken
	mml.cspecial
	mml.cother
	mml.csemantics
	mml.c0ary
	mml.cconstructor
	mml.cquantifier
	mml.cop1ary
	mml.cop2ary
	mml.copnary
	mml.copmisc
	mml.crel2ary
	mml.crelnary
mml.ContInPres ::=
	mml.ci.qname
	mml.csymbol.qname
	mml.cn.qname
	mml.c0ary
	mml.apply.qname
	mml.fn.qname
	mml.lambda.qname
	mml.reln.qname
	mml.cconstructor
	mml.semantics.qname
	mml.declare.qname
mml.att-base ::=
	[base]::mml.number.datatype?
mml.att-closure ::=
	[closure]::("open" | "closed" | "open-closed" | "closed-open")?
mml.att-definition ::=
	[definitionURL]::mml.uri.datatype?
mml.att-encoding ::=
	[encoding]::string?
mml.att-nargs ::=
	[nargs]::("nary" | mml.number.datatype)?
mml.att-occurrence ::=
	[occurrence]::("prefix" | "infix" | "function-model")?
mml.att-order ::=
	[order]::("lexicographic" | "numeric")?
mml.att-scope ::=
	[scope]::("local" | "global")?
mml.att-type ::=
	[type]::("e-notation" | "integer" | "rational" | "real" | "float" | "complex-polar" | "complex-cartesian" | "constant")?
mml.cconstructor ::=
	mml.interval.qname
	mml.list.qname
	mml.matrix.qname
	mml.matrixrow.qname
	mml.set.qname
	mml.vector.qname
	mml.piecewise.qname
mml.interval.qname ::=
	[interval]::(mml.ContentExpression mml.Common.attrib mml.att-closure)
mml.set.qname ::=
	[set]::(mml.ContentExpression mml.Common.attrib mml.att-type)
mml.list.qname ::=
	[list]::(mml.ContentExpression mml.Common.attrib mml.att-order)
mml.vector.qname ::=
	[vector]::(mml.ContentExpression mml.Common.attrib)
mml.matrix.qname ::=
	[matrix]::(mml.ContentExpression mml.Common.attrib)
mml.matrixrow.qname ::=
	[matrixrow]::(mml.ContentExpression mml.Common.attrib)
mml.piecewise.qname ::=
	[piecewise]::(mml.piece.qname* mml.otherwise.qname? mml.Common.attrib)
mml.piece.qname ::=
	[piece]::(mml.ContentExpression mml.Common.attrib)
mml.otherwise.qname ::=
	[otherwise]::(mml.ContentExpression mml.Common.attrib)
mml.ctoken ::=
	mml.csymbol.qname
	mml.ci.qname
	mml.cn.qname
mml.ci.qname ::=
	[ci]::((mml.MathMLCharacters | mml.PresInCont)* mml.Common.attrib mml.att-type mml.att-definition mml.att-encoding)
mml.csymbol.qname ::=
	[csymbol]::((mml.MathMLCharacters | mml.PresInCont)* mml.Common.attrib mml.att-type mml.att-definition mml.att-encoding)
mml.cn.qname ::=
	[cn]::((mml.MathMLCharacters | mml.PresInCont | mml.sep.qname)* mml.Common.attrib mml.att-type mml.att-base mml.att-definition mml.att-encoding)
mml.operators.common.attrib ::=
	mml.Common.attrib mml.att-definition mml.att-encoding
mml.cfuncop1ary ::=
	mml.inverse.qname
	mml.ident.qname
	mml.domain.qname
	mml.codomain.qname
	mml.image.qname
mml.inverse.qname ::=
	[inverse]::(ε mml.operators.common.attrib)
mml.domain.qname ::=
	[domain]::(ε mml.operators.common.attrib)
mml.codomain.qname ::=
	[codomain]::(ε mml.operators.common.attrib)
mml.image.qname ::=
	[image]::(ε mml.operators.common.attrib)
mml.cfuncopnary ::=
	mml.fn.qname
	mml.compose.qname
mml.fn.qname ::=
	[fn]::(mml.ContentExpression mml.operators.common.attrib)
mml.ident.qname ::=
	[ident]::(ε mml.operators.common.attrib)
mml.compose.qname ::=
	[compose]::(ε mml.operators.common.attrib)
mml.carithop1ary ::=
	mml.abs.qname
	mml.conjugate.qname
	mml.exp.qname
	mml.factorial.qname
	mml.arg.qname
	mml.real.qname
	mml.imaginary.qname
	mml.floor.qname
	mml.ceiling.qname
mml.exp.qname ::=
	[exp]::(ε mml.operators.common.attrib)
mml.abs.qname ::=
	[abs]::(ε mml.operators.common.attrib)
mml.arg.qname ::=
	[arg]::(ε mml.operators.common.attrib)
mml.real.qname ::=
	[real]::(ε mml.operators.common.attrib)
mml.imaginary.qname ::=
	[imaginary]::(ε mml.operators.common.attrib)
mml.conjugate.qname ::=
	[conjugate]::(ε mml.operators.common.attrib)
mml.factorial.qname ::=
	[factorial]::(ε mml.operators.common.attrib)
mml.floor.qname ::=
	[floor]::(ε mml.operators.common.attrib)
mml.ceiling.qname ::=
	[ceiling]::(ε mml.operators.common.attrib)
mml.carithop1or2ary ::=
	mml.minus.qname
mml.minus.qname ::=
	[minus]::(ε mml.operators.common.attrib)
mml.carithop2ary ::=
	mml.quotient.qname
	mml.divide.qname
	mml.power.qname
	mml.rem.qname
mml.quotient.qname ::=
	[quotient]::(ε mml.operators.common.attrib)
mml.divide.qname ::=
	[divide]::(ε mml.operators.common.attrib)
mml.power.qname ::=
	[power]::(ε mml.operators.common.attrib)
mml.rem.qname ::=
	[rem]::(ε mml.operators.common.attrib)
mml.carithopnary ::=
	mml.plus.qname
	mml.times.qname
	mml.max.qname
	mml.min.qname
	mml.gcd.qname
	mml.lcm.qname
mml.plus.qname ::=
	[plus]::(ε mml.operators.common.attrib)
mml.max.qname ::=
	[max]::(ε mml.operators.common.attrib)
mml.min.qname ::=
	[min]::(ε mml.operators.common.attrib)
mml.times.qname ::=
	[times]::(ε mml.operators.common.attrib)
mml.gcd.qname ::=
	[gcd]::(ε mml.operators.common.attrib)
mml.lcm.qname ::=
	[lcm]::(ε mml.operators.common.attrib)
mml.carithoproot ::=
	mml.root.qname
mml.root.qname ::=
	[root]::(ε mml.operators.common.attrib)
mml.clogicopquant ::=
	mml.exists.qname
	mml.forall.qname
mml.exists.qname ::=
	[exists]::(ε mml.operators.common.attrib)
mml.forall.qname ::=
	[forall]::(ε mml.operators.common.attrib)
mml.clogicopnary ::=
	mml.and.qname
	mml.or.qname
	mml.xor.qname
mml.and.qname ::=
	[and]::(ε mml.operators.common.attrib)
mml.or.qname ::=
	[or]::(ε mml.operators.common.attrib)
mml.xor.qname ::=
	[xor]::(ε mml.operators.common.attrib)
mml.clogicop1ary ::=
	mml.not.qname
mml.not.qname ::=
	[not]::(ε mml.operators.common.attrib)
mml.clogicop2ary ::=
	mml.implies.qname
mml.implies.qname ::=
	[implies]::(ε mml.operators.common.attrib)
mml.ccalcop ::=
	mml.log.qname
	mml.int.qname
	mml.diff.qname
	mml.partialdiff.qname
	mml.divergence.qname
	mml.grad.qname
	mml.curl.qname
	mml.laplacian.qname
mml.divergence.qname ::=
	[divergence]::(ε mml.operators.common.attrib)
mml.grad.qname ::=
	[grad]::(ε mml.operators.common.attrib)
mml.curl.qname ::=
	[curl]::(ε mml.operators.common.attrib)
mml.laplacian.qname ::=
	[laplacian]::(ε mml.operators.common.attrib)
mml.log.qname ::=
	[log]::(ε mml.operators.common.attrib)
mml.int.qname ::=
	[int]::(ε mml.operators.common.attrib)
mml.diff.qname ::=
	[diff]::(ε mml.operators.common.attrib)
mml.partialdiff.qname ::=
	[partialdiff]::(ε mml.operators.common.attrib)
mml.ccalcop1ary ::=
	mml.ln.qname
mml.ln.qname ::=
	[ln]::(ε mml.operators.common.attrib)
mml.csetop1ary ::=
	mml.card.qname
mml.card.qname ::=
	[card]::(ε mml.operators.common.attrib)
mml.csetop2ary ::=
	mml.setdiff.qname
mml.setdiff.qname ::=
	[setdiff]::(ε mml.operators.common.attrib)
mml.csetopnary ::=
	mml.union.qname
	mml.intersect.qname
	mml.cartesianproduct.qname
mml.union.qname ::=
	[union]::(ε mml.operators.common.attrib)
mml.intersect.qname ::=
	[intersect]::(ε mml.operators.common.attrib)
mml.cartesianproduct.qname ::=
	[cartesianproduct]::(ε mml.operators.common.attrib)
mml.cseqop ::=
	mml.sum.qname
	mml.product.qname
	mml.limit.qname
mml.sum.qname ::=
	[sum]::(ε mml.operators.common.attrib)
mml.product.qname ::=
	[product]::(ε mml.operators.common.attrib)
mml.limit.qname ::=
	[limit]::(ε mml.operators.common.attrib)
mml.ctrigop ::=
	mml.sin.qname
	mml.cos.qname
	mml.tan.qname
	mml.sec.qname
	mml.csc.qname
	mml.cot.qname
	mml.sinh.qname
	mml.cosh.qname
	mml.tanh.qname
	mml.sech.qname
	mml.csch.qname
	mml.coth.qname
	mml.arcsin.qname
	mml.arccos.qname
	mml.arctan.qname
	mml.arccosh.qname
	mml.arccot.qname
	mml.arccoth.qname
	mml.arccsc.qname
	mml.arccsch.qname
	mml.arcsec.qname
	mml.arcsech.qname
	mml.arcsinh.qname
	mml.arctanh.qname
mml.sin.qname ::=
	[sin]::(ε mml.operators.common.attrib)
mml.cos.qname ::=
	[cos]::(ε mml.operators.common.attrib)
mml.tan.qname ::=
	[tan]::(ε mml.operators.common.attrib)
mml.sec.qname ::=
	[sec]::(ε mml.operators.common.attrib)
mml.csc.qname ::=
	[csc]::(ε mml.operators.common.attrib)
mml.cot.qname ::=
	[cot]::(ε mml.operators.common.attrib)
mml.sinh.qname ::=
	[sinh]::(ε mml.operators.common.attrib)
mml.cosh.qname ::=
	[cosh]::(ε mml.operators.common.attrib)
mml.tanh.qname ::=
	[tanh]::(ε mml.operators.common.attrib)
mml.sech.qname ::=
	[sech]::(ε mml.operators.common.attrib)
mml.csch.qname ::=
	[csch]::(ε mml.operators.common.attrib)
mml.coth.qname ::=
	[coth]::(ε mml.operators.common.attrib)
mml.arcsin.qname ::=
	[arcsin]::(ε mml.operators.common.attrib)
mml.arccos.qname ::=
	[arccos]::(ε mml.operators.common.attrib)
mml.arctan.qname ::=
	[arctan]::(ε mml.operators.common.attrib)
mml.arccosh.qname ::=
	[arccosh]::(ε mml.operators.common.attrib)
mml.arccot.qname ::=
	[arccot]::(ε mml.operators.common.attrib)
mml.arccoth.qname ::=
	[arccoth]::(ε mml.operators.common.attrib)
mml.arccsc.qname ::=
	[arccsc]::(ε mml.operators.common.attrib)
mml.arccsch.qname ::=
	[arccsch]::(ε mml.operators.common.attrib)
mml.arcsec.qname ::=
	[arcsec]::(ε mml.operators.common.attrib)
mml.arcsech.qname ::=
	[arcsech]::(ε mml.operators.common.attrib)
mml.arcsinh.qname ::=
	[arcsinh]::(ε mml.operators.common.attrib)
mml.arctanh.qname ::=
	[arctanh]::(ε mml.operators.common.attrib)
mml.cstatopnary ::=
	mml.mean.qname
	mml.sdev.qname
	mml.variance.qname
	mml.median.qname
	mml.mode.qname
mml.mean.qname ::=
	[mean]::(ε mml.operators.common.attrib)
mml.sdev.qname ::=
	[sdev]::(ε mml.operators.common.attrib)
mml.variance.qname ::=
	[variance]::(ε mml.operators.common.attrib)
mml.median.qname ::=
	[median]::(ε mml.operators.common.attrib)
mml.mode.qname ::=
	[mode]::(ε mml.operators.common.attrib)
mml.cstatopmoment ::=
	mml.moment.qname
mml.moment.qname ::=
	[moment]::(ε mml.operators.common.attrib)
mml.clalgop1ary ::=
	mml.determinant.qname
	mml.transpose.qname
mml.determinant.qname ::=
	[determinant]::(ε mml.operators.common.attrib)
mml.transpose.qname ::=
	[transpose]::(ε mml.operators.common.attrib)
mml.clalgop2ary ::=
	mml.vectorproduct.qname
	mml.scalarproduct.qname
	mml.outerproduct.qname
mml.vectorproduct.qname ::=
	[vectorproduct]::(ε mml.operators.common.attrib)
mml.scalarproduct.qname ::=
	[scalarproduct]::(ε mml.operators.common.attrib)
mml.outerproduct.qname ::=
	[outerproduct]::(ε mml.operators.common.attrib)
mml.clalgopnary ::=
	mml.selector.qname
mml.selector.qname ::=
	[selector]::(ε mml.operators.common.attrib)
mml.cop1ary ::=
	mml.cfuncop1ary
	mml.carithop1ary
	mml.clogicop1ary
	mml.ccalcop1ary
	mml.ctrigop
	mml.clalgop1ary
	mml.csetop1ary
mml.cop2ary ::=
	mml.carithop2ary
	mml.clogicop2ary
	mml.clalgop2ary
	mml.csetop2ary
mml.copnary ::=
	mml.cfuncopnary
	mml.carithopnary
	mml.clogicopnary
	mml.csetopnary
	mml.cstatopnary
	mml.clalgopnary
mml.copmisc ::=
	mml.carithoproot
	mml.carithop1or2ary
	mml.ccalcop
	mml.cseqop
	mml.cstatopmoment
	mml.clogicopquant
mml.cother ::=
	mml.condition.qname
	mml.declare.qname
	mml.sep.qname
mml.condition.qname ::=
	[condition]::(mml.ContentExpression mml.Common.attrib)
mml.declare.qname ::=
	[declare]::(mml.ContentExpression mml.Common.attrib mml.att-type mml.att-scope mml.att-nargs mml.att-occurrence mml.att-definition mml.att-encoding)
mml.sep.qname ::=
	[sep]::ε
mml.cquantifier ::=
	mml.lowlimit.qname
	mml.uplimit.qname
	mml.bvar.qname
	mml.degree.qname
	mml.logbase.qname
	mml.momentabout.qname
	mml.domainofapplication.qname
mml.lowlimit.qname ::=
	[lowlimit]::(mml.ContentExpression mml.Common.attrib)
mml.uplimit.qname ::=
	[uplimit]::(mml.ContentExpression mml.Common.attrib)
mml.bvar.qname ::=
	[bvar]::(mml.ContentExpression mml.Common.attrib)
mml.degree.qname ::=
	[degree]::(mml.ContentExpression mml.Common.attrib)
mml.logbase.qname ::=
	[logbase]::(mml.ContentExpression mml.Common.attrib)
mml.momentabout.qname ::=
	[momentabout]::(mml.ContentExpression mml.Common.attrib)
mml.domainofapplication.qname ::=
	[domainofapplication]::(mml.ContentExpression mml.Common.attrib)
mml.cgenrel2ary ::=
	mml.neq.qname
	mml.factorof.qname
mml.neq.qname ::=
	[neq]::(ε mml.operators.common.attrib)
mml.factorof.qname ::=
	[factorof]::(ε mml.operators.common.attrib)
mml.cgenrelnary ::=
	mml.eq.qname
	mml.leq.qname
	mml.lt.qname
	mml.geq.qname
	mml.gt.qname
	mml.equivalent.qname
	mml.approx.qname
mml.eq.qname ::=
	[eq]::(ε mml.operators.common.attrib)
mml.equivalent.qname ::=
	[equivalent]::(ε mml.operators.common.attrib)
mml.approx.qname ::=
	[approx]::(ε mml.operators.common.attrib)
mml.gt.qname ::=
	[gt]::(ε mml.operators.common.attrib)
mml.lt.qname ::=
	[lt]::(ε mml.operators.common.attrib)
mml.geq.qname ::=
	[geq]::(ε mml.operators.common.attrib)
mml.leq.qname ::=
	[leq]::(ε mml.operators.common.attrib)
mml.csetrel2ary ::=
	mml.in.qname
	mml.notin.qname
	mml.notsubset.qname
	mml.notprsubset.qname
mml.in.qname ::=
	[in]::(ε mml.operators.common.attrib)
mml.notin.qname ::=
	[notin]::(ε mml.operators.common.attrib)
mml.notsubset.qname ::=
	[notsubset]::(ε mml.operators.common.attrib)
mml.notprsubset.qname ::=
	[notprsubset]::(ε mml.operators.common.attrib)
mml.csetrelnary ::=
	mml.subset.qname
	mml.prsubset.qname
mml.subset.qname ::=
	[subset]::(ε mml.operators.common.attrib)
mml.prsubset.qname ::=
	[prsubset]::(ε mml.operators.common.attrib)
mml.cseqrel2ary ::=
	mml.tendsto.qname
mml.tendsto.qname ::=
	[tendsto]::(ε mml.operators.common.attrib mml.att-type)
mml.crel2ary ::=
	mml.cgenrel2ary
	mml.csetrel2ary
	mml.cseqrel2ary
mml.crelnary ::=
	mml.cgenrelnary
	mml.csetrelnary
mml.csemantics ::=
	mml.semantics.qname
	mml.annotation.qname
	mml.annotation-xml.qname
mml.semantics.qname ::=
	[semantics]::(mml.ContentExpression mml.Common.attrib mml.att-definition mml.att-encoding)
mml.annotation.qname ::=
	[annotation]::(mml.Annotation.datatype mml.Common.attrib mml.att-encoding)
mml.annotation-xml.qname ::=
	[annotation-xml]::(mml.Annotation-xml.datatype mml.Common.attrib mml.att-encoding)
mml.cspecial ::=
	mml.apply.qname
	mml.reln.qname
	mml.lambda.qname
mml.apply.qname ::=
	[apply]::(mml.ContentExpression mml.Common.attrib)
mml.reln.qname ::=
	[reln]::(mml.ContentExpression mml.Common.attrib)
mml.lambda.qname ::=
	[lambda]::(mml.ContentExpression mml.Common.attrib)
mml.c0ary ::=
	mml.integers.qname
	mml.reals.qname
	mml.rationals.qname
	mml.naturalnumbers.qname
	mml.complexes.qname
	mml.primes.qname
	mml.exponentiale.qname
	mml.imaginaryi.qname
	mml.notanumber.qname
	mml.true.qname
	mml.false.qname
	mml.emptyset.qname
	mml.eulergamma.qname
	mml.infinity.qname
mml.integers.qname ::=
	[integers]::(ε mml.operators.common.attrib)
mml.reals.qname ::=
	[reals]::(ε mml.operators.common.attrib)
mml.rationals.qname ::=
	[rationals]::(ε mml.operators.common.attrib)
mml.naturalnumbers.qname ::=
	[naturalnumbers]::(ε mml.operators.common.attrib)
mml.complexes.qname ::=
	[complexes]::(ε mml.operators.common.attrib)
mml.primes.qname ::=
	[primes]::(ε mml.operators.common.attrib)
mml.exponentiale.qname ::=
	[exponentiale]::(ε mml.operators.common.attrib)
mml.imaginaryi.qname ::=
	[imaginaryi]::(ε mml.operators.common.attrib)
mml.notanumber.qname ::=
	[notanumber]::(ε mml.operators.common.attrib)
mml.true.qname ::=
	[true]::(ε mml.operators.common.attrib)
mml.false.qname ::=
	[false]::(ε mml.operators.common.attrib)
mml.emptyset.qname ::=
	[emptyset]::(ε mml.operators.common.attrib)
mml.pi.qname ::=
	[pi]::(ε mml.operators.common.attrib)
mml.eulergamma.qname ::=
	[eulergamma]::(ε mml.operators.common.attrib)
mml.infinity.qname ::=
	[infinity]::(ε mml.operators.common.attrib)
mml.id.datatype ::=
	string
mml.idref.datatype ::=
	string
mml.number.datatype ::=
	integer
mml.positiveinteger.datatype ::=
	integer
mml.uri.datatype ::=
	string
mml.nonnegativefloat.datatype ::=
	string
mml.length.datatype ::=
	string
mml.color.datatype ::=
	string
	string
	"transparent"
mml.Annotation.datatype ::=
	string
mml.Annotation-xml.datatype ::=
	(string | string* mml.Annotation-xml.datatype)*
mml.namedspace.datatype ::=
	string
	"veryverythinmathspace"
	"verythinmathspace"
	"thinmathspace"
	"mediummathspace"
	"thickmathspace"
	"verythickmathspace"
	"veryverythickmathspace"
mml.align.datatype ::=
	("top" | "bottom" | "center" | "baseline" | "axis") integer?
mml.rowalign.datatype ::=
	("top" | "bottom" | "center" | "baseline" | "axis")+
mml.columnalign.datatype ::=
	("left" | "center" | "right")+
mml.columnwidth.datatype ::=
	("auto" | string | string | "veryverythinmathspace" | "verythinmathspace" | "thinmathspace" | "mediummathspace" | "thickmathspace" | "verythickmathspace" | "veryverythickmathspace" | "fit")+
mml.columnspan.datatype ::=
	mml.positiveinteger.datatype
mml.groupalign.datatype ::=
	string
mml.alignmentscope.datatype ::=
	("true" | "false")+
mml.rowspacing.datatype ::=
	string+
mml.columnspacing.datatype ::=
	(string (string | "veryverythinmathspace" | "verythinmathspace" | "thinmathspace" | "mediummathspace" | "thickmathspace" | "verythickmathspace" | "veryverythickmathspace"))+
mml.lines.datatype ::=
	("none" | "solid" | "dashed")+
mml.framespacing.datatype ::=
	(string | string | "veryverythinmathspace" | "verythinmathspace" | "thinmathspace" | "mediummathspace" | "thickmathspace" | "verythickmathspace" | "veryverythickmathspace") (string | string | "veryverythinmathspace" | "verythinmathspace" | "thinmathspace" | "mediummathspace" | "thickmathspace" | "verythickmathspace" | "veryverythickmathspace")
mml.ContentExpression ::=
	(mml.Content | mml.PresInCont)*
mml.PresExpression ::=
	(mml.Presentation | mml.ContInPres)*
mml.MathExpression ::=
	(mml.PresInCont | mml.ContInPres)*
mml.MathMLCharacters ::=
	mml.mglyph.qname
	string
mml.Common.attrib ::=
	[xlink:href]::mml.uri.datatype? [class]::string? [style]::string? [id]::mml.id.datatype? [xref]::mml.idref.datatype? [other]::string?
mml.att-macros ::=
	[macros]::string?
mml.att-mode ::=
	[mode]::string?
mml.att-display ::=
	[display]::string?
mml.att-topinfo ::=
	mml.Common.attrib mml.att-macros mml.att-mode mml.att-display
mml.att-baseline ::=
	[baseline]::string?
mml.att-overflow ::=
	[overflow]::("scroll" | "elide" | "truncate" | "scale")?
mml.att-altimg ::=
	[altimg]::mml.uri.datatype?
mml.att-alttext ::=
	[alttext]::string?
mml.att-browif ::=
	mml.att-type mml.att-name mml.att-height mml.att-width mml.att-baseline mml.att-overflow mml.att-altimg mml.att-alttext
mml.math.qname ::=
	[math]::(mml.MathExpression mml.att-topinfo mml.att-browif)
mml.pactions ::=
	mml.maction.qname
mml.maction.qname ::=
	[maction]::(mml.PresExpression mml.Common.attrib mml.att-actiontype)
mml.PresInCont ::=
	mml.ptoken
	mml.petoken
	mml.plschema
	mml.peschema
	mml.pactions
mml.Presentation ::=
	mml.ptoken
	mml.petoken
	mml.pscreschema
	mml.plschema
	mml.peschema
	mml.pactions
mml.att-fontsize ::=
	[fontsize]::mml.length.datatype?
mml.att-fontweight ::=
	[fontweight]::("normal" | "bold")?
mml.att-fontstyle ::=
	[fontstyle]::("normal" | "italic")?
mml.att-fontfamily ::=
	[fontfamily]::string?
mml.att-color ::=
	[color]::mml.color.datatype?
mml.att-mathvariant ::=
	[mathvariant]::("normal" | "bold" | "italic" | "bold-italic" | "double-struck" | "bold-fraktur" | "script" | "bold-script" | "fraktur" | "sans-serif" | "bold-sans-serif" | "sans-serif-italic" | "sans-serif-bold-italic" | "monospace")?
mml.att-mathsize ::=
	[mathsize]::("small" | "normal" | "big" | mml.length.datatype)?
mml.att-mathcolor ::=
	[mathcolor]::mml.color.datatype?
mml.att-mathbackground ::=
	[mathbackground]::mml.color.datatype?
mml.att-fontinfo ::=
	mml.att-fontsize mml.att-fontweight mml.att-fontstyle mml.att-fontfamily mml.att-color mml.att-mathvariant mml.att-mathsize mml.att-mathcolor mml.att-mathbackground
mml.att-form ::=
	[form]::("prefix" | "infix" | "postfix")?
mml.att-fence ::=
	[fence]::("true" | "false")?
mml.att-separator ::=
	[separator]::("true" | "false")?
mml.att-lspace ::=
	[lspace]::mml.namedspace.datatype?
mml.att-rspace ::=
	[rspace]::mml.namedspace.datatype?
mml.att-stretchy ::=
	[stretchy]::("true" | "false")?
mml.att-symmetric ::=
	[symmetric]::("true" | "false")?
mml.att-maxsize ::=
	[maxsize]::(mml.namedspace.datatype | "infinity")?
mml.att-minsize ::=
	[minsize]::mml.namedspace.datatype?
mml.att-largeop ::=
	[largeop]::("true" | "false")?
mml.att-movablelimits ::=
	[movablelimits]::("true" | "false")?
mml.att-accent ::=
	[accent]::("true" | "false")?
mml.att-opinfo ::=
	mml.att-form mml.att-fence mml.att-separator mml.att-lspace mml.att-rspace mml.att-stretchy mml.att-symmetric mml.att-maxsize mml.att-minsize mml.att-largeop mml.att-movablelimits mml.att-accent
mml.att-width ::=
	[width]::mml.namedspace.datatype?
mml.att-height ::=
	[height]::mml.length.datatype?
mml.att-depth ::=
	[depth]::mml.length.datatype?
mml.att-linebreak ::=
	[linebreak]::("auto" | "newline" | "indentingnewline" | "nobreak" | "goodbreak" | "badbreak")?
mml.att-sizeinfo ::=
	mml.att-width mml.att-height mml.att-depth
mml.att-lquote ::=
	[lquote]::string?
mml.att-rquote ::=
	[rquote]::string?
mml.att-linethickness ::=
	[linethickness]::(mml.length.datatype | "thin" | "medium" | "thick")?
mml.att-scriptlevel ::=
	[scriptlevel]::mml.number.datatype?
mml.att-displaystyle ::=
	[displaystyle]::("true" | "false")?
mml.att-scriptsizemultiplier ::=
	[scriptsizemultiplier]::mml.nonnegativefloat.datatype?
mml.att-scriptminsize ::=
	[scriptminsize]::mml.length.datatype?
mml.att-background ::=
	[background]::mml.color.datatype?
mml.att-veryverythinmathspace ::=
	[veryverythinmathspace]::mml.length.datatype?
mml.att-verythinmathspace ::=
	[verythinmathspace]::mml.length.datatype?
mml.att-thinmathspace ::=
	[thinmathspace]::mml.length.datatype?
mml.att-mediummathspace ::=
	[mediummathspace]::mml.length.datatype?
mml.att-thickmathspace ::=
	[thickmathspace]::mml.length.datatype?
mml.att-verythickmathspace ::=
	[verythickmathspace]::mml.length.datatype?
mml.att-veryverythickmathspace ::=
	[veryverythickmathspace]::mml.length.datatype?
mml.att-open ::=
	[open]::string?
mml.att-close ::=
	[close]::string?
mml.att-separators ::=
	[separators]::string?
mml.att-subscriptshift ::=
	[subscriptshift]::mml.length.datatype?
mml.att-superscriptshift ::=
	[superscriptshift]::mml.length.datatype?
mml.att-accentunder ::=
	[accentunder]::("true" | "false")?
mml.att-align ::=
	[align]::mml.align.datatype?
mml.att-rowalign ::=
	[rowalign]::mml.rowalign.datatype?
mml.att-columnalign ::=
	[columnalign]::mml.columnalign.datatype?
mml.att-columnwidth ::=
	[columnwidth]::mml.columnwidth.datatype?
mml.att-groupalign ::=
	[groupalign]::mml.groupalign.datatype?
mml.att-alignmentscope ::=
	[alignmentscope]::mml.alignmentscope.datatype?
mml.att-rowspacing ::=
	[rowspacing]::mml.rowspacing.datatype?
mml.att-columnspacing ::=
	[columnspacing]::mml.columnspacing.datatype?
mml.att-rowlines ::=
	[rowlines]::mml.lines.datatype?
mml.att-columnlines ::=
	[columnlines]::mml.lines.datatype?
mml.att-frame ::=
	[frame]::("none" | "solid" | "dashed")?
mml.att-framespacing ::=
	[framespacing]::mml.framespacing.datatype?
mml.att-equalrows ::=
	[equalrows]::("true" | "false")?
mml.att-equalcolumns ::=
	[equalcolumns]::("true" | "false")?
mml.att-tableinfo ::=
	mml.att-align mml.att-rowalign mml.att-columnalign mml.att-columnwidth mml.att-groupalign mml.att-alignmentscope mml.att-rowspacing mml.att-columnspacing mml.att-rowlines mml.att-columnlines mml.att-frame mml.att-framespacing mml.att-equalrows mml.att-equalcolumns mml.att-displaystyle
mml.att-rowspan ::=
	[rowspan]::("top" | "bottom" | "center" | "baseline" | "axis")?
mml.att-columnspan ::=
	[columnspan]::mml.columnspan.datatype?
mml.att-edge ::=
	[edge]::("left" | "right")?
mml.att-actiontype ::=
	([actiontype]::"toggle" [selection]::mml.positiveinteger.datatype | [actiontype]::"statusline" | [actiontype]::"tooltip" | [actiontype]::"highlight" mml.color.datatype* | [actiontype]::"menu" [selection]::mml.positiveinteger.datatype)?
mml.att-name ::=
	[name]::string?
mml.att-alt ::=
	[alt]::string?
mml.att-index ::=
	[index]::mml.number.datatype?
mml.att-bevelled ::=
	[bevelled]::("true" | "false")?
mml.ptoken ::=
	mml.mi.qname
	mml.mn.qname
	mml.mo.qname
	mml.mtext.qname
	mml.ms.qname
mml.mi.qname ::=
	[mi]::((mml.MathMLCharacters | mml.malignmark.qname)* mml.Common.attrib mml.att-fontinfo)
mml.mn.qname ::=
	[mn]::((mml.MathMLCharacters | mml.malignmark.qname)* mml.Common.attrib mml.att-fontinfo)
mml.mo.qname ::=
	[mo]::((mml.MathMLCharacters | mml.malignmark.qname)* mml.Common.attrib mml.att-fontinfo mml.att-opinfo)
mml.mtext.qname ::=
	[mtext]::((mml.MathMLCharacters | mml.malignmark.qname)* mml.Common.attrib mml.att-fontinfo)
mml.ms.qname ::=
	[ms]::((mml.MathMLCharacters | mml.malignmark.qname)* mml.Common.attrib mml.att-fontinfo mml.att-lquote mml.att-rquote)
mml.petoken ::=
	mml.mspace.qname
mml.mspace.qname ::=
	[mspace]::(ε mml.Common.attrib mml.att-sizeinfo mml.att-linebreak)
mml.peschema ::=
	mml.maligngroup.qname
	mml.malignmark.qname
mml.malignmark.qname ::=
	[malignmark]::(ε mml.att-edge)
mml.maligngroup.qname ::=
	[maligngroup]::(ε mml.Common.attrib mml.att-groupalign)
mml.mglyph.qname ::=
	[mglyph]::(ε mml.att-alt mml.att-fontfamily mml.att-index)
mml.pgenschema ::=
	mml.mrow.qname
	mml.mfrac.qname
	mml.msqrt.qname
	mml.mroot.qname
	mml.menclose.qname
	mml.mstyle.qname
	mml.merror.qname
	mml.mpadded.qname
	mml.mphantom.qname
	mml.mfenced.qname
mml.mrow.qname ::=
	[mrow]::(mml.PresExpression mml.Common.attrib)
mml.mfrac.qname ::=
	[mfrac]::(mml.PresExpression mml.Common.attrib mml.att-bevelled mml.att-linethickness)
mml.msqrt.qname ::=
	[msqrt]::(mml.PresExpression mml.Common.attrib)
mml.menclose.qname ::=
	[menclose]::(mml.PresExpression mml.Common.attrib [notation]::("longdiv" | "actuarial" | "radical")?)
mml.mroot.qname ::=
	[mroot]::(mml.PresExpression mml.Common.attrib)
mml.mstyle.qname ::=
	[mstyle]::(mml.PresExpression mml.Common.attrib mml.att-fontinfo mml.att-opinfo mml.att-lquote mml.att-rquote mml.att-linethickness mml.att-scriptlevel mml.att-scriptsizemultiplier mml.att-scriptminsize mml.att-background mml.att-veryverythinmathspace mml.att-verythinmathspace mml.att-thinmathspace mml.att-mediummathspace mml.att-thickmathspace mml.att-verythickmathspace mml.att-veryverythickmathspace mml.att-open mml.att-close mml.att-separators mml.att-subscriptshift mml.att-superscriptshift mml.att-accentunder mml.att-tableinfo mml.att-rowspan mml.att-columnspan mml.att-edge mml.att-actiontype)
mml.merror.qname ::=
	[merror]::(mml.PresExpression mml.Common.attrib)
mml.mpadded.qname ::=
	[mpadded]::(mml.PresExpression mml.Common.attrib mml.att-sizeinfo mml.att-lspace)
mml.mphantom.qname ::=
	[mphantom]::(mml.PresExpression mml.Common.attrib)
mml.mfenced.qname ::=
	[mfenced]::(mml.PresExpression mml.Common.attrib mml.att-open mml.att-close mml.att-separators)
mml.pscreschema ::=
	mml.mprescripts.qname
	mml.none.qname
mml.mprescripts.qname ::=
	[mprescripts]::ε
mml.none.qname ::=
	[none]::ε
mml.pscrschema ::=
	mml.msub.qname
	mml.msup.qname
	mml.msubsup.qname
	mml.munder.qname
	mml.mover.qname
	mml.munderover.qname
	mml.mmultiscripts.qname
mml.msub.qname ::=
	[msub]::(mml.PresExpression mml.Common.attrib mml.att-subscriptshift)
mml.msup.qname ::=
	[msup]::(mml.PresExpression mml.Common.attrib mml.att-superscriptshift)
mml.msubsup.qname ::=
	[msubsup]::(mml.PresExpression mml.Common.attrib mml.att-subscriptshift mml.att-superscriptshift)
mml.munder.qname ::=
	[munder]::(mml.PresExpression mml.Common.attrib mml.att-accentunder)
mml.mover.qname ::=
	[mover]::(mml.PresExpression mml.Common.attrib mml.att-accent)
mml.munderover.qname ::=
	[munderover]::(mml.PresExpression mml.Common.attrib mml.att-accent mml.att-accentunder)
mml.mmultiscripts.qname ::=
	[mmultiscripts]::(mml.PresExpression mml.Common.attrib mml.att-subscriptshift mml.att-superscriptshift)
mml.ptabschema ::=
	mml.mtable.qname
	mml.mtr.qname
	mml.mlabeledtr.qname
	mml.mtd.qname
mml.mtable.qname ::=
	[mtable]::(mml.PresExpression mml.Common.attrib mml.att-tableinfo)
mml.mtr.qname ::=
	[mtr]::(mml.PresExpression mml.Common.attrib mml.att-rowalign mml.att-columnalign mml.att-groupalign)
mml.mlabeledtr.qname ::=
	[mlabeledtr]::(mml.PresExpression mml.Common.attrib mml.att-rowalign mml.att-columnalign mml.att-groupalign)
mml.mtd.qname ::=
	[mtd]::(mml.PresExpression mml.Common.attrib mml.att-rowalign mml.att-columnalign mml.att-groupalign mml.att-rowspan mml.att-columnspan)
mml.plschema ::=
	mml.pgenschema
	mml.pscrschema
	mml.ptabschema

GrammarLabMaintained by Dr. Vadim Zaytsev a.k.a. @grammarware. Last updated in September 2015. []