diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/parser/event_parser/grammar/items.rs | 2 | ||||
-rw-r--r-- | src/parser/event_parser/grammar/mod.rs | 20 | ||||
-rw-r--r-- | src/syntax_kinds.rs | 141 |
3 files changed, 96 insertions, 67 deletions
diff --git a/src/parser/event_parser/grammar/items.rs b/src/parser/event_parser/grammar/items.rs index 725f04d1e..f7310c09a 100644 --- a/src/parser/event_parser/grammar/items.rs +++ b/src/parser/event_parser/grammar/items.rs | |||
@@ -12,7 +12,7 @@ pub(super) fn mod_contents(p: &mut Parser) { | |||
12 | 12 | ||
13 | fn item_first(p: &Parser) -> bool { | 13 | fn item_first(p: &Parser) -> bool { |
14 | match p.current() { | 14 | match p.current() { |
15 | STRUCT_KW | FN_KW | EXTERN_KW | MOD_KW | USE_KW | POUND => true, | 15 | STRUCT_KW | FN_KW | EXTERN_KW | MOD_KW | USE_KW | POUND | PUB_KW => true, |
16 | _ => false, | 16 | _ => false, |
17 | } | 17 | } |
18 | } | 18 | } |
diff --git a/src/parser/event_parser/grammar/mod.rs b/src/parser/event_parser/grammar/mod.rs index 3c4b223a9..1c57e0cb4 100644 --- a/src/parser/event_parser/grammar/mod.rs +++ b/src/parser/event_parser/grammar/mod.rs | |||
@@ -15,7 +15,25 @@ pub(crate) fn file(p: &mut Parser) { | |||
15 | }) | 15 | }) |
16 | } | 16 | } |
17 | 17 | ||
18 | fn visibility(_: &mut Parser) { | 18 | fn visibility(p: &mut Parser) { |
19 | node_if(p, PUB_KW, VISIBILITY, |p| { | ||
20 | if p.current() != L_PAREN { | ||
21 | return | ||
22 | } | ||
23 | match p.raw_lookahead(1) { | ||
24 | CRATE_KW | SELF_KW | SUPER_KW => { | ||
25 | p.bump(); | ||
26 | p.bump(); | ||
27 | } | ||
28 | IN_KW => { | ||
29 | p.bump(); | ||
30 | p.bump(); | ||
31 | paths::use_path(p); | ||
32 | } | ||
33 | _ => return | ||
34 | } | ||
35 | p.expect(R_PAREN); | ||
36 | }); | ||
19 | } | 37 | } |
20 | 38 | ||
21 | fn alias(p: &mut Parser) -> bool { | 39 | fn alias(p: &mut Parser) -> bool { |
diff --git a/src/syntax_kinds.rs b/src/syntax_kinds.rs index a86f203d7..84f1072b7 100644 --- a/src/syntax_kinds.rs +++ b/src/syntax_kinds.rs | |||
@@ -13,72 +13,76 @@ pub const AS_KW: SyntaxKind = SyntaxKind(8); | |||
13 | pub const EXTERN_KW: SyntaxKind = SyntaxKind(9); | 13 | pub const EXTERN_KW: SyntaxKind = SyntaxKind(9); |
14 | pub const CRATE_KW: SyntaxKind = SyntaxKind(10); | 14 | pub const CRATE_KW: SyntaxKind = SyntaxKind(10); |
15 | pub const MOD_KW: SyntaxKind = SyntaxKind(11); | 15 | pub const MOD_KW: SyntaxKind = SyntaxKind(11); |
16 | pub const ERROR: SyntaxKind = SyntaxKind(12); | 16 | pub const PUB_KW: SyntaxKind = SyntaxKind(12); |
17 | pub const IDENT: SyntaxKind = SyntaxKind(13); | 17 | pub const SELF_KW: SyntaxKind = SyntaxKind(13); |
18 | pub const UNDERSCORE: SyntaxKind = SyntaxKind(14); | 18 | pub const SUPER_KW: SyntaxKind = SyntaxKind(14); |
19 | pub const WHITESPACE: SyntaxKind = SyntaxKind(15); | 19 | pub const ERROR: SyntaxKind = SyntaxKind(15); |
20 | pub const INT_NUMBER: SyntaxKind = SyntaxKind(16); | 20 | pub const IDENT: SyntaxKind = SyntaxKind(16); |
21 | pub const FLOAT_NUMBER: SyntaxKind = SyntaxKind(17); | 21 | pub const UNDERSCORE: SyntaxKind = SyntaxKind(17); |
22 | pub const SEMI: SyntaxKind = SyntaxKind(18); | 22 | pub const WHITESPACE: SyntaxKind = SyntaxKind(18); |
23 | pub const COMMA: SyntaxKind = SyntaxKind(19); | 23 | pub const INT_NUMBER: SyntaxKind = SyntaxKind(19); |
24 | pub const DOT: SyntaxKind = SyntaxKind(20); | 24 | pub const FLOAT_NUMBER: SyntaxKind = SyntaxKind(20); |
25 | pub const DOTDOT: SyntaxKind = SyntaxKind(21); | 25 | pub const SEMI: SyntaxKind = SyntaxKind(21); |
26 | pub const DOTDOTDOT: SyntaxKind = SyntaxKind(22); | 26 | pub const COMMA: SyntaxKind = SyntaxKind(22); |
27 | pub const DOTDOTEQ: SyntaxKind = SyntaxKind(23); | 27 | pub const DOT: SyntaxKind = SyntaxKind(23); |
28 | pub const L_PAREN: SyntaxKind = SyntaxKind(24); | 28 | pub const DOTDOT: SyntaxKind = SyntaxKind(24); |
29 | pub const R_PAREN: SyntaxKind = SyntaxKind(25); | 29 | pub const DOTDOTDOT: SyntaxKind = SyntaxKind(25); |
30 | pub const L_CURLY: SyntaxKind = SyntaxKind(26); | 30 | pub const DOTDOTEQ: SyntaxKind = SyntaxKind(26); |
31 | pub const R_CURLY: SyntaxKind = SyntaxKind(27); | 31 | pub const L_PAREN: SyntaxKind = SyntaxKind(27); |
32 | pub const L_BRACK: SyntaxKind = SyntaxKind(28); | 32 | pub const R_PAREN: SyntaxKind = SyntaxKind(28); |
33 | pub const R_BRACK: SyntaxKind = SyntaxKind(29); | 33 | pub const L_CURLY: SyntaxKind = SyntaxKind(29); |
34 | pub const L_ANGLE: SyntaxKind = SyntaxKind(30); | 34 | pub const R_CURLY: SyntaxKind = SyntaxKind(30); |
35 | pub const R_ANGLE: SyntaxKind = SyntaxKind(31); | 35 | pub const L_BRACK: SyntaxKind = SyntaxKind(31); |
36 | pub const AT: SyntaxKind = SyntaxKind(32); | 36 | pub const R_BRACK: SyntaxKind = SyntaxKind(32); |
37 | pub const POUND: SyntaxKind = SyntaxKind(33); | 37 | pub const L_ANGLE: SyntaxKind = SyntaxKind(33); |
38 | pub const TILDE: SyntaxKind = SyntaxKind(34); | 38 | pub const R_ANGLE: SyntaxKind = SyntaxKind(34); |
39 | pub const QUESTION: SyntaxKind = SyntaxKind(35); | 39 | pub const AT: SyntaxKind = SyntaxKind(35); |
40 | pub const COLON: SyntaxKind = SyntaxKind(36); | 40 | pub const POUND: SyntaxKind = SyntaxKind(36); |
41 | pub const COLONCOLON: SyntaxKind = SyntaxKind(37); | 41 | pub const TILDE: SyntaxKind = SyntaxKind(37); |
42 | pub const DOLLAR: SyntaxKind = SyntaxKind(38); | 42 | pub const QUESTION: SyntaxKind = SyntaxKind(38); |
43 | pub const EQ: SyntaxKind = SyntaxKind(39); | 43 | pub const COLON: SyntaxKind = SyntaxKind(39); |
44 | pub const EQEQ: SyntaxKind = SyntaxKind(40); | 44 | pub const COLONCOLON: SyntaxKind = SyntaxKind(40); |
45 | pub const FAT_ARROW: SyntaxKind = SyntaxKind(41); | 45 | pub const DOLLAR: SyntaxKind = SyntaxKind(41); |
46 | pub const NEQ: SyntaxKind = SyntaxKind(42); | 46 | pub const EQ: SyntaxKind = SyntaxKind(42); |
47 | pub const EXCL: SyntaxKind = SyntaxKind(43); | 47 | pub const EQEQ: SyntaxKind = SyntaxKind(43); |
48 | pub const LIFETIME: SyntaxKind = SyntaxKind(44); | 48 | pub const FAT_ARROW: SyntaxKind = SyntaxKind(44); |
49 | pub const CHAR: SyntaxKind = SyntaxKind(45); | 49 | pub const NEQ: SyntaxKind = SyntaxKind(45); |
50 | pub const BYTE: SyntaxKind = SyntaxKind(46); | 50 | pub const EXCL: SyntaxKind = SyntaxKind(46); |
51 | pub const STRING: SyntaxKind = SyntaxKind(47); | 51 | pub const LIFETIME: SyntaxKind = SyntaxKind(47); |
52 | pub const RAW_STRING: SyntaxKind = SyntaxKind(48); | 52 | pub const CHAR: SyntaxKind = SyntaxKind(48); |
53 | pub const BYTE_STRING: SyntaxKind = SyntaxKind(49); | 53 | pub const BYTE: SyntaxKind = SyntaxKind(49); |
54 | pub const RAW_BYTE_STRING: SyntaxKind = SyntaxKind(50); | 54 | pub const STRING: SyntaxKind = SyntaxKind(50); |
55 | pub const PLUS: SyntaxKind = SyntaxKind(51); | 55 | pub const RAW_STRING: SyntaxKind = SyntaxKind(51); |
56 | pub const MINUS: SyntaxKind = SyntaxKind(52); | 56 | pub const BYTE_STRING: SyntaxKind = SyntaxKind(52); |
57 | pub const STAR: SyntaxKind = SyntaxKind(53); | 57 | pub const RAW_BYTE_STRING: SyntaxKind = SyntaxKind(53); |
58 | pub const SLASH: SyntaxKind = SyntaxKind(54); | 58 | pub const PLUS: SyntaxKind = SyntaxKind(54); |
59 | pub const CARET: SyntaxKind = SyntaxKind(55); | 59 | pub const MINUS: SyntaxKind = SyntaxKind(55); |
60 | pub const PERCENT: SyntaxKind = SyntaxKind(56); | 60 | pub const STAR: SyntaxKind = SyntaxKind(56); |
61 | pub const AMPERSAND: SyntaxKind = SyntaxKind(57); | 61 | pub const SLASH: SyntaxKind = SyntaxKind(57); |
62 | pub const PIPE: SyntaxKind = SyntaxKind(58); | 62 | pub const CARET: SyntaxKind = SyntaxKind(58); |
63 | pub const THIN_ARROW: SyntaxKind = SyntaxKind(59); | 63 | pub const PERCENT: SyntaxKind = SyntaxKind(59); |
64 | pub const COMMENT: SyntaxKind = SyntaxKind(60); | 64 | pub const AMPERSAND: SyntaxKind = SyntaxKind(60); |
65 | pub const DOC_COMMENT: SyntaxKind = SyntaxKind(61); | 65 | pub const PIPE: SyntaxKind = SyntaxKind(61); |
66 | pub const SHEBANG: SyntaxKind = SyntaxKind(62); | 66 | pub const THIN_ARROW: SyntaxKind = SyntaxKind(62); |
67 | pub const FILE: SyntaxKind = SyntaxKind(63); | 67 | pub const COMMENT: SyntaxKind = SyntaxKind(63); |
68 | pub const STRUCT_ITEM: SyntaxKind = SyntaxKind(64); | 68 | pub const DOC_COMMENT: SyntaxKind = SyntaxKind(64); |
69 | pub const STRUCT_FIELD: SyntaxKind = SyntaxKind(65); | 69 | pub const SHEBANG: SyntaxKind = SyntaxKind(65); |
70 | pub const FN_ITEM: SyntaxKind = SyntaxKind(66); | 70 | pub const FILE: SyntaxKind = SyntaxKind(66); |
71 | pub const EXTERN_CRATE_ITEM: SyntaxKind = SyntaxKind(67); | 71 | pub const STRUCT_ITEM: SyntaxKind = SyntaxKind(67); |
72 | pub const ATTR: SyntaxKind = SyntaxKind(68); | 72 | pub const STRUCT_FIELD: SyntaxKind = SyntaxKind(68); |
73 | pub const META_ITEM: SyntaxKind = SyntaxKind(69); | 73 | pub const FN_ITEM: SyntaxKind = SyntaxKind(69); |
74 | pub const MOD_ITEM: SyntaxKind = SyntaxKind(70); | 74 | pub const EXTERN_CRATE_ITEM: SyntaxKind = SyntaxKind(70); |
75 | pub const USE_ITEM: SyntaxKind = SyntaxKind(71); | 75 | pub const ATTR: SyntaxKind = SyntaxKind(71); |
76 | pub const PATH: SyntaxKind = SyntaxKind(72); | 76 | pub const META_ITEM: SyntaxKind = SyntaxKind(72); |
77 | pub const PATH_SEGMENT: SyntaxKind = SyntaxKind(73); | 77 | pub const MOD_ITEM: SyntaxKind = SyntaxKind(73); |
78 | pub const LITERAL: SyntaxKind = SyntaxKind(74); | 78 | pub const USE_ITEM: SyntaxKind = SyntaxKind(74); |
79 | pub const ALIAS: SyntaxKind = SyntaxKind(75); | 79 | pub const PATH: SyntaxKind = SyntaxKind(75); |
80 | pub const PATH_SEGMENT: SyntaxKind = SyntaxKind(76); | ||
81 | pub const LITERAL: SyntaxKind = SyntaxKind(77); | ||
82 | pub const ALIAS: SyntaxKind = SyntaxKind(78); | ||
83 | pub const VISIBILITY: SyntaxKind = SyntaxKind(79); | ||
80 | 84 | ||
81 | static INFOS: [SyntaxInfo; 76] = [ | 85 | static INFOS: [SyntaxInfo; 80] = [ |
82 | SyntaxInfo { name: "USE_KW" }, | 86 | SyntaxInfo { name: "USE_KW" }, |
83 | SyntaxInfo { name: "FN_KW" }, | 87 | SyntaxInfo { name: "FN_KW" }, |
84 | SyntaxInfo { name: "STRUCT_KW" }, | 88 | SyntaxInfo { name: "STRUCT_KW" }, |
@@ -91,6 +95,9 @@ static INFOS: [SyntaxInfo; 76] = [ | |||
91 | SyntaxInfo { name: "EXTERN_KW" }, | 95 | SyntaxInfo { name: "EXTERN_KW" }, |
92 | SyntaxInfo { name: "CRATE_KW" }, | 96 | SyntaxInfo { name: "CRATE_KW" }, |
93 | SyntaxInfo { name: "MOD_KW" }, | 97 | SyntaxInfo { name: "MOD_KW" }, |
98 | SyntaxInfo { name: "PUB_KW" }, | ||
99 | SyntaxInfo { name: "SELF_KW" }, | ||
100 | SyntaxInfo { name: "SUPER_KW" }, | ||
94 | SyntaxInfo { name: "ERROR" }, | 101 | SyntaxInfo { name: "ERROR" }, |
95 | SyntaxInfo { name: "IDENT" }, | 102 | SyntaxInfo { name: "IDENT" }, |
96 | SyntaxInfo { name: "UNDERSCORE" }, | 103 | SyntaxInfo { name: "UNDERSCORE" }, |
@@ -155,6 +162,7 @@ static INFOS: [SyntaxInfo; 76] = [ | |||
155 | SyntaxInfo { name: "PATH_SEGMENT" }, | 162 | SyntaxInfo { name: "PATH_SEGMENT" }, |
156 | SyntaxInfo { name: "LITERAL" }, | 163 | SyntaxInfo { name: "LITERAL" }, |
157 | SyntaxInfo { name: "ALIAS" }, | 164 | SyntaxInfo { name: "ALIAS" }, |
165 | SyntaxInfo { name: "VISIBILITY" }, | ||
158 | ]; | 166 | ]; |
159 | 167 | ||
160 | pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo { | 168 | pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo { |
@@ -175,6 +183,9 @@ pub(crate) fn ident_to_keyword(ident: &str) -> Option<SyntaxKind> { | |||
175 | "extern" => Some(EXTERN_KW), | 183 | "extern" => Some(EXTERN_KW), |
176 | "crate" => Some(CRATE_KW), | 184 | "crate" => Some(CRATE_KW), |
177 | "mod" => Some(MOD_KW), | 185 | "mod" => Some(MOD_KW), |
186 | "pub" => Some(PUB_KW), | ||
187 | "self" => Some(SELF_KW), | ||
188 | "super" => Some(SUPER_KW), | ||
178 | _ => None, | 189 | _ => None, |
179 | } | 190 | } |
180 | } | 191 | } |