Commit f868dc4
committed
Stop emitting K".." and K"..." in lexer
Unfortunately, the sequences `..` and `...` do not always refer
to the `..` operator or the `...` syntax. There are two and a half cases
where they don't:
1. After `@` in macrocall, where they are both regular identifiers
2. In `import ...A` where the dots specify the level
3. `:(...)` treats `...` as quoted identifier
Case 1 was handled in a previous commit by lexing these as identifiers
after `2`.
However, as a result of case 2, it is problematic to tokenize these dots
together; we essentially have to untokenize them in the import parser. It
is also infeasible to change the lexer to have speical context-sensitive
lexing in `import`, because there could be arbitrary interpolations,
`@eval import A, $(f(x..y)), ..b`, so deciding whether a particular
`..` after import refers to the operator or a level specifier requires
the parser.
Currently the parser handles this by splitting the obtained tokens
again in the import parser, but this is undesirable, because it
invalidates the invariant that the tokens produced by the lexer
correspond to the non-terminals of the final parse tree.
This PR attempts to address this by only ever having the lexer emit
`K"."` and having the parser decide which case it refers to.
The new non-terminal `K"dots"` handles the identifier cases (ordinary
`..` and quoted `:(...)` ). K"..." is now exclusively used for
splat/slurp, and is no longer used in its non-terminal form for
case 3.1 parent 63bee39 commit f868dc4
File tree
8 files changed
+98
-67
lines changed- src
- integration
- julia
- test
8 files changed
+98
-67
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
338 | 338 | | |
339 | 339 | | |
340 | 340 | | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
341 | 344 | | |
342 | 345 | | |
343 | 346 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
137 | 137 | | |
138 | 138 | | |
139 | 139 | | |
140 | | - | |
141 | | - | |
| 140 | + | |
| 141 | + | |
142 | 142 | | |
143 | 143 | | |
144 | 144 | | |
| |||
301 | 301 | | |
302 | 302 | | |
303 | 303 | | |
304 | | - | |
| 304 | + | |
305 | 305 | | |
306 | 306 | | |
307 | 307 | | |
308 | 308 | | |
309 | 309 | | |
310 | | - | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
311 | 316 | | |
312 | 317 | | |
313 | 318 | | |
| |||
316 | 321 | | |
317 | 322 | | |
318 | 323 | | |
319 | | - | |
| 324 | + | |
320 | 325 | | |
321 | | - | |
322 | | - | |
323 | | - | |
324 | | - | |
325 | | - | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
326 | 339 | | |
327 | 340 | | |
328 | 341 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
278 | 278 | | |
279 | 279 | | |
280 | 280 | | |
281 | | - | |
282 | | - | |
283 | 281 | | |
284 | 282 | | |
285 | 283 | | |
| |||
774 | 772 | | |
775 | 773 | | |
776 | 774 | | |
777 | | - | |
778 | 775 | | |
779 | 776 | | |
780 | 777 | | |
| |||
1033 | 1030 | | |
1034 | 1031 | | |
1035 | 1032 | | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
1036 | 1037 | | |
1037 | 1038 | | |
1038 | 1039 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
371 | 371 | | |
372 | 372 | | |
373 | 373 | | |
374 | | - | |
| 374 | + | |
375 | 375 | | |
376 | 376 | | |
377 | 377 | | |
| |||
598 | 598 | | |
599 | 599 | | |
600 | 600 | | |
601 | | - | |
| 601 | + | |
602 | 602 | | |
603 | 603 | | |
604 | 604 | | |
| |||
617 | 617 | | |
618 | 618 | | |
619 | 619 | | |
620 | | - | |
| 620 | + | |
621 | 621 | | |
622 | 622 | | |
623 | 623 | | |
| |||
743 | 743 | | |
744 | 744 | | |
745 | 745 | | |
746 | | - | |
| 746 | + | |
747 | 747 | | |
748 | 748 | | |
749 | 749 | | |
| |||
771 | 771 | | |
772 | 772 | | |
773 | 773 | | |
774 | | - | |
| 774 | + | |
775 | 775 | | |
776 | 776 | | |
777 | 777 | | |
| |||
819 | 819 | | |
820 | 820 | | |
821 | 821 | | |
822 | | - | |
| 822 | + | |
823 | 823 | | |
824 | 824 | | |
825 | 825 | | |
| |||
873 | 873 | | |
874 | 874 | | |
875 | 875 | | |
| 876 | + | |
876 | 877 | | |
877 | 878 | | |
878 | | - | |
879 | | - | |
| 879 | + | |
| 880 | + | |
880 | 881 | | |
881 | 882 | | |
882 | | - | |
| 883 | + | |
883 | 884 | | |
884 | | - | |
| 885 | + | |
885 | 886 | | |
886 | 887 | | |
887 | 888 | | |
| |||
948 | 949 | | |
949 | 950 | | |
950 | 951 | | |
951 | | - | |
| 952 | + | |
952 | 953 | | |
| 954 | + | |
| 955 | + | |
953 | 956 | | |
954 | 957 | | |
955 | 958 | | |
| |||
965 | 968 | | |
966 | 969 | | |
967 | 970 | | |
968 | | - | |
| 971 | + | |
969 | 972 | | |
970 | 973 | | |
971 | 974 | | |
| |||
1006 | 1009 | | |
1007 | 1010 | | |
1008 | 1011 | | |
1009 | | - | |
| 1012 | + | |
1010 | 1013 | | |
1011 | 1014 | | |
1012 | 1015 | | |
| |||
1258 | 1261 | | |
1259 | 1262 | | |
1260 | 1263 | | |
1261 | | - | |
| 1264 | + | |
1262 | 1265 | | |
1263 | 1266 | | |
1264 | 1267 | | |
| |||
1352 | 1355 | | |
1353 | 1356 | | |
1354 | 1357 | | |
1355 | | - | |
| 1358 | + | |
1356 | 1359 | | |
1357 | 1360 | | |
1358 | 1361 | | |
1359 | 1362 | | |
1360 | | - | |
| 1363 | + | |
1361 | 1364 | | |
1362 | 1365 | | |
1363 | 1366 | | |
| |||
1388 | 1391 | | |
1389 | 1392 | | |
1390 | 1393 | | |
1391 | | - | |
| 1394 | + | |
1392 | 1395 | | |
1393 | 1396 | | |
1394 | 1397 | | |
| |||
2476 | 2479 | | |
2477 | 2480 | | |
2478 | 2481 | | |
2479 | | - | |
| 2482 | + | |
2480 | 2483 | | |
2481 | 2484 | | |
2482 | 2485 | | |
2483 | | - | |
| 2486 | + | |
2484 | 2487 | | |
2485 | 2488 | | |
2486 | 2489 | | |
| |||
2589 | 2592 | | |
2590 | 2593 | | |
2591 | 2594 | | |
2592 | | - | |
2593 | | - | |
2594 | | - | |
2595 | | - | |
2596 | 2595 | | |
2597 | 2596 | | |
2598 | 2597 | | |
| |||
2611 | 2610 | | |
2612 | 2611 | | |
2613 | 2612 | | |
| 2613 | + | |
| 2614 | + | |
| 2615 | + | |
| 2616 | + | |
| 2617 | + | |
| 2618 | + | |
| 2619 | + | |
| 2620 | + | |
| 2621 | + | |
| 2622 | + | |
| 2623 | + | |
2614 | 2624 | | |
2615 | 2625 | | |
2616 | 2626 | | |
| |||
2623 | 2633 | | |
2624 | 2634 | | |
2625 | 2635 | | |
2626 | | - | |
2627 | | - | |
2628 | | - | |
2629 | | - | |
2630 | 2636 | | |
2631 | 2637 | | |
2632 | 2638 | | |
| |||
3496 | 3502 | | |
3497 | 3503 | | |
3498 | 3504 | | |
| 3505 | + | |
| 3506 | + | |
| 3507 | + | |
| 3508 | + | |
| 3509 | + | |
| 3510 | + | |
| 3511 | + | |
| 3512 | + | |
| 3513 | + | |
| 3514 | + | |
3499 | 3515 | | |
3500 | 3516 | | |
3501 | 3517 | | |
| |||
3583 | 3599 | | |
3584 | 3600 | | |
3585 | 3601 | | |
3586 | | - | |
| 3602 | + | |
3587 | 3603 | | |
3588 | | - | |
| 3604 | + | |
3589 | 3605 | | |
3590 | 3606 | | |
3591 | 3607 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
153 | 153 | | |
154 | 154 | | |
155 | 155 | | |
156 | | - | |
157 | 156 | | |
158 | 157 | | |
159 | 158 | | |
| |||
165 | 164 | | |
166 | 165 | | |
167 | 166 | | |
168 | | - | |
169 | 167 | | |
170 | 168 | | |
171 | 169 | | |
| |||
987 | 985 | | |
988 | 986 | | |
989 | 987 | | |
990 | | - | |
| 988 | + | |
991 | 989 | | |
992 | 990 | | |
993 | 991 | | |
| |||
1166 | 1164 | | |
1167 | 1165 | | |
1168 | 1166 | | |
1169 | | - | |
| 1167 | + | |
1170 | 1168 | | |
1171 | | - | |
1172 | | - | |
1173 | | - | |
1174 | | - | |
| 1169 | + | |
1175 | 1170 | | |
1176 | 1171 | | |
1177 | | - | |
1178 | | - | |
1179 | | - | |
1180 | 1172 | | |
1181 | 1173 | | |
1182 | | - | |
| 1174 | + | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
1183 | 1178 | | |
1184 | 1179 | | |
1185 | | - | |
1186 | 1180 | | |
1187 | 1181 | | |
1188 | 1182 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
| 18 | + | |
17 | 19 | | |
18 | 20 | | |
19 | 21 | | |
| |||
0 commit comments