本文整理汇总了C#中ParseTree.SaveNewElementAsPriorSibling方法的典型用法代码示例。如果您正苦于以下问题:C# ParseTree.SaveNewElementAsPriorSibling方法的具体用法?C# ParseTree.SaveNewElementAsPriorSibling怎么用?C# ParseTree.SaveNewElementAsPriorSibling使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ParseTree
的用法示例。
在下文中一共展示了ParseTree.SaveNewElementAsPriorSibling方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ParseSQL
//.........这里部分代码省略.........
string newNodeName = SqlXmlConstants.ENAME_OTHERNODE;
KeywordType matchedKeywordType;
if (KeywordList.TryGetValue(token.Value, out matchedKeywordType))
{
switch (matchedKeywordType)
{
case KeywordType.OperatorKeyword:
newNodeName = SqlXmlConstants.ENAME_ALPHAOPERATOR;
break;
case KeywordType.FunctionKeyword:
newNodeName = SqlXmlConstants.ENAME_FUNCTION_KEYWORD;
break;
case KeywordType.DataTypeKeyword:
newNodeName = SqlXmlConstants.ENAME_DATATYPE_KEYWORD;
break;
case KeywordType.OtherKeyword:
sqlTree.EscapeAnySelectionTarget();
newNodeName = SqlXmlConstants.ENAME_OTHERKEYWORD;
break;
default:
throw new Exception("Unrecognized Keyword Type!");
}
}
sqlTree.SaveNewElement(newNodeName, token.Value);
}
break;
case SqlTokenType.Semicolon:
sqlTree.SaveNewElement(SqlXmlConstants.ENAME_SEMICOLON, token.Value);
sqlTree.NewStatementDue = true;
break;
case SqlTokenType.Colon:
if (tokenList.Count > tokenID + 1
&& tokenList[tokenID + 1].Type == SqlTokenType.Colon
)
{
sqlTree.SaveNewElement(SqlXmlConstants.ENAME_SCOPERESOLUTIONOPERATOR, token.Value + tokenList[tokenID + 1].Value);
tokenID++;
}
else
{
sqlTree.SaveNewElementWithError(SqlXmlConstants.ENAME_OTHEROPERATOR, token.Value);
}
break;
case SqlTokenType.Comma:
bool isCTESplitter = (sqlTree.PathNameMatches(0, SqlXmlConstants.ENAME_CONTAINER_GENERALCONTENT)
&& sqlTree.PathNameMatches(1, SqlXmlConstants.ENAME_CTE_WITH_CLAUSE)
);
sqlTree.SaveNewElement(GetEquivalentSqlNodeName(token.Type), token.Value);
if (isCTESplitter)
{
sqlTree.MoveToAncestorContainer(1, SqlXmlConstants.ENAME_CTE_WITH_CLAUSE);
sqlTree.CurrentContainer = sqlTree.SaveNewElement(SqlXmlConstants.ENAME_CTE_ALIAS, "");
}
break;
case SqlTokenType.MultiLineComment:
case SqlTokenType.SingleLineComment:
case SqlTokenType.WhiteSpace:
//create in statement rather than clause if there are no siblings yet
if (sqlTree.PathNameMatches(0, SqlXmlConstants.ENAME_SQL_CLAUSE)
&& sqlTree.PathNameMatches(1, SqlXmlConstants.ENAME_SQL_STATEMENT)
&& sqlTree.CurrentContainer.SelectSingleNode("*") == null
)
sqlTree.SaveNewElementAsPriorSibling(GetEquivalentSqlNodeName(token.Type), token.Value, sqlTree.CurrentContainer);
else
sqlTree.SaveNewElement(GetEquivalentSqlNodeName(token.Type), token.Value);
break;
case SqlTokenType.BracketQuotedName:
case SqlTokenType.Asterisk:
case SqlTokenType.Period:
case SqlTokenType.NationalString:
case SqlTokenType.String:
case SqlTokenType.QuotedString:
case SqlTokenType.OtherOperator:
case SqlTokenType.Number:
case SqlTokenType.BinaryValue:
case SqlTokenType.MonetaryValue:
case SqlTokenType.PseudoName:
sqlTree.SaveNewElement(GetEquivalentSqlNodeName(token.Type), token.Value);
break;
default:
throw new Exception("Unrecognized element encountered!");
}
tokenID++;
}
if (!sqlTree.FindValidBatchEnd())
sqlTree.ErrorFound = true;
return sqlTree;
}