Skip to content

Conversation

Keno
Copy link
Member

@Keno Keno commented Jun 9, 2025

A I mentioned in #560, and as contemplated in #536, I'd like to try re-using
JuliaParser infrastructure to replace parsers I've written for some other languages.
This takes the first step to do so by moving various files into directories depending
on whether they are language-dependent or not. Right now there is still some coupling
and of course, there are no actual abstractions between these pieces. The idea would
be to intrduce those over time. For now, if we put in this refactoring, the way to
use this would be to copy the appropriate pieces (at least core/) into your
downstream parser and then rewrite it to those APIs. I'm planning to do that with
a parser or two to see if I hit any big API issues and see what it would take
to actually make the re-use happen.

@Keno Keno requested review from KristofferC and c42f June 9, 2025 23:37
@KristofferC
Copy link
Member

I think this is a good start. The ultimate goal should probably be a total split the package into something like Syntax.jl + JuliaSyntax.jl where Syntax.jl has the core stuff and JuliaSyntax.jl implements the julia tokenizer + parser on top of that.

@Keno Keno force-pushed the kf/cursorerrortraverse branch 2 times, most recently from c339f14 to 962b50d Compare June 12, 2025 02:45
Base automatically changed from kf/cursorerrortraverse to main June 12, 2025 03:14
A I mentioned in #560, and as contemplated in #536, I'd like to try re-using
JuliaParser infrastructure to replace parsers I've written for some other languages.
This takes the first step to do so by moving various files into directories depending
on whether they are language-dependent or not. Right now there is still some coupling
and of course, there are no actual abstractions between these pieces. The idea would
be to intrduce those over time. For now, if we put in this refactoring, the way to
use this would be to copy the appropriate pieces (at least `core/`) into your
downstream parser and then rewrite it to those APIs. I'm planning to do that with
a parser or two to see if I hit any big API issues and see what it would take
to actually make the re-use happen.

- core: Core functionality for parsing
- julia: Core functionality for parsing *julia*
- integration: Integration code to use as the parser for base
- porcelain: Other syntax tree types for external users of the package

The `integration` and `porcelain` components should not depend on each
other. Otherwise it's layered as expected. This is just the reorganization.
Additional work is required to actually spearate the abstractions.
@Keno Keno marked this pull request as ready for review June 13, 2025 01:12
@Keno Keno merged commit 746d74c into main Jun 13, 2025
36 checks passed
@Keno Keno deleted the kf/reorganize branch June 13, 2025 01:12
@topolarity topolarity changed the title RFC/WIP: Reorganize into largely self-container pieces RFC/WIP: Reorganize into largely self-contained pieces Jun 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants