private void SetParentWithChildNode() { if (ParentNodeToggleIs) { if (BeforeNode.ParentNode.ParentNode != null) { // カンマやAND、ORによりエイリアスの単位が異なるが定義群の単位が同一階層のとき ParentNode = BeforeNode.ParentNode.ParentNode; Level = BeforeNode.Level - 1; BeforeNode.ParentNode.ParentNode.SetParentInChildNode(this); } else { // 第一階層のFrom句などは、親がないためParentノードがnullのとき Level = 0; } } else { // SELECTのあとなど予約語の直後のStatementのとき ParentNode = BeforeNode; Level = BeforeNode.Level + 1; BeforeNode.SetParentInChildNode(this); } }
public override void SetParentNode() { if (BeforeNode.GetType() == typeof(ReservedTopLevel)) { CreateNewStatement(); } else { base.SetParentNode(); } }