Пример #1
0
        protected internal override void Parse(Lexer lexer, List <ASTree> res)
        {
            Parser p = choose(lexer);

            if (p == null)
            {
                throw new ParseException(lexer.Peek(0));
            }
            else
            {
                res.Add(p.Parse(lexer));
            }
        }
Пример #2
0
        public void Start()
        {
            var s = File.ReadAllText("in.txt");
            //var s = Console.ReadLine();
            LineNumberReader reader = new LineNumberReader(s);
            Lexer            l      = new Lexer(reader);
            BasicParser      bp     = new BasicParser();

            while (l.Peek(0) != Token.EOF)
            {
                ASTree ast = bp.Parse(l);
                Console.WriteLine("=> " + ast.ToString());
            }
        }
Пример #3
0
        private Precedence nextOperator(Lexer lexer)
        {
            Token t = lexer.Peek(0);

            if (t.IsIdentifier)
            {
                ops.TryGetValue(t.Text, out var ret);
                return(ret);
            }
            else
            {
                return(null);
            }
        }
Пример #4
0
        protected internal override bool Match(Lexer lexer)
        {
            Token t = lexer.Peek(0);

            if (t.IsIdentifier)
            {
                foreach (String token in tokens)
                {
                    if (token.Equals(t.Text))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Пример #5
0
        public void Start()
        {
            BasicParser bp  = new BasicParser();
            BasicEnv    env = new BasicEnv();
            var         s   = File.ReadAllText("in.txt");
            //var s = Console.ReadLine();
            LineNumberReader reader = new LineNumberReader(s);
            Lexer            l      = new Lexer(reader);

            while (l.Peek(0) != Token.EOF)
            {
                ASTree ast = bp.Parse(l);
                if (!(ast is NullStmnt))
                {
                    Object r = ((ASTree)ast).eval(env);
                    //Console.WriteLine("=> " + ast.ToString());
                    Console.WriteLine("=> " + r.ToString());
                }
            }
        }
Пример #6
0
 protected internal override bool Match(Lexer lexer)
 {
     return(Test(lexer.Peek(0)));
 }