Example #1
0
        protected static bool IsWhiteSpace(PiToken piToken)
        {
            switch (piToken.Type)
            {
            case EPiToken.Whitespace:
            case EPiToken.Tab:
            case EPiToken.NewLine:
                return(true);
            }

            return(false);
        }
Example #2
0
        private bool ColorisePiToken(PiToken tok, Slice slice)
        {
            if (slice.Length < 0)
            {
                return(false);
            }

            bool Render(Color color) => SetPiSliceColor(slice, color, _defaultFont);
            bool RenderBold(Color color) => SetPiSliceColor(slice, color, _boldFont);

            switch (tok.Type)
            {
            case EPiToken.Assert:
                return(RenderBold(Color.DarkMagenta));

            // operators
            case EPiToken.Plus:
            case EPiToken.Minus:
            case EPiToken.Multiply:
            case EPiToken.Divide:
            //case EPiToken.Modulo:
            case EPiToken.And:
            case EPiToken.Or:
            case EPiToken.Xor:
            case EPiToken.Equiv:
            case EPiToken.GreaterEquiv:
            case EPiToken.Less:
            case EPiToken.LessEquiv:
                return(Render(Color.SteelBlue));

            case EPiToken.String:
                // color the quotes too
                var expanded = new Slice(slice.Lexer, slice.LineNumber, slice.Start - 1, slice.End + 1);
                return(SetSliceColor(piInput, expanded, Color.Blue, _boldFont));

            case EPiToken.Int:
                return(Render(Color.Brown));

            case EPiToken.Float:
                return(Render(Color.Chocolate));

            case EPiToken.Ident:
                return(RenderBold(Color.DarkSlateBlue));

            case EPiToken.Quote:
                return(Render(Color.Gray));

            case EPiToken.New:
            case EPiToken.Delete:
            case EPiToken.Swap:
            case EPiToken.Drop:
            case EPiToken.DropN:
            case EPiToken.Depth:
            case EPiToken.Clear:
            case EPiToken.Rot:
            case EPiToken.RotN:
            case EPiToken.Expand:
            case EPiToken.Size:
            case EPiToken.Dup:
            case EPiToken.GetType:
                return(Render(Color.DarkOliveGreen));

            case EPiToken.Comment:
                return(Render(Color.Gray));

            case EPiToken.ToList:
            case EPiToken.ToArray:
            case EPiToken.ToMap:
            case EPiToken.ToSet:
                return(Render(Color.DarkGreen));

            default:
                return(Render(DefaultForeColor));
            }
        }