public Exp not_test() { Token token = default(Token); if (PeekAndDiscard(TokenType.Not, out token)) { var test = not_test(); return new UnaryExp ( Op.Not, test, filename, token.Start, test.End); } else { return comparison(); } }