예제 #1
0
    public static object parse(string filename, System.IO.TextReader r, bool Verbose)
    {
        CharEnumerator         ce  = new File2CharEnumerator(r);
        InputElementEnumerator iee = new Char2InputElementEnumerator(ce, filename);

        if (Verbose)
        {
            iee = new EchoInputEnumerator(iee, "raw> ");
        }
        iee = new PreprocessorEnumerator(iee);
        iee = new SkipWhiteEnumerator(iee);
        if (Verbose)
        {
            iee = new EchoInputEnumerator(iee, "ppd> ");
        }

        Parser           p     = new Parser(iee);
        nonterminalState parse = p.parse(System.Console.Error);

        if (parse != null)
        {
            if (Verbose)
            {
                System.Console.WriteLine("DERIVATION:");
                System.Console.WriteLine(parse.ToString(""));
            }
            object ast = parse.rewrite2AST();
            return(ast);
        }
        else
        {
            return(null);
        }
    }
예제 #2
0
    protected void tokenize(InputElement ie)
    {
        String2CharEnumerator s2ce            = new String2CharEnumerator(ie.str);
        PreprocessorInputElementEnumerator pp = new PreprocessorInputElementEnumerator(s2ce, ie.coord.file);
        SkipWhiteEnumerator swe = new SkipWhiteEnumerator(pp);

        tokens = swe;
        if (Verbose)
        {
            tokens = new EchoInputEnumerator(tokens, "PPD> ");
        }
    }