Exemple #1
0
// Parse a return type. This specifies the result type of a 
// function declarator.
//
//    return-type ::= '->' expr
Tree*
parse_return_type(Parser& p) {

      if (parse::expect(p, arrow_tok))
       if (Tree* t = parse_type_lit(p))
          return t;
      return nullptr;
    
}
Exemple #2
0
// Parse a literal expression.
//
//    literal-expr ::= unit-literal
//                   | boolean-literal 
//                   | integer-literal 
//                   | string-literal
//                   | type-literal
Tree*
parse_literal_expr(Parser& p) {
  if (Tree* t = parse_unit_lit(p))
    return t;
  if (Tree* t = parse_boolean_lit(p))
    return t;
  if (Tree* t = parse_integer_lit(p))
    return t;
  if (Tree* t = parse_string_lit(p))
    return t;
  if (Tree* t = parse_type_lit(p))
    return t;
  return nullptr;  
}