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)); } }
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()); } }
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); } }
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); }
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()); } } }
protected internal override bool Match(Lexer lexer) { return(Test(lexer.Peek(0))); }