, buildSyntaxTree(rightNode, specNode)
);
}
else if (specNode.type == XMLContentSpecNode.CONTENTSPECNODE_ZERO_OR_MORE)
{
nodeRet = new CMUniOp
(
specNode.type
, buildSyntaxTree(leftNode, specNode)
);
}
else if (specNode.type == XMLContentSpecNode.CONTENTSPECNODE_ZERO_OR_ONE)
{
// Convert to (x|epsilon)
nodeRet = new CMBinOp
(
XMLContentSpecNode.CONTENTSPECNODE_CHOICE
, buildSyntaxTree(leftNode, specNode)
, new CMLeaf(XMLContentSpecNode.CONTENTSPECNODE_LEAF, fEpsilonIndex)
);
}
else if (specNode.type == XMLContentSpecNode.CONTENTSPECNODE_ONE_OR_MORE)
{
// Convert to (x,x*)
nodeRet = new CMBinOp
(
XMLContentSpecNode.CONTENTSPECNODE_SEQ
, buildSyntaxTree(leftNode, specNode)
, new CMUniOp
(
XMLContentSpecNode.CONTENTSPECNODE_ZERO_OR_MORE
, buildSyntaxTree(leftNode, specNode)
)
);