mirror of https://github.com/rust-lang/rust.git
G: introduce names
This commit is contained in:
parent
c3b009b6d2
commit
fc0a9e266b
|
@ -118,5 +118,7 @@ Grammar(
|
||||||
"LIFETIME_PARAM",
|
"LIFETIME_PARAM",
|
||||||
"TYPE_PARAM",
|
"TYPE_PARAM",
|
||||||
"ABI",
|
"ABI",
|
||||||
|
"NAME",
|
||||||
|
"NAME_REF",
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
|
@ -196,8 +196,9 @@ fn extern_crate_item(p: &mut Parser) {
|
||||||
p.bump();
|
p.bump();
|
||||||
assert!(p.at(CRATE_KW));
|
assert!(p.at(CRATE_KW));
|
||||||
p.bump();
|
p.bump();
|
||||||
|
name(p);
|
||||||
p.expect(IDENT) && alias(p) && p.expect(SEMI);
|
alias(p);
|
||||||
|
p.expect(SEMI);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn extern_block(p: &mut Parser) {
|
fn extern_block(p: &mut Parser) {
|
||||||
|
|
|
@ -44,12 +44,22 @@ fn alias(p: &mut Parser) -> bool {
|
||||||
if p.at(AS_KW) {
|
if p.at(AS_KW) {
|
||||||
let alias = p.start();
|
let alias = p.start();
|
||||||
p.bump();
|
p.bump();
|
||||||
p.expect(IDENT);
|
name(p);
|
||||||
alias.complete(p, ALIAS);
|
alias.complete(p, ALIAS);
|
||||||
}
|
}
|
||||||
true //FIXME: return false if three are errors
|
true //FIXME: return false if three are errors
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn name(p: &mut Parser) {
|
||||||
|
if p.at(IDENT) {
|
||||||
|
let m = p.start();
|
||||||
|
p.bump();
|
||||||
|
m.complete(p, NAME);
|
||||||
|
} else {
|
||||||
|
p.error("expected a name");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn error_block(p: &mut Parser, message: &str) {
|
fn error_block(p: &mut Parser, message: &str) {
|
||||||
assert!(p.at(L_CURLY));
|
assert!(p.at(L_CURLY));
|
||||||
let err = p.start();
|
let err = p.start();
|
||||||
|
|
|
@ -116,6 +116,8 @@ pub enum SyntaxKind {
|
||||||
LIFETIME_PARAM,
|
LIFETIME_PARAM,
|
||||||
TYPE_PARAM,
|
TYPE_PARAM,
|
||||||
ABI,
|
ABI,
|
||||||
|
NAME,
|
||||||
|
NAME_REF,
|
||||||
|
|
||||||
// Technical SyntaxKinds: they appear temporally during parsing,
|
// Technical SyntaxKinds: they appear temporally during parsing,
|
||||||
// but never end up in the final tree
|
// but never end up in the final tree
|
||||||
|
@ -239,6 +241,8 @@ impl SyntaxKind {
|
||||||
LIFETIME_PARAM => &SyntaxInfo { name: "LIFETIME_PARAM" },
|
LIFETIME_PARAM => &SyntaxInfo { name: "LIFETIME_PARAM" },
|
||||||
TYPE_PARAM => &SyntaxInfo { name: "TYPE_PARAM" },
|
TYPE_PARAM => &SyntaxInfo { name: "TYPE_PARAM" },
|
||||||
ABI => &SyntaxInfo { name: "ABI" },
|
ABI => &SyntaxInfo { name: "ABI" },
|
||||||
|
NAME => &SyntaxInfo { name: "NAME" },
|
||||||
|
NAME_REF => &SyntaxInfo { name: "NAME_REF" },
|
||||||
|
|
||||||
TOMBSTONE => &SyntaxInfo { name: "TOMBSTONE" },
|
TOMBSTONE => &SyntaxInfo { name: "TOMBSTONE" },
|
||||||
EOF => &SyntaxInfo { name: "EOF" },
|
EOF => &SyntaxInfo { name: "EOF" },
|
||||||
|
|
|
@ -3,7 +3,8 @@ FILE@[0; 18)
|
||||||
EXTERN_KW@[0; 6)
|
EXTERN_KW@[0; 6)
|
||||||
WHITESPACE@[6; 7)
|
WHITESPACE@[6; 7)
|
||||||
CRATE_KW@[7; 12)
|
CRATE_KW@[7; 12)
|
||||||
WHITESPACE@[12; 13)
|
NAME@[12; 16)
|
||||||
IDENT@[13; 16) "foo"
|
WHITESPACE@[12; 13)
|
||||||
|
IDENT@[13; 16) "foo"
|
||||||
SEMI@[16; 17)
|
SEMI@[16; 17)
|
||||||
WHITESPACE@[17; 18)
|
WHITESPACE@[17; 18)
|
||||||
|
|
|
@ -3,20 +3,23 @@ FILE@[0; 43)
|
||||||
EXTERN_KW@[0; 6)
|
EXTERN_KW@[0; 6)
|
||||||
WHITESPACE@[6; 7)
|
WHITESPACE@[6; 7)
|
||||||
CRATE_KW@[7; 12)
|
CRATE_KW@[7; 12)
|
||||||
WHITESPACE@[12; 13)
|
NAME@[12; 16)
|
||||||
IDENT@[13; 16) "foo"
|
WHITESPACE@[12; 13)
|
||||||
|
IDENT@[13; 16) "foo"
|
||||||
SEMI@[16; 17)
|
SEMI@[16; 17)
|
||||||
WHITESPACE@[17; 18)
|
WHITESPACE@[17; 18)
|
||||||
EXTERN_CRATE_ITEM@[18; 43)
|
EXTERN_CRATE_ITEM@[18; 43)
|
||||||
EXTERN_KW@[18; 24)
|
EXTERN_KW@[18; 24)
|
||||||
WHITESPACE@[24; 25)
|
WHITESPACE@[24; 25)
|
||||||
CRATE_KW@[25; 30)
|
CRATE_KW@[25; 30)
|
||||||
WHITESPACE@[30; 31)
|
NAME@[30; 35)
|
||||||
IDENT@[31; 34) "foo"
|
WHITESPACE@[30; 31)
|
||||||
ALIAS@[34; 41)
|
IDENT@[31; 34) "foo"
|
||||||
WHITESPACE@[34; 35)
|
WHITESPACE@[34; 35)
|
||||||
|
ALIAS@[35; 41)
|
||||||
AS_KW@[35; 37)
|
AS_KW@[35; 37)
|
||||||
WHITESPACE@[37; 38)
|
NAME@[37; 41)
|
||||||
IDENT@[38; 41) "bar"
|
WHITESPACE@[37; 38)
|
||||||
|
IDENT@[38; 41) "bar"
|
||||||
SEMI@[41; 42)
|
SEMI@[41; 42)
|
||||||
WHITESPACE@[42; 43)
|
WHITESPACE@[42; 43)
|
||||||
|
|
|
@ -9,8 +9,9 @@ FILE@[0; 55)
|
||||||
WHITESPACE@[7; 8)
|
WHITESPACE@[7; 8)
|
||||||
ALIAS@[8; 14)
|
ALIAS@[8; 14)
|
||||||
AS_KW@[8; 10)
|
AS_KW@[8; 10)
|
||||||
WHITESPACE@[10; 11)
|
NAME@[10; 14)
|
||||||
IDENT@[11; 14) "bar"
|
WHITESPACE@[10; 11)
|
||||||
|
IDENT@[11; 14) "bar"
|
||||||
SEMI@[14; 15)
|
SEMI@[14; 15)
|
||||||
WHITESPACE@[15; 16)
|
WHITESPACE@[15; 16)
|
||||||
USE_ITEM@[16; 55)
|
USE_ITEM@[16; 55)
|
||||||
|
@ -29,8 +30,9 @@ FILE@[0; 55)
|
||||||
WHITESPACE@[27; 28)
|
WHITESPACE@[27; 28)
|
||||||
ALIAS@[28; 32)
|
ALIAS@[28; 32)
|
||||||
AS_KW@[28; 30)
|
AS_KW@[28; 30)
|
||||||
WHITESPACE@[30; 31)
|
NAME@[30; 32)
|
||||||
IDENT@[31; 32) "b"
|
WHITESPACE@[30; 31)
|
||||||
|
IDENT@[31; 32) "b"
|
||||||
COMMA@[32; 33)
|
COMMA@[32; 33)
|
||||||
USE_TREE@[33; 35)
|
USE_TREE@[33; 35)
|
||||||
WHITESPACE@[33; 34)
|
WHITESPACE@[33; 34)
|
||||||
|
@ -50,8 +52,9 @@ FILE@[0; 55)
|
||||||
WHITESPACE@[47; 48)
|
WHITESPACE@[47; 48)
|
||||||
ALIAS@[48; 52)
|
ALIAS@[48; 52)
|
||||||
AS_KW@[48; 50)
|
AS_KW@[48; 50)
|
||||||
WHITESPACE@[50; 51)
|
NAME@[50; 52)
|
||||||
IDENT@[51; 52) "x"
|
WHITESPACE@[50; 51)
|
||||||
|
IDENT@[51; 52) "x"
|
||||||
R_CURLY@[52; 53)
|
R_CURLY@[52; 53)
|
||||||
SEMI@[53; 54)
|
SEMI@[53; 54)
|
||||||
WHITESPACE@[54; 55)
|
WHITESPACE@[54; 55)
|
||||||
|
|
Loading…
Reference in New Issue