private Surface.Expr Factor() { Surface.Expr expr; switch (lookahead.Type) { case SchoolLexer.LPAREN: Match(SchoolLexer.LPAREN); expr = Expr(); Match(SchoolLexer.RPAREN); break; case SchoolLexer.NUM: string numberText = lookahead.Text; expr = new Surface.Number(Int32.Parse(numberText)); Consume(); break; default: throw new ParserException("expecting number; found " + lookahead); } return(expr); }
Core.Expr Surface.IExprVisitor <Core.Expr> .Visit(Surface.Number number) { return(new Core.Number(number.Value)); }
object Surface.IExprVisitor <object> .Visit(Surface.Number number) { Console.Write(number.Value); return(null); }