示例#1
0
            public override void GetUtokensAround(UnparsableAst target, out InsertedUtokens leftInsertedUtokens, out InsertedUtokens rightInsertedUtokens)
            {
                base.GetUtokensAround(target, out leftInsertedUtokens, out rightInsertedUtokens);

                if (target.BnfTerm == B.OBJECT_BEGIN)
                {
                    rightInsertedUtokens = UtokenInsert.NewLine();
                }

                else if (target.BnfTerm == B.OBJECT_END)
                {
                    leftInsertedUtokens = rightInsertedUtokens = UtokenInsert.NewLine();
                }

                else if (target.BnfTerm == B.ARRAY_BEGIN)
                {
                    rightInsertedUtokens = UtokenInsert.NewLine();
                }

                else if (target.BnfTerm == B.ARRAY_END)
                {
                    leftInsertedUtokens = rightInsertedUtokens = UtokenInsert.NewLine();
                }

                else if (target.BnfTerm == B.COMMA)
                {
                    leftInsertedUtokens  = UtokenInsert.NoWhitespace();
                    rightInsertedUtokens = UtokenInsert.NewLine();
                }

                else if (target.BnfTerm == B.COLON && !CompactFormat)
                {
                    rightInsertedUtokens = UtokenInsert.NewLine();
                }
            }
示例#2
0
            public override void GetUtokensAround(UnparsableAst target, out InsertedUtokens leftInsertedUtokens, out InsertedUtokens rightInsertedUtokens)
            {
                base.GetUtokensAround(target, out leftInsertedUtokens, out rightInsertedUtokens);

                if (target.BnfTerm == B.Statement)
                {
                    leftInsertedUtokens = new[] { UtokenInsert.NewLine(), UtokenInsert.NewLine() }
                }
                ;
            }
        }
示例#3
0
            public override InsertedUtokens GetUtokensBetween(UnparsableAst leftTerminalLeaveTarget, UnparsableAst rightTarget)
            {
                if (leftTerminalLeaveTarget.BnfTerm is KeyTerm && rightTarget.BnfTerm == B.LEFT_PAREN)
                {
                    return(UtokenInsert.NoWhitespace());
                }

                else
                {
                    return(base.GetUtokensBetween(leftTerminalLeaveTarget, rightTarget));
                }
            }
示例#4
0
            public override void GetUtokensAround(UnparsableAst target, out InsertedUtokens leftInsertedUtokens, out InsertedUtokens rightInsertedUtokens)
            {
                base.GetUtokensAround(target, out leftInsertedUtokens, out rightInsertedUtokens);

                if (target.BnfTerm == B.RIGHT_PAREN)
                {
                    leftInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.LEFT_PAREN)
                {
                    rightInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.UnaryOperator)
                {
                    rightInsertedUtokens = UtokenInsert.NoWhitespace();
                }
            }
示例#5
0
            public override InsertedUtokens GetUtokensBetween(UnparsableAst leftTerminalLeaveTarget, UnparsableAst rightTarget)
            {
                if (leftTerminalLeaveTarget.AstImage != null && leftTerminalLeaveTarget.AstImage.AstValue is DC.Name && rightTarget.BnfTerm == B.LEFT_PAREN)
                {
                    return(UtokenInsert.NoWhitespace());
                }

                else if (leftTerminalLeaveTarget.AstImage != null && leftTerminalLeaveTarget.AstImage.AstValue is DC.NameRef && rightTarget.BnfTerm == B.LEFT_PAREN)
                {
                    return(UtokenInsert.NoWhitespace());
                }

                else if (leftTerminalLeaveTarget.BnfTerm == B.WRITE && rightTarget.BnfTerm == B.LEFT_PAREN)
                {
                    return(UtokenInsert.NoWhitespace());
                }

                else if (leftTerminalLeaveTarget.BnfTerm == B.WRITELN && rightTarget.BnfTerm == B.LEFT_PAREN)
                {
                    return(UtokenInsert.NoWhitespace());
                }

                // alternative ways to handle "else if" spacing
                else if (FlattenIfHierarchy && leftTerminalLeaveTarget.BnfTerm == B.ELSE && rightTarget.BnfTerm == B.If)
                {
                    return(UtokenInsert.Space().SetPriority(10));
                }
                //else if (FlattenIfHierarchy && leftTerminalLeaveTarget.BnfTerm == B.ELSE && rightTarget.BnfTerm == B.IF)
                //    return UtokenInsert.Space.SetPriority(10);
                //else if (FlattenIfHierarchy && leftTerminalLeaveTarget.BnfTerm == B.ELSE && rightTarget.AstValue is D.If)
                //    return UtokenInsert.Space.SetPriority(10);

                else if (leftTerminalLeaveTarget.BnfTerm == B.END && rightTarget.BnfTerm == B.DOT)
                {
                    return(UtokenInsert.NoWhitespace().SetPriority(10));
                }

                else
                {
                    return(base.GetUtokensBetween(leftTerminalLeaveTarget, rightTarget));
                }
            }
示例#6
0
            public override InsertedUtokens GetUtokensBetween(UnparsableAst leftTerminalLeaveTarget, UnparsableAst rightTarget)
            {
                if (leftTerminalLeaveTarget.AstImage != null && leftTerminalLeaveTarget.AstImage.AstValue is DC.Name && rightTarget.BnfTerm == B.LEFT_PAREN)
                {
                    return(UtokenInsert.NoWhitespace());
                }

                else if (leftTerminalLeaveTarget.AstImage != null && leftTerminalLeaveTarget.AstImage.AstValue is DC.NameRef && rightTarget.BnfTerm == B.LEFT_PAREN)
                {
                    return(UtokenInsert.NoWhitespace());
                }

                else if (leftTerminalLeaveTarget.BnfTerm == B.WRITE && rightTarget.BnfTerm == B.LEFT_PAREN)
                {
                    return(UtokenInsert.NoWhitespace());
                }

                else if (leftTerminalLeaveTarget.BnfTerm == B.WRITELN && rightTarget.BnfTerm == B.LEFT_PAREN)
                {
                    return(UtokenInsert.NoWhitespace());
                }

                else if (FlattenIfHierarchy && leftTerminalLeaveTarget.BnfTerm == B.ELSE && rightTarget.BnfTerm == B.If)
                {
                    return(UtokenInsert.Space().SetPriority(10));
                }

                else if (rightTarget.BnfTerm == B.ELSE && leftTerminalLeaveTarget.BnfTerm == B.END && IndentStyle == GrammarC.IndentStyle.KernighanAndRitchie)
                {
                    return(UtokenInsert.Space().SetPriority(10));
                }

                else if (leftTerminalLeaveTarget.BnfTerm == B.END && rightTarget.BnfTerm == B.DOT)
                {
                    return(UtokenInsert.NoWhitespace().SetPriority(10));
                }

                else
                {
                    return(base.GetUtokensBetween(leftTerminalLeaveTarget, rightTarget));
                }
            }
示例#7
0
            public override void GetUtokensAround(UnparsableAst target, out InsertedUtokens leftInsertedUtokens, out InsertedUtokens rightInsertedUtokens)
            {
                base.GetUtokensAround(target, out leftInsertedUtokens, out rightInsertedUtokens);

#if false       // alternative way to handle "else if" spacing
                if (target.AstValue is D.If &&
                    target.AstParent != null && target.AstParent.AstValue is D.If &&
//                    target.ParentMember != null && target.ParentMember.MemberInfo == Util.GetType<D.If>().GetMember(@if => @if.ElseBody))
                    target.ParentMember != null && target.ParentMember.MemberInfo == Util.GetMember(() => Util.GetType <D.If>().ElseBody) &&
                    target.BnfTerm == B.ELSE)
                {
                    var foo = target.BnfTerm;
                    rightInsertedUtokens = UtokenInsert.Space.SetPriority(10);
                    return;
                }
#endif

                if (target.BnfTerm == B.DOT)
                {
                    leftInsertedUtokens = rightInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.RIGHT_PAREN)
                {
                    leftInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.LEFT_PAREN)
                {
                    rightInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.SEMICOLON)
                {
                    leftInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.COMMA)
                {
                    leftInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.Statement)
                {
                    leftInsertedUtokens = rightInsertedUtokens = UtokenInsert.NewLine();
                }

                else if (target.BnfTerm == B.BEGIN)
                {
                    leftInsertedUtokens = rightInsertedUtokens = UtokenInsert.NewLine();
                }

                else if (target.BnfTerm == B.END)
                {
                    leftInsertedUtokens = rightInsertedUtokens = UtokenInsert.NewLine();

                    if (target.AstValue is D.Function)
                    {
                        rightInsertedUtokens = UtokenInsert.EmptyLine().SetPriority(10);
                    }
                }

                else if (target.BnfTerm == B.UnaryOperator)
                {
                    rightInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.Name && target.AstParent != null && target.AstParent.AstValue is D.Program)
                {
                    rightInsertedUtokens = UtokenInsert.EmptyLine();
                }

                else if (target.BnfTerm == B.NamespaceName && target.AstParent != null && target.AstParent.AstValue is D.Program)
                {
                    rightInsertedUtokens = UtokenInsert.EmptyLine();
                }
            }
示例#8
0
            public override void GetUtokensAround(UnparsableAst target, out InsertedUtokens leftInsertedUtokens, out InsertedUtokens rightInsertedUtokens)
            {
                base.GetUtokensAround(target, out leftInsertedUtokens, out rightInsertedUtokens);

                if (target.BnfTerm == B.DOT)
                {
                    leftInsertedUtokens = rightInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.RIGHT_PAREN)
                {
                    leftInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.LEFT_PAREN)
                {
                    rightInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.SEMICOLON)
                {
                    leftInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.COMMA)
                {
                    leftInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.Statement)
                {
                    leftInsertedUtokens = rightInsertedUtokens = UtokenInsert.NewLine();
                }

                else if (target.BnfTerm == B.BEGIN)
                {
                    rightInsertedUtokens = UtokenInsert.NewLine();

                    if (IndentStyle.EqualToAny(GrammarC.IndentStyle.Allman, GrammarC.IndentStyle.Whitesmiths))
                    {
                        leftInsertedUtokens = UtokenInsert.NewLine();
                    }
                    else if (IndentStyle.EqualToAny(GrammarC.IndentStyle.Stroustrup, GrammarC.IndentStyle.KernighanAndRitchie))
                    {
                        leftInsertedUtokens = UtokenInsert.Space();
                    }
                }

                else if (target.BnfTerm == B.END)
                {
                    leftInsertedUtokens = rightInsertedUtokens = UtokenInsert.NewLine();

                    if (target.AstValue is D.Function)
                    {
                        rightInsertedUtokens = UtokenInsert.EmptyLine().SetPriority(10);
                    }
                }

                else if (target.BnfTerm == B.UnaryOperator)
                {
                    rightInsertedUtokens = UtokenInsert.NoWhitespace();
                }

                else if (target.BnfTerm == B.Name && target.AstParent != null && target.AstParent.AstValue is D.Program)
                {
                    rightInsertedUtokens = UtokenInsert.EmptyLine();
                }

                else if (target.BnfTerm == B.NamespaceName && target.AstParent != null && target.AstParent.AstValue is D.Program)
                {
                    rightInsertedUtokens = UtokenInsert.EmptyLine();
                }
            }