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", "FN_ITEM",
"ATTR", "ATTR",
"META_ITEM", "META_ITEM",
"LITERAL",
] ]
) )

View file

@ -1,5 +1,16 @@
use super::*; use super::*;
pub(super) fn literal(p: &mut Parser) -> bool { 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 FN_ITEM: SyntaxKind = SyntaxKind(62);
pub const ATTR: SyntaxKind = SyntaxKind(63); pub const ATTR: SyntaxKind = SyntaxKind(63);
pub const META_ITEM: SyntaxKind = SyntaxKind(64); 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: "USE_KW" },
SyntaxInfo { name: "FN_KW" }, SyntaxInfo { name: "FN_KW" },
SyntaxInfo { name: "STRUCT_KW" }, SyntaxInfo { name: "STRUCT_KW" },
@ -133,6 +134,7 @@ static INFOS: [SyntaxInfo; 65] = [
SyntaxInfo { name: "FN_ITEM" }, SyntaxInfo { name: "FN_ITEM" },
SyntaxInfo { name: "ATTR" }, SyntaxInfo { name: "ATTR" },
SyntaxInfo { name: "META_ITEM" }, SyntaxInfo { name: "META_ITEM" },
SyntaxInfo { name: "LITERAL" },
]; ];
pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo { pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo {

View file

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