Skip to content

Commit 746d74c

Browse files
authored
organization: Split into logically distinct subpieces (#563)
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.
1 parent ad2047f commit 746d74c

16 files changed

+330
-328
lines changed

src/JuliaSyntax.jl

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -79,29 +79,30 @@ export SyntaxNode
7979
# Helper utilities
8080
include("utils.jl")
8181

82-
include("kinds.jl")
82+
include("julia/kinds.jl")
8383

8484
# Lexing uses a significantly modified version of Tokenize.jl
85-
include("tokenize.jl")
85+
include("julia/tokenize.jl")
8686

8787
# Source and diagnostics
88-
include("source_files.jl")
89-
include("diagnostics.jl")
88+
include("core/source_files.jl")
89+
include("core/diagnostics.jl")
9090

9191
# Parsing
92-
include("parse_stream.jl")
93-
include("parser.jl")
94-
include("parser_api.jl")
95-
include("literal_parsing.jl")
92+
include("core/parse_stream.jl")
93+
include("core/tree_cursors.jl")
94+
include("julia/julia_parse_stream.jl")
95+
include("julia/parser.jl")
96+
include("julia/parser_api.jl")
97+
include("julia/literal_parsing.jl")
9698

9799
# Tree data structures
98-
include("tree_cursors.jl")
99-
include("green_node.jl")
100-
include("syntax_tree.jl")
101-
include("expr.jl")
100+
include("porcelain/green_node.jl")
101+
include("porcelain/syntax_tree.jl")
102+
include("integration/expr.jl")
102103

103104
# Hooks to integrate the parser with Base
104-
include("hooks.jl")
105+
include("integration/hooks.jl")
105106
include("precompile.jl")
106107

107108
end
File renamed without changes.

0 commit comments

Comments
 (0)