Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Mar 19th, 2010 | Syntax: Java | Size: 1.22 KB | Hits: 63 | Expires: Never
This paste has a previous version, view the difference. Copy text to clipboard
  1. Expression Expression():
  2. {
  3.         Expression e1, e2, e3;
  4.         List<Expression> args = new ArrayList<Expression>();
  5.         Token t;
  6. }
  7. {
  8.         (
  9.                 t=<IntegerLiteral> { e2 = new IntegerLiteral(Integer.parseInt(t.image)); }
  10.                 | <TRUE> { e2 = new True(); }
  11.                 | <FALSE> { e2 = new False(); }
  12.                 | t=<Identifier> { e2 = new Identifier(t.image); }
  13.                 | <THIS> { e2 = new This(); }
  14.                 | LOOKAHEAD(2) <NEW> <INT> "[" e1=Expression() "]" { e2 = new NewArray(e1); }
  15.                 | LOOKAHEAD(2) <NEW> t=<Identifier> "(" ")" { e2 = new Object(new Identifier(t.image)); }
  16.                 | "!" e1=Expression() { e2 = new Not(e1); }
  17.                 | "(" e1=Expression() ")" { e2 = e1; }
  18.         )
  19.         [
  20.                 LOOKAHEAD(2) (
  21.                         "&&" e1=Expression() { return new And(e2, e1); }
  22.                         | "<" e1=Expression() { return new LessThan(e2, e1); }
  23.                         | "+" e1=Expression() { return new Plus(e2, e1); }
  24.                         | "-" e1=Expression() { return new Minus(e2, e1); }
  25.                         | "*" e1=Expression() { return new Times(e2, e1); }
  26.                         | "[" e1=Expression() "]" { return new ArrayLookup(e2, e1); }
  27.                         | LOOKAHEAD(2) "." "length" { return new ArrayLength(e2); }
  28.                         | LOOKAHEAD(2) "." t=<Identifier> "(" [e1=Expression() ("," e3=Expression() { args.add(e3); })*] ")" { return new Call(e1, new Identifier(t.image), args); }
  29.                 )
  30.         ] { return e2; }
  31. }