本文整理汇总了C#中IAstNode.GetType方法的典型用法代码示例。如果您正苦于以下问题:C# IAstNode.GetType方法的具体用法?C# IAstNode.GetType怎么用?C# IAstNode.GetType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IAstNode
的用法示例。
在下文中一共展示了IAstNode.GetType方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SetParentInChildNode
public override void SetParentInChildNode(IAstNode node)
{
if (node.GetType() == typeof (ReservedTopLevel))
{
// SELECTなどの予約語をもつことからネスト構造のSQLをもつ
HasQuery = true;
}
base.SetParentInChildNode(node);
}
示例2: SetParentOpenBracket
private void SetParentOpenBracket(IAstNode node)
{
// Statementなど接続ノードはValueが空なのでBracket判定が必要
if (node.GetType() == typeof(Bracket)
&& node.Value[0] == '(')
{
Bracket openNode = (Bracket)node;
// 自分に対応するOpenかっこをみつけたら終了
HasQuery = openNode.HasQuery;
ParentNode = openNode.ParentNode;
Level = openNode.ParentNode.Level;
ParentNode.SetParentInChildNode(this);
}
else if (node.ParentNode != null)
{
// みつかるまで、親を探す
SetParentOpenBracket(node.ParentNode);
}
// なにもみつからなければ、親はからになる
}
示例3: WriteNode
private void WriteNode(IAstNode node) {
Indent();
string type = node.GetType().ToString();
string name = type.Substring(type.LastIndexOf('.') + 1);
_sb.Append(name);
string innerType = node.ToString();
innerType = innerType.Replace("\n", "\\n");
innerType = innerType.Replace("\r", "\\r");
int ms = innerType.IndexOf("Microsoft", StringComparison.Ordinal);
if (ms >= 0) {
innerType = innerType.Substring(type.LastIndexOf('.') + 1);
}
if (innerType != name) {
_sb.Append(" [");
_sb.Append(innerType);
_sb.AppendLine("]");
} else {
_sb.AppendLine(string.Format(CultureInfo.InvariantCulture, " [{0}...{1})", node.Start, node.End));
}
_indent++;
foreach (IAstNode child in node.Children) {
WriteNode(child);
}
if (node is CommaSeparatedList) {
var csl = node as CommaSeparatedList;
if (csl.Count > 0 && csl[csl.Count - 1] is StubArgument) {
WriteNode(csl[csl.Count - 1]);
}
}
_indent--;
}
示例4: ShouldAliasNameNode
public static bool ShouldAliasNameNode(IAstNode beforeNode)
{
// エイリアス定義の直前は必ずスペースかタブか改行
if (!(beforeNode.GetType() == typeof(WhiteSpace)))
{
return false;
}
// beforeはWhiteSpaceなので、beforeのbeforeを参照
IAstNode node = beforeNode.BeforeNode;
if (node.OriginalValue.ToUpper().Equals("AS")
|| node.GetType() == typeof(TableOrColumnName)
|| node.GetType() == typeof(Number)
|| node.GetType() == typeof(QuateString)
// ROWNUMなどの予約語の後にエイリアス定義が行われる場合
|| node.GetType() == typeof(ReservedWord)
|| (node.GetType() == typeof(Bracket) && node.Value[0]==')')
)
{
return true;
}
return false;
}
示例5: SetParentInChildNode
/// <summary>
/// Statementの子供を設定するとき、
/// 子供の内容からStatementの構成情報を作成
/// </summary>
/// <param name="node"></param>
public override void SetParentInChildNode(IAstNode node)
{
if (node.GetType() == typeof (Bracket))
{
HasNestStatement = true;
}
if (node.GetType() == typeof (StatementSeparator))
{
HasStatementSeparator = true;
StatementSeparatorValue = node.OriginalValue;
}
else if (node.GetType() == typeof (EvaluationString))
{
EvaluationValue = node.OriginalValue;
}
else if ( // =やLIKEなど評価等号が出現したあとは文字数をカウントしない
!string.IsNullOrEmpty(EvaluationValue)
// コメントやAS句はインデントを決定する文字列に利用しない
|| node.OriginalValue.Equals("AS")
|| node.GetType() == typeof (AliasDefine)
|| node.GetType() == typeof (WhiteSpace)
|| node.GetType() == typeof (OneLineComment)
|| node.GetType() == typeof (MultiLineComment)
// Statementインデントをつける特殊な型のため文字数カウントを行わない
|| node.GetType() == typeof (StatementIndent))
{
}
else
{
if (LeftIndentLength == 0 && node.OriginalValue.Length != 0)
{
// Statementに必ずつくインデントを定義する
base.SetParentInChildNode(new StatementIndent(node));
}
LeftIndentLength += node.OriginalValue.Length;
}
base.SetParentInChildNode(node);
}