G: inner attributes

This commit is contained in:
Aleksey Kladov 2018-01-08 21:40:00 +03:00
parent f25142c5ed
commit ea186fe2c0
4 changed files with 137 additions and 88 deletions

View File

@ -69,5 +69,6 @@ Grammar(
"FN_ITEM",
"ATTR",
"META_ITEM",
"LITERAL",
]
)

View File

@ -1,5 +1,16 @@
use super::*;
pub(super) fn literal(p: &mut Parser) -> bool {
p.eat(INT_NUMBER) || p.eat(FLOAT_NUMBER)
match p.current() {
TRUE_KW | FALSE_KW
| INT_NUMBER | FLOAT_NUMBER
| BYTE | CHAR
|STRING | RAW_STRING | BYTE_STRING | RAW_BYTE_STRING => {
node(p, LITERAL, |p| {
p.bump();
});
true
}
_ => false
}
}

View File

@ -66,8 +66,9 @@ pub const STRUCT_FIELD: SyntaxKind = SyntaxKind(61);
pub const FN_ITEM: SyntaxKind = SyntaxKind(62);
pub const ATTR: SyntaxKind = SyntaxKind(63);
pub const META_ITEM: SyntaxKind = SyntaxKind(64);
pub const LITERAL: SyntaxKind = SyntaxKind(65);
static INFOS: [SyntaxInfo; 65] = [
static INFOS: [SyntaxInfo; 66] = [
SyntaxInfo { name: "USE_KW" },
SyntaxInfo { name: "FN_KW" },
SyntaxInfo { name: "STRUCT_KW" },
@ -133,6 +134,7 @@ static INFOS: [SyntaxInfo; 65] = [
SyntaxInfo { name: "FN_ITEM" },
SyntaxInfo { name: "ATTR" },
SyntaxInfo { name: "META_ITEM" },
SyntaxInfo { name: "LITERAL" },
];
pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo {

View File

@ -7,135 +7,170 @@ FILE@[0; 236)
IDENT@[3; 7)
R_BRACK@[7; 8)
WHITESPACE@[8; 9)
ATTR@[9; 17)
ATTR@[9; 24)
POUND@[9; 10)
EXCL@[10; 11)
L_BRACK@[11; 12)
META_ITEM@[12; 17)
META_ITEM@[12; 22)
IDENT@[12; 16)
L_PAREN@[16; 17)
err: `expected R_PAREN`
err: `expected R_BRACK`
ERROR@[17; 236)
err: `expected item`
TRUE_KW@[17; 21)
R_PAREN@[21; 22)
LITERAL@[17; 21)
TRUE_KW@[17; 21)
R_PAREN@[21; 22)
R_BRACK@[22; 23)
WHITESPACE@[23; 24)
ATTR@[24; 40)
POUND@[24; 25)
EXCL@[25; 26)
L_BRACK@[26; 27)
IDENT@[27; 31)
L_PAREN@[31; 32)
IDENT@[32; 37)
R_PAREN@[37; 38)
META_ITEM@[27; 38)
IDENT@[27; 31)
L_PAREN@[31; 32)
META_ITEM@[32; 37)
IDENT@[32; 37)
R_PAREN@[37; 38)
R_BRACK@[38; 39)
WHITESPACE@[39; 40)
ATTR@[40; 117)
POUND@[40; 41)
EXCL@[41; 42)
L_BRACK@[42; 43)
IDENT@[43; 47)
L_PAREN@[47; 48)
IDENT@[48; 53)
COMMA@[53; 54)
WHITESPACE@[54; 55)
INT_NUMBER@[55; 58)
COMMA@[58; 59)
WHITESPACE@[59; 60)
TRUE_KW@[60; 64)
COMMA@[64; 65)
WHITESPACE@[65; 66)
STRING@[66; 72)
COMMA@[72; 73)
WHITESPACE@[73; 74)
IDENT@[74; 79)
WHITESPACE@[79; 80)
EQ@[80; 81)
WHITESPACE@[81; 82)
INT_NUMBER@[82; 85)
COMMA@[85; 86)
WHITESPACE@[86; 87)
IDENT@[87; 92)
WHITESPACE@[92; 93)
EQ@[93; 94)
WHITESPACE@[94; 95)
STRING@[95; 102)
COMMA@[102; 103)
WHITESPACE@[103; 104)
IDENT@[104; 109)
L_PAREN@[109; 110)
INT_NUMBER@[110; 113)
R_PAREN@[113; 114)
R_PAREN@[114; 115)
META_ITEM@[43; 115)
IDENT@[43; 47)
L_PAREN@[47; 48)
META_ITEM@[48; 53)
IDENT@[48; 53)
COMMA@[53; 54)
LITERAL@[54; 58)
WHITESPACE@[54; 55)
INT_NUMBER@[55; 58)
COMMA@[58; 59)
LITERAL@[59; 64)
WHITESPACE@[59; 60)
TRUE_KW@[60; 64)
COMMA@[64; 65)
LITERAL@[65; 72)
WHITESPACE@[65; 66)
STRING@[66; 72)
COMMA@[72; 73)
META_ITEM@[73; 85)
WHITESPACE@[73; 74)
IDENT@[74; 79)
WHITESPACE@[79; 80)
EQ@[80; 81)
LITERAL@[81; 85)
WHITESPACE@[81; 82)
INT_NUMBER@[82; 85)
COMMA@[85; 86)
META_ITEM@[86; 102)
WHITESPACE@[86; 87)
IDENT@[87; 92)
WHITESPACE@[92; 93)
EQ@[93; 94)
LITERAL@[94; 102)
WHITESPACE@[94; 95)
STRING@[95; 102)
COMMA@[102; 103)
META_ITEM@[103; 114)
WHITESPACE@[103; 104)
IDENT@[104; 109)
L_PAREN@[109; 110)
LITERAL@[110; 113)
INT_NUMBER@[110; 113)
R_PAREN@[113; 114)
R_PAREN@[114; 115)
R_BRACK@[115; 116)
WHITESPACE@[116; 117)
ATTR@[117; 131)
POUND@[117; 118)
EXCL@[118; 119)
L_BRACK@[119; 120)
IDENT@[120; 124)
L_PAREN@[124; 125)
INT_NUMBER@[125; 128)
R_PAREN@[128; 129)
META_ITEM@[120; 129)
IDENT@[120; 124)
L_PAREN@[124; 125)
LITERAL@[125; 128)
INT_NUMBER@[125; 128)
R_PAREN@[128; 129)
R_BRACK@[129; 130)
WHITESPACE@[130; 131)
ATTR@[131; 156)
POUND@[131; 132)
EXCL@[132; 133)
L_BRACK@[133; 134)
IDENT@[134; 138)
L_PAREN@[138; 139)
IDENT@[139; 146)
WHITESPACE@[146; 147)
EQ@[147; 148)
WHITESPACE@[148; 149)
TRUE_KW@[149; 153)
R_PAREN@[153; 154)
META_ITEM@[134; 154)
IDENT@[134; 138)
L_PAREN@[138; 139)
META_ITEM@[139; 153)
IDENT@[139; 146)
WHITESPACE@[146; 147)
EQ@[147; 148)
LITERAL@[148; 153)
WHITESPACE@[148; 149)
TRUE_KW@[149; 153)
R_PAREN@[153; 154)
R_BRACK@[154; 155)
WHITESPACE@[155; 156)
ATTR@[156; 174)
POUND@[156; 157)
EXCL@[157; 158)
L_BRACK@[158; 159)
IDENT@[159; 166)
L_PAREN@[166; 167)
TRUE_KW@[167; 171)
R_PAREN@[171; 172)
META_ITEM@[159; 172)
IDENT@[159; 166)
L_PAREN@[166; 167)
LITERAL@[167; 171)
TRUE_KW@[167; 171)
R_PAREN@[171; 172)
R_BRACK@[172; 173)
WHITESPACE@[173; 174)
ATTR@[174; 192)
POUND@[174; 175)
EXCL@[175; 176)
L_BRACK@[176; 177)
IDENT@[177; 181)
L_PAREN@[181; 182)
STRING@[182; 189)
R_PAREN@[189; 190)
META_ITEM@[177; 190)
IDENT@[177; 181)
L_PAREN@[181; 182)
LITERAL@[182; 189)
STRING@[182; 189)
R_PAREN@[189; 190)
R_BRACK@[190; 191)
WHITESPACE@[191; 192)
ATTR@[192; 215)
POUND@[192; 193)
EXCL@[193; 194)
L_BRACK@[194; 195)
IDENT@[195; 199)
L_PAREN@[199; 200)
IDENT@[200; 201)
COMMA@[201; 202)
WHITESPACE@[202; 203)
IDENT@[203; 208)
WHITESPACE@[208; 209)
EQ@[209; 210)
WHITESPACE@[210; 211)
INT_NUMBER@[211; 212)
R_PAREN@[212; 213)
META_ITEM@[195; 213)
IDENT@[195; 199)
L_PAREN@[199; 200)
META_ITEM@[200; 201)
IDENT@[200; 201)
COMMA@[201; 202)
META_ITEM@[202; 212)
WHITESPACE@[202; 203)
IDENT@[203; 208)
WHITESPACE@[208; 209)
EQ@[209; 210)
LITERAL@[210; 212)
WHITESPACE@[210; 211)
INT_NUMBER@[211; 212)
R_PAREN@[212; 213)
R_BRACK@[213; 214)
WHITESPACE@[214; 215)
ATTR@[215; 236)
POUND@[215; 216)
EXCL@[216; 217)
L_BRACK@[217; 218)
IDENT@[218; 222)
L_PAREN@[222; 223)
IDENT@[223; 224)
COMMA@[224; 225)
WHITESPACE@[225; 226)
IDENT@[226; 231)
L_PAREN@[231; 232)
INT_NUMBER@[232; 233)
R_PAREN@[233; 234)
R_PAREN@[234; 235)
META_ITEM@[218; 235)
IDENT@[218; 222)
L_PAREN@[222; 223)
META_ITEM@[223; 224)
IDENT@[223; 224)
COMMA@[224; 225)
META_ITEM@[225; 234)
WHITESPACE@[225; 226)
IDENT@[226; 231)
L_PAREN@[231; 232)
LITERAL@[232; 233)
INT_NUMBER@[232; 233)
R_PAREN@[233; 234)
R_PAREN@[234; 235)
R_BRACK@[235; 236)