Exemplo n.º 1
0
 ParseTree TokenAsParseTree(ParseTree.Labels prim0)
 {
     return(this.WithNewParseTree(prim0, pt => {
         pt.Content = this.CurrentToken().Content;
         this.NextToken();
     }));
 }
Exemplo n.º 2
0
        ParseTree WithAnchoredParseTree(int startPos, ParseTree.Labels label, Action <ParseTree> action)
        {
            ParseTree result = new ParseTree();

            result.StartPos = startPos;
            result.Label    = label;
            action(result);
            result.EndPos = this.LastToken().EndPos;
            return(result);
        }
Exemplo n.º 3
0
        ParseTree WithNewParseTree(ParseTree.Labels label, Action <ParseTree> action)
        {
            ParseTree result = new ParseTree();

            result.StartPos = this.CurrentToken().StartPos;
            result.Label    = label;
            action(result);
            result.EndPos = this.LastToken().EndPos;
            return(result);
        }
Exemplo n.º 4
0
        object CompileAtomValue(ParseTree.Labels label, string content)
        {
            switch (label)
            {
            case ParseTree.Labels.Number:
            {
                double doubleResult;
                long   longResult;
                if (long.TryParse(content, out longResult))
                {
                    return(Value.MakeInt(longResult));
                }
                else if (double.TryParse(content, out doubleResult))
                {
                    return(Value.MakeFloat(doubleResult));
                }
            }
                Utils.Panic();
                return(null);

            case ParseTree.Labels.String:
                return(Value.Make(content.Substring(1, content.Length - 2)));

            case ParseTree.Labels.Bool:
                switch (content)
                {
                case "true":
                    return(Value.Make(true));

                case "false":
                    return(Value.Make(false));

                default:
                    Utils.Panic();
                    return(null);
                }

            case ParseTree.Labels.Void:
                return(Value.Make());

            default:
                Utils.Panic();
                return(null);
            }
        }