Exemple #1
0
 Tree*
 parse_enclosed_expr(Parser& p, Token_kind open_tok, Token_kind close_tok) {
   if (const Token* k = parse::accept(p, open_tok)) {
     if (Tree_seq* ts = parse_elem_list(p, close_tok)) {
       if (parse::expect(p, close_tok))
         return new T(k, ts);
     } else {
       // TODO: expected after the open_token
       parse::parse_error(p) << "expected 'elem-list'";
     }
   }
   return nullptr;
 }
Exemple #2
0
// Parse the schema of a table 
//
//    schema-expr ::= [x1:T1,...,xn:Tn]
Tree_seq*
parse_schema_expr(Parser& p) {
  if(parse::accept(p, lbracket_tok)) {
    if(Tree_seq* schema = parse_elem_list(p, rbracket_tok)) {
      if(parse::accept(p, rbracket_tok))
        return schema;
      else
        parse::parse_error(p) << "Expected ']' after schema definition";
    }
  }
  else
    parse::parse_error(p) << "Expected '[' after 'table'";

  return nullptr;
}