0.0.2: smaller parser but parses more
This cycle was rather big, a lot of changes has been made
to both reduces the parser size and improve parsing correctness.
Let's start off with the parse statistics against the Nim compiler
source code + nimble:
Total parses: 3220;
successful parses: 3147;
failed parses: 73;
success percentage: 97.73%
The parser size is now 118MiB, which unfortunately is still too big
for GitHub, but we are getting there.
Below are the changes in detail:
Breaking changes
- Symbolic operators are exposed as syntactic nodes (#12)
- Call arguments are now stowed in an
argument_list
node (#15) - Escape sequences for strings and char now have their own nodes (#13)
Parsing improvements
- Dot generic calls (eg.
x.foo[:T]
) are now fully supported - Function with an empty body and only comments can now be parsed
- Complex expressions are now supported for enum values
when
in object declarations can now have fields declared on the same line- Tuple-with-var return values are now correctly parsed
- Cast expression now supports colon expressions
- Block comment contents no longer erroneously set the parsing indent
Regressions
- Unicode operators support has been disabled to prevent parser size
from growing uncontrollably - Some parsing has been relaxed and "invalid" structures might be parsed
successfully. Seecorpus/deviations.txt
for known deviations from
the Nim compiler.