diff options
author | Aleksey Kladov <[email protected]> | 2018-01-08 18:40:00 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-01-08 18:40:00 +0000 |
commit | ea186fe2c073dfd56f834068ee928a9c875b0279 (patch) | |
tree | 8c3d8c12b04f95691f2140190a970199ad7c0a39 | |
parent | f25142c5edc579c7f7030c03c2673db238255bb2 (diff) |
G: inner attributes
-rw-r--r-- | grammar.ron | 1 | ||||
-rw-r--r-- | src/parser/event_parser/grammar/expressions.rs | 13 | ||||
-rw-r--r-- | src/syntax_kinds.rs | 4 | ||||
-rw-r--r-- | tests/data/parser/ok/0006_inner_attributes.txt | 207 |
4 files changed, 137 insertions, 88 deletions
diff --git a/grammar.ron b/grammar.ron index 0d180e19c..8418ed2a5 100644 --- a/grammar.ron +++ b/grammar.ron | |||
@@ -69,5 +69,6 @@ Grammar( | |||
69 | "FN_ITEM", | 69 | "FN_ITEM", |
70 | "ATTR", | 70 | "ATTR", |
71 | "META_ITEM", | 71 | "META_ITEM", |
72 | "LITERAL", | ||
72 | ] | 73 | ] |
73 | ) \ No newline at end of file | 74 | ) \ No newline at end of file |
diff --git a/src/parser/event_parser/grammar/expressions.rs b/src/parser/event_parser/grammar/expressions.rs index 9b43bdf2a..a6a1b302b 100644 --- a/src/parser/event_parser/grammar/expressions.rs +++ b/src/parser/event_parser/grammar/expressions.rs | |||
@@ -1,5 +1,16 @@ | |||
1 | use super::*; | 1 | use super::*; |
2 | 2 | ||
3 | pub(super) fn literal(p: &mut Parser) -> bool { | 3 | pub(super) fn literal(p: &mut Parser) -> bool { |
4 | p.eat(INT_NUMBER) || p.eat(FLOAT_NUMBER) | 4 | match p.current() { |
5 | TRUE_KW | FALSE_KW | ||
6 | | INT_NUMBER | FLOAT_NUMBER | ||
7 | | BYTE | CHAR | ||
8 | |STRING | RAW_STRING | BYTE_STRING | RAW_BYTE_STRING => { | ||
9 | node(p, LITERAL, |p| { | ||
10 | p.bump(); | ||
11 | }); | ||
12 | true | ||
13 | } | ||
14 | _ => false | ||
15 | } | ||
5 | } \ No newline at end of file | 16 | } \ No newline at end of file |
diff --git a/src/syntax_kinds.rs b/src/syntax_kinds.rs index 53ea0775a..b82a4f7f2 100644 --- a/src/syntax_kinds.rs +++ b/src/syntax_kinds.rs | |||
@@ -66,8 +66,9 @@ pub const STRUCT_FIELD: SyntaxKind = SyntaxKind(61); | |||
66 | pub const FN_ITEM: SyntaxKind = SyntaxKind(62); | 66 | pub const FN_ITEM: SyntaxKind = SyntaxKind(62); |
67 | pub const ATTR: SyntaxKind = SyntaxKind(63); | 67 | pub const ATTR: SyntaxKind = SyntaxKind(63); |
68 | pub const META_ITEM: SyntaxKind = SyntaxKind(64); | 68 | pub const META_ITEM: SyntaxKind = SyntaxKind(64); |
69 | pub const LITERAL: SyntaxKind = SyntaxKind(65); | ||
69 | 70 | ||
70 | static INFOS: [SyntaxInfo; 65] = [ | 71 | static INFOS: [SyntaxInfo; 66] = [ |
71 | SyntaxInfo { name: "USE_KW" }, | 72 | SyntaxInfo { name: "USE_KW" }, |
72 | SyntaxInfo { name: "FN_KW" }, | 73 | SyntaxInfo { name: "FN_KW" }, |
73 | SyntaxInfo { name: "STRUCT_KW" }, | 74 | SyntaxInfo { name: "STRUCT_KW" }, |
@@ -133,6 +134,7 @@ static INFOS: [SyntaxInfo; 65] = [ | |||
133 | SyntaxInfo { name: "FN_ITEM" }, | 134 | SyntaxInfo { name: "FN_ITEM" }, |
134 | SyntaxInfo { name: "ATTR" }, | 135 | SyntaxInfo { name: "ATTR" }, |
135 | SyntaxInfo { name: "META_ITEM" }, | 136 | SyntaxInfo { name: "META_ITEM" }, |
137 | SyntaxInfo { name: "LITERAL" }, | ||
136 | ]; | 138 | ]; |
137 | 139 | ||
138 | pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo { | 140 | pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo { |
diff --git a/tests/data/parser/ok/0006_inner_attributes.txt b/tests/data/parser/ok/0006_inner_attributes.txt index 5d27a015b..d826fb379 100644 --- a/tests/data/parser/ok/0006_inner_attributes.txt +++ b/tests/data/parser/ok/0006_inner_attributes.txt | |||
@@ -7,135 +7,170 @@ FILE@[0; 236) | |||
7 | IDENT@[3; 7) | 7 | IDENT@[3; 7) |
8 | R_BRACK@[7; 8) | 8 | R_BRACK@[7; 8) |
9 | WHITESPACE@[8; 9) | 9 | WHITESPACE@[8; 9) |
10 | ATTR@[9; 17) | 10 | ATTR@[9; 24) |
11 | POUND@[9; 10) | 11 | POUND@[9; 10) |
12 | EXCL@[10; 11) | 12 | EXCL@[10; 11) |
13 | L_BRACK@[11; 12) | 13 | L_BRACK@[11; 12) |
14 | META_ITEM@[12; 17) | 14 | META_ITEM@[12; 22) |
15 | IDENT@[12; 16) | 15 | IDENT@[12; 16) |
16 | L_PAREN@[16; 17) | 16 | L_PAREN@[16; 17) |
17 | err: `expected R_PAREN` | 17 | LITERAL@[17; 21) |
18 | err: `expected R_BRACK` | 18 | TRUE_KW@[17; 21) |
19 | ERROR@[17; 236) | 19 | R_PAREN@[21; 22) |
20 | err: `expected item` | ||
21 | TRUE_KW@[17; 21) | ||
22 | R_PAREN@[21; 22) | ||
23 | R_BRACK@[22; 23) | 20 | R_BRACK@[22; 23) |
24 | WHITESPACE@[23; 24) | 21 | WHITESPACE@[23; 24) |
22 | ATTR@[24; 40) | ||
25 | POUND@[24; 25) | 23 | POUND@[24; 25) |
26 | EXCL@[25; 26) | 24 | EXCL@[25; 26) |
27 | L_BRACK@[26; 27) | 25 | L_BRACK@[26; 27) |
28 | IDENT@[27; 31) | 26 | META_ITEM@[27; 38) |
29 | L_PAREN@[31; 32) | 27 | IDENT@[27; 31) |
30 | IDENT@[32; 37) | 28 | L_PAREN@[31; 32) |
31 | R_PAREN@[37; 38) | 29 | META_ITEM@[32; 37) |
30 | IDENT@[32; 37) | ||
31 | R_PAREN@[37; 38) | ||
32 | R_BRACK@[38; 39) | 32 | R_BRACK@[38; 39) |
33 | WHITESPACE@[39; 40) | 33 | WHITESPACE@[39; 40) |
34 | ATTR@[40; 117) | ||
34 | POUND@[40; 41) | 35 | POUND@[40; 41) |
35 | EXCL@[41; 42) | 36 | EXCL@[41; 42) |
36 | L_BRACK@[42; 43) | 37 | L_BRACK@[42; 43) |
37 | IDENT@[43; 47) | 38 | META_ITEM@[43; 115) |
38 | L_PAREN@[47; 48) | 39 | IDENT@[43; 47) |
39 | IDENT@[48; 53) | 40 | L_PAREN@[47; 48) |
40 | COMMA@[53; 54) | 41 | META_ITEM@[48; 53) |
41 | WHITESPACE@[54; 55) | 42 | IDENT@[48; 53) |
42 | INT_NUMBER@[55; 58) | 43 | COMMA@[53; 54) |
43 | COMMA@[58; 59) | 44 | LITERAL@[54; 58) |
44 | WHITESPACE@[59; 60) | 45 | WHITESPACE@[54; 55) |
45 | TRUE_KW@[60; 64) | 46 | INT_NUMBER@[55; 58) |
46 | COMMA@[64; 65) | 47 | COMMA@[58; 59) |
47 | WHITESPACE@[65; 66) | 48 | LITERAL@[59; 64) |
48 | STRING@[66; 72) | 49 | WHITESPACE@[59; 60) |
49 | COMMA@[72; 73) | 50 | TRUE_KW@[60; 64) |
50 | WHITESPACE@[73; 74) | 51 | COMMA@[64; 65) |
51 | IDENT@[74; 79) | 52 | LITERAL@[65; 72) |
52 | WHITESPACE@[79; 80) | 53 | WHITESPACE@[65; 66) |
53 | EQ@[80; 81) | 54 | STRING@[66; 72) |
54 | WHITESPACE@[81; 82) | 55 | COMMA@[72; 73) |
55 | INT_NUMBER@[82; 85) | 56 | META_ITEM@[73; 85) |
56 | COMMA@[85; 86) | 57 | WHITESPACE@[73; 74) |
57 | WHITESPACE@[86; 87) | 58 | IDENT@[74; 79) |
58 | IDENT@[87; 92) | 59 | WHITESPACE@[79; 80) |
59 | WHITESPACE@[92; 93) | 60 | EQ@[80; 81) |
60 | EQ@[93; 94) | 61 | LITERAL@[81; 85) |
61 | WHITESPACE@[94; 95) | 62 | WHITESPACE@[81; 82) |
62 | STRING@[95; 102) | 63 | INT_NUMBER@[82; 85) |
63 | COMMA@[102; 103) | 64 | COMMA@[85; 86) |
64 | WHITESPACE@[103; 104) | 65 | META_ITEM@[86; 102) |
65 | IDENT@[104; 109) | 66 | WHITESPACE@[86; 87) |
66 | L_PAREN@[109; 110) | 67 | IDENT@[87; 92) |
67 | INT_NUMBER@[110; 113) | 68 | WHITESPACE@[92; 93) |
68 | R_PAREN@[113; 114) | 69 | EQ@[93; 94) |
69 | R_PAREN@[114; 115) | 70 | LITERAL@[94; 102) |
71 | WHITESPACE@[94; 95) | ||
72 | STRING@[95; 102) | ||
73 | COMMA@[102; 103) | ||
74 | META_ITEM@[103; 114) | ||
75 | WHITESPACE@[103; 104) | ||
76 | IDENT@[104; 109) | ||
77 | L_PAREN@[109; 110) | ||
78 | LITERAL@[110; 113) | ||
79 | INT_NUMBER@[110; 113) | ||
80 | R_PAREN@[113; 114) | ||
81 | R_PAREN@[114; 115) | ||
70 | R_BRACK@[115; 116) | 82 | R_BRACK@[115; 116) |
71 | WHITESPACE@[116; 117) | 83 | WHITESPACE@[116; 117) |
84 | ATTR@[117; 131) | ||
72 | POUND@[117; 118) | 85 | POUND@[117; 118) |
73 | EXCL@[118; 119) | 86 | EXCL@[118; 119) |
74 | L_BRACK@[119; 120) | 87 | L_BRACK@[119; 120) |
75 | IDENT@[120; 124) | 88 | META_ITEM@[120; 129) |
76 | L_PAREN@[124; 125) | 89 | IDENT@[120; 124) |
77 | INT_NUMBER@[125; 128) | 90 | L_PAREN@[124; 125) |
78 | R_PAREN@[128; 129) | 91 | LITERAL@[125; 128) |
92 | INT_NUMBER@[125; 128) | ||
93 | R_PAREN@[128; 129) | ||
79 | R_BRACK@[129; 130) | 94 | R_BRACK@[129; 130) |
80 | WHITESPACE@[130; 131) | 95 | WHITESPACE@[130; 131) |
96 | ATTR@[131; 156) | ||
81 | POUND@[131; 132) | 97 | POUND@[131; 132) |
82 | EXCL@[132; 133) | 98 | EXCL@[132; 133) |
83 | L_BRACK@[133; 134) | 99 | L_BRACK@[133; 134) |
84 | IDENT@[134; 138) | 100 | META_ITEM@[134; 154) |
85 | L_PAREN@[138; 139) | 101 | IDENT@[134; 138) |
86 | IDENT@[139; 146) | 102 | L_PAREN@[138; 139) |
87 | WHITESPACE@[146; 147) | 103 | META_ITEM@[139; 153) |
88 | EQ@[147; 148) | 104 | IDENT@[139; 146) |
89 | WHITESPACE@[148; 149) | 105 | WHITESPACE@[146; 147) |
90 | TRUE_KW@[149; 153) | 106 | EQ@[147; 148) |
91 | R_PAREN@[153; 154) | 107 | LITERAL@[148; 153) |
108 | WHITESPACE@[148; 149) | ||
109 | TRUE_KW@[149; 153) | ||
110 | R_PAREN@[153; 154) | ||
92 | R_BRACK@[154; 155) | 111 | R_BRACK@[154; 155) |
93 | WHITESPACE@[155; 156) | 112 | WHITESPACE@[155; 156) |
113 | ATTR@[156; 174) | ||
94 | POUND@[156; 157) | 114 | POUND@[156; 157) |
95 | EXCL@[157; 158) | 115 | EXCL@[157; 158) |
96 | L_BRACK@[158; 159) | 116 | L_BRACK@[158; 159) |
97 | IDENT@[159; 166) | 117 | META_ITEM@[159; 172) |
98 | L_PAREN@[166; 167) | 118 | IDENT@[159; 166) |
99 | TRUE_KW@[167; 171) | 119 | L_PAREN@[166; 167) |
100 | R_PAREN@[171; 172) | 120 | LITERAL@[167; 171) |
121 | TRUE_KW@[167; 171) | ||
122 | R_PAREN@[171; 172) | ||
101 | R_BRACK@[172; 173) | 123 | R_BRACK@[172; 173) |
102 | WHITESPACE@[173; 174) | 124 | WHITESPACE@[173; 174) |
125 | ATTR@[174; 192) | ||
103 | POUND@[174; 175) | 126 | POUND@[174; 175) |
104 | EXCL@[175; 176) | 127 | EXCL@[175; 176) |
105 | L_BRACK@[176; 177) | 128 | L_BRACK@[176; 177) |
106 | IDENT@[177; 181) | 129 | META_ITEM@[177; 190) |
107 | L_PAREN@[181; 182) | 130 | IDENT@[177; 181) |
108 | STRING@[182; 189) | 131 | L_PAREN@[181; 182) |
109 | R_PAREN@[189; 190) | 132 | LITERAL@[182; 189) |
133 | STRING@[182; 189) | ||
134 | R_PAREN@[189; 190) | ||
110 | R_BRACK@[190; 191) | 135 | R_BRACK@[190; 191) |
111 | WHITESPACE@[191; 192) | 136 | WHITESPACE@[191; 192) |
137 | ATTR@[192; 215) | ||
112 | POUND@[192; 193) | 138 | POUND@[192; 193) |
113 | EXCL@[193; 194) | 139 | EXCL@[193; 194) |
114 | L_BRACK@[194; 195) | 140 | L_BRACK@[194; 195) |
115 | IDENT@[195; 199) | 141 | META_ITEM@[195; 213) |
116 | L_PAREN@[199; 200) | 142 | IDENT@[195; 199) |
117 | IDENT@[200; 201) | 143 | L_PAREN@[199; 200) |
118 | COMMA@[201; 202) | 144 | META_ITEM@[200; 201) |
119 | WHITESPACE@[202; 203) | 145 | IDENT@[200; 201) |
120 | IDENT@[203; 208) | 146 | COMMA@[201; 202) |
121 | WHITESPACE@[208; 209) | 147 | META_ITEM@[202; 212) |
122 | EQ@[209; 210) | 148 | WHITESPACE@[202; 203) |
123 | WHITESPACE@[210; 211) | 149 | IDENT@[203; 208) |
124 | INT_NUMBER@[211; 212) | 150 | WHITESPACE@[208; 209) |
125 | R_PAREN@[212; 213) | 151 | EQ@[209; 210) |
152 | LITERAL@[210; 212) | ||
153 | WHITESPACE@[210; 211) | ||
154 | INT_NUMBER@[211; 212) | ||
155 | R_PAREN@[212; 213) | ||
126 | R_BRACK@[213; 214) | 156 | R_BRACK@[213; 214) |
127 | WHITESPACE@[214; 215) | 157 | WHITESPACE@[214; 215) |
158 | ATTR@[215; 236) | ||
128 | POUND@[215; 216) | 159 | POUND@[215; 216) |
129 | EXCL@[216; 217) | 160 | EXCL@[216; 217) |
130 | L_BRACK@[217; 218) | 161 | L_BRACK@[217; 218) |
131 | IDENT@[218; 222) | 162 | META_ITEM@[218; 235) |
132 | L_PAREN@[222; 223) | 163 | IDENT@[218; 222) |
133 | IDENT@[223; 224) | 164 | L_PAREN@[222; 223) |
134 | COMMA@[224; 225) | 165 | META_ITEM@[223; 224) |
135 | WHITESPACE@[225; 226) | 166 | IDENT@[223; 224) |
136 | IDENT@[226; 231) | 167 | COMMA@[224; 225) |
137 | L_PAREN@[231; 232) | 168 | META_ITEM@[225; 234) |
138 | INT_NUMBER@[232; 233) | 169 | WHITESPACE@[225; 226) |
139 | R_PAREN@[233; 234) | 170 | IDENT@[226; 231) |
140 | R_PAREN@[234; 235) | 171 | L_PAREN@[231; 232) |
172 | LITERAL@[232; 233) | ||
173 | INT_NUMBER@[232; 233) | ||
174 | R_PAREN@[233; 234) | ||
175 | R_PAREN@[234; 235) | ||
141 | R_BRACK@[235; 236) | 176 | R_BRACK@[235; 236) |