Example #1
0
// Parse a postfix expr.
//
//    postfix-expr ::= applicaiton-expr
Tree*
parse_postfix_expr(Parser& p) {
  if (Tree* t1 = parse_primary_expr(p)) {
    while (t1) {
      if (Tree* t2 = parse_dot_expr(p, t1))
        t1 = t2;
      else if (Tree* t2 = parse_application_expr(p, t1)) 
        t1 = t2;
      else if (Tree* t2 = parse_and_expr(p, t1))
        t1 = t2;
      else if (Tree* t2 = parse_or_expr(p, t1))
        t1 = t2;
      else if (Tree* t2 = parse_eq_comp_expr(p, t1))
        t1 = t2;
      else if (Tree* t2 = parse_less_expr(p, t1))
        t1 = t2;
      else if (Tree* t2 = parse_union(p, t1))
        t1 = t2;
      else if (Tree* t2 = parse_intersect(p, t1))
        t1 = t2;
      else if (Tree* t2 = parse_except(p, t1))
        t1 = t2;
      else if (Tree* t2 = parse_join(p, t1))
        t1 = t2;
      else if (Tree* t2 = parse_as(p, t1))
        t1 = t2;
      else 
        break;
    }
    return t1;
  }
  return parse_primary_expr(p);
}
Example #2
0
// Parse a postfix expr.
//
//    postfix-expr ::= applicaiton-expr
Tree*
parse_postfix_expr(Parser& p) {
  if (Tree* t1 = parse_primary_expr(p)) {
    while (t1) {
      if (Tree* t2 = parse_dot_expr(p, t1))
        t1 = t2;
      else if (Tree* t2 = parse_application_expr(p, t1)) 
        t1 = t2;
      else 
        break;
    }
    return t1;
  }
  return parse_primary_expr(p);
}