Skip to content

Commit

Permalink
syntax: Replace token::DOLLAR_PAREN, DOLLAR_NUM with just DOLLAR
Browse files Browse the repository at this point in the history
Figure the rest out in the parser
  • Loading branch information
brson committed Apr 23, 2012
1 parent 7321c17 commit 5129275
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 37 deletions.
18 changes: 1 addition & 17 deletions src/librustsyntax/parse/lexer.rs
Expand Up @@ -367,23 +367,7 @@ fn next_token_inner(rdr: reader) -> token::token {
} else { ret token::COLON; }
}

'$' {
rdr.bump();
if is_dec_digit(rdr.curr) {
let mut val = dec_digit_val(rdr.curr) as uint;
while is_dec_digit(rdr.next()) {
rdr.bump();
val = val * 10u + (dec_digit_val(rdr.curr) as uint);
}
rdr.bump();
ret token::DOLLAR_NUM(val);
} else if rdr.curr == '(' {
rdr.bump();
ret token::DOLLAR_LPAREN;
} else {
rdr.fatal("expected digit");
}
}
'$' { rdr.bump(); ret token::DOLLAR; }



Expand Down
32 changes: 20 additions & 12 deletions src/librustsyntax/parse/parser.rs
Expand Up @@ -327,7 +327,7 @@ fn parse_region(p: parser) -> ast::region {
fn parse_ty(p: parser, colons_before_params: bool) -> @ast::ty {
let lo = p.span.lo;

alt have_dollar(p) {
alt maybe_parse_dollar_mac(p) {
some(e) {
ret @{id: p.get_id(),
node: ast::ty_mac(spanned(lo, p.span.hi, e)),
Expand Down Expand Up @@ -440,19 +440,27 @@ fn parse_fn_block_arg(p: parser) -> ast::arg {
ret {mode: m, ty: t, ident: i, id: p.get_id()};
}

fn have_dollar(p: parser) -> option<ast::mac_> {
fn maybe_parse_dollar_mac(p: parser) -> option<ast::mac_> {
alt p.token {
token::DOLLAR_NUM(num) {
p.bump();
some(ast::mac_var(num))
}
token::DOLLAR_LPAREN {
token::DOLLAR {
let lo = p.span.lo;
p.bump();
let e = parse_expr(p);
expect(p, token::RPAREN);
let hi = p.last_span.hi;
some(ast::mac_aq(ast_util::mk_sp(lo,hi), e))
alt p.token {
token::LIT_INT(num, ast::ty_i) {
p.bump();
some(ast::mac_var(num as uint))
}
token::LPAREN {
p.bump();
let e = parse_expr(p);
expect(p, token::RPAREN);
let hi = p.last_span.hi;
some(ast::mac_aq(ast_util::mk_sp(lo,hi), e))
}
_ {
p.fatal("expected `(` or integer literal");
}
}
}
_ {none}
}
Expand Down Expand Up @@ -623,7 +631,7 @@ fn parse_bottom_expr(p: parser) -> pexpr {

let mut ex: ast::expr_;

alt have_dollar(p) {
alt maybe_parse_dollar_mac(p) {
some(x) {ret pexpr(mk_mac_expr(p, lo, p.span.hi, x));}
_ {}
}
Expand Down
10 changes: 2 additions & 8 deletions src/librustsyntax/parse/token.rs
Expand Up @@ -53,9 +53,7 @@ enum token {
LBRACE,
RBRACE,
POUND,

DOLLAR_LPAREN,
DOLLAR_NUM(uint),
DOLLAR,

/* Literals */
LIT_INT(i64, ast::int_ty),
Expand Down Expand Up @@ -122,11 +120,7 @@ fn to_str(in: interner<str>, t: token) -> str {
LBRACE { ret "{"; }
RBRACE { ret "}"; }
POUND { ret "#"; }

DOLLAR_LPAREN { ret "$("; }
DOLLAR_NUM(u) {
ret "$" + uint::to_str(u as uint, 10u);
}
DOLLAR { ret "$"; }

/* Literals */
LIT_INT(c, ast::ty_char) {
Expand Down

0 comments on commit 5129275

Please sign in to comment.