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,135 +7,170 @@ 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` TRUE_KW@[17; 21)
ERROR@[17; 236) R_PAREN@[21; 22)
err: `expected item`
TRUE_KW@[17; 21)
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)
IDENT@[27; 31) META_ITEM@[27; 38)
L_PAREN@[31; 32) IDENT@[27; 31)
IDENT@[32; 37) L_PAREN@[31; 32)
R_PAREN@[37; 38) META_ITEM@[32; 37)
IDENT@[32; 37)
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)
IDENT@[43; 47) META_ITEM@[43; 115)
L_PAREN@[47; 48) IDENT@[43; 47)
IDENT@[48; 53) L_PAREN@[47; 48)
COMMA@[53; 54) META_ITEM@[48; 53)
WHITESPACE@[54; 55) IDENT@[48; 53)
INT_NUMBER@[55; 58) COMMA@[53; 54)
COMMA@[58; 59) LITERAL@[54; 58)
WHITESPACE@[59; 60) WHITESPACE@[54; 55)
TRUE_KW@[60; 64) INT_NUMBER@[55; 58)
COMMA@[64; 65) COMMA@[58; 59)
WHITESPACE@[65; 66) LITERAL@[59; 64)
STRING@[66; 72) WHITESPACE@[59; 60)
COMMA@[72; 73) TRUE_KW@[60; 64)
WHITESPACE@[73; 74) COMMA@[64; 65)
IDENT@[74; 79) LITERAL@[65; 72)
WHITESPACE@[79; 80) WHITESPACE@[65; 66)
EQ@[80; 81) STRING@[66; 72)
WHITESPACE@[81; 82) COMMA@[72; 73)
INT_NUMBER@[82; 85) META_ITEM@[73; 85)
COMMA@[85; 86) WHITESPACE@[73; 74)
WHITESPACE@[86; 87) IDENT@[74; 79)
IDENT@[87; 92) WHITESPACE@[79; 80)
WHITESPACE@[92; 93) EQ@[80; 81)
EQ@[93; 94) LITERAL@[81; 85)
WHITESPACE@[94; 95) WHITESPACE@[81; 82)
STRING@[95; 102) INT_NUMBER@[82; 85)
COMMA@[102; 103) COMMA@[85; 86)
WHITESPACE@[103; 104) META_ITEM@[86; 102)
IDENT@[104; 109) WHITESPACE@[86; 87)
L_PAREN@[109; 110) IDENT@[87; 92)
INT_NUMBER@[110; 113) WHITESPACE@[92; 93)
R_PAREN@[113; 114) EQ@[93; 94)
R_PAREN@[114; 115) 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) 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)
IDENT@[120; 124) META_ITEM@[120; 129)
L_PAREN@[124; 125) IDENT@[120; 124)
INT_NUMBER@[125; 128) L_PAREN@[124; 125)
R_PAREN@[128; 129) LITERAL@[125; 128)
INT_NUMBER@[125; 128)
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)
IDENT@[134; 138) META_ITEM@[134; 154)
L_PAREN@[138; 139) IDENT@[134; 138)
IDENT@[139; 146) L_PAREN@[138; 139)
WHITESPACE@[146; 147) META_ITEM@[139; 153)
EQ@[147; 148) IDENT@[139; 146)
WHITESPACE@[148; 149) WHITESPACE@[146; 147)
TRUE_KW@[149; 153) EQ@[147; 148)
R_PAREN@[153; 154) LITERAL@[148; 153)
WHITESPACE@[148; 149)
TRUE_KW@[149; 153)
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)
IDENT@[159; 166) META_ITEM@[159; 172)
L_PAREN@[166; 167) IDENT@[159; 166)
TRUE_KW@[167; 171) L_PAREN@[166; 167)
R_PAREN@[171; 172) LITERAL@[167; 171)
TRUE_KW@[167; 171)
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)
IDENT@[177; 181) META_ITEM@[177; 190)
L_PAREN@[181; 182) IDENT@[177; 181)
STRING@[182; 189) L_PAREN@[181; 182)
R_PAREN@[189; 190) LITERAL@[182; 189)
STRING@[182; 189)
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)
IDENT@[195; 199) META_ITEM@[195; 213)
L_PAREN@[199; 200) IDENT@[195; 199)
IDENT@[200; 201) L_PAREN@[199; 200)
COMMA@[201; 202) META_ITEM@[200; 201)
WHITESPACE@[202; 203) IDENT@[200; 201)
IDENT@[203; 208) COMMA@[201; 202)
WHITESPACE@[208; 209) META_ITEM@[202; 212)
EQ@[209; 210) WHITESPACE@[202; 203)
WHITESPACE@[210; 211) IDENT@[203; 208)
INT_NUMBER@[211; 212) WHITESPACE@[208; 209)
R_PAREN@[212; 213) EQ@[209; 210)
LITERAL@[210; 212)
WHITESPACE@[210; 211)
INT_NUMBER@[211; 212)
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)
IDENT@[218; 222) META_ITEM@[218; 235)
L_PAREN@[222; 223) IDENT@[218; 222)
IDENT@[223; 224) L_PAREN@[222; 223)
COMMA@[224; 225) META_ITEM@[223; 224)
WHITESPACE@[225; 226) IDENT@[223; 224)
IDENT@[226; 231) COMMA@[224; 225)
L_PAREN@[231; 232) META_ITEM@[225; 234)
INT_NUMBER@[232; 233) WHITESPACE@[225; 226)
R_PAREN@[233; 234) IDENT@[226; 231)
R_PAREN@[234; 235) L_PAREN@[231; 232)
LITERAL@[232; 233)
INT_NUMBER@[232; 233)
R_PAREN@[233; 234)
R_PAREN@[234; 235)
R_BRACK@[235; 236) R_BRACK@[235; 236)