How jurgenei/ast-classes-core works
This is a Java library that converts an ANTLR parse tree—or an already normalized grammar model—into an AST class model and can render that model as deterministic S-expression text. The main workflow is parse-tree mapping, grammar modeling, AST derivation, then optional serialization. The README documents the mapping interface but notes that a concrete ANTLR v4 mapper is not yet implemented; the graph therefore shows the interface without inventing an implementation. The serialization step is separate from the pipeline’s returned model.
Main entry points: AstClassesPipeline.java Pipeline API · AstClassDeriver.java Class deriver · GrammarModel.java Grammar model · ParseTreeToGrammarModelMapper.java Parse-tree mapper
Components 11
Grammar Input
- Pipeline API
src/main/java/name/jurgenei/ast/core/AstClassesPipeline.java - Parse-tree mapper
src/main/java/name/jurgenei/ast/core/mapper/ParseTreeToGrammarModelMapper.java - Grammar model
src/main/java/name/jurgenei/ast/core/model/GrammarModel.java - Grammar nodes
src/main/java/name/jurgenei/ast/core/model/GrammarNode.java
AST Derivation
- Class deriver
src/main/java/name/jurgenei/ast/core/AstClassDeriver.java - Cardinality rules
src/main/java/name/jurgenei/ast/core/model/Cardinality.java - AST model
src/main/java/name/jurgenei/ast/core/model/AstModel.java
Model Output
- S-expression writer
src/main/java/name/jurgenei/ast/core/AstSexprWriter.java - S-expression text
Other components
- Library caller
- ANTLR parse tree
Connections 15
- Library caller → Pipeline API: calls
- Library caller → ANTLR parse tree: provides
- Pipeline API → Parse-tree mapper: invokes map
- Parse-tree mapper → ANTLR parse tree: maps
- Parse-tree mapper → Grammar model: produces
- Pipeline API → Grammar model: accepts directly
- Grammar model → Grammar nodes: contains
- Pipeline API → Class deriver: invokes derive
- Class deriver → Grammar model: reads
- Class deriver → Cardinality rules: combines
- Class deriver → AST model: produces
- Pipeline API → AST model: returns
- Library caller → S-expression writer: calls
- S-expression writer → AST model: reads
- S-expression writer → S-expression text: renders