From 128f40bcf46a96834e09a726e33b829e74c86323 Mon Sep 17 00:00:00 2001 From: Alex Zenla Date: Mon, 4 Sep 2023 01:56:24 -0700 Subject: [PATCH] Split out all code into modules. --- README.md | 2 +- common/build.gradle.kts | 3 +++ .../gay/pizza/pork/common}/IndentPrinter.kt | 2 +- .../main/kotlin/gay/pizza/pork/PorkLanguage.kt | 3 --- .../src/main/kotlin/gay/pizza/pork/eval/None.kt | 3 --- evaluator/build.gradle.kts | 10 ++++++++++ .../gay/pizza/pork/evaluator}/Arguments.kt | 2 +- .../gay/pizza/pork/evaluator}/BlockFunction.kt | 2 +- .../pizza/pork/evaluator}/CallableFunction.kt | 2 +- .../pizza/pork/evaluator}/EvaluationContext.kt | 2 +- .../evaluator}/EvaluationContextProvider.kt | 2 +- .../pizza/pork/evaluator}/EvaluationVisitor.kt | 2 +- .../gay/pizza/pork/evaluator}/Evaluator.kt | 2 +- .../kotlin/gay/pizza/pork/evaluator/None.kt | 3 +++ .../kotlin/gay/pizza/pork/evaluator}/Scope.kt | 2 +- frontend/build.gradle.kts | 10 ++++++++++ .../gay/pizza/pork/frontend/ContentSource.kt | 2 +- .../gay/pizza/pork/frontend/FsContentSource.kt | 5 ++--- .../kotlin/gay/pizza/pork/frontend/World.kt | 9 ++++----- parser/build.gradle.kts | 9 +++++++++ .../pizza/pork/parser}/AnsiHighlightScheme.kt | 17 +++++++++++------ .../kotlin/gay/pizza/pork/parser}/CharSource.kt | 3 ++- .../pork/parser}/DiscardNodeAttribution.kt | 2 +- .../kotlin/gay/pizza/pork/parser}/Highlight.kt | 2 +- .../gay/pizza/pork/parser}/HighlightScheme.kt | 2 +- .../gay/pizza/pork/parser}/Highlighter.kt | 2 +- .../gay/pizza/pork/parser}/NodeAttribution.kt | 2 +- .../kotlin/gay/pizza/pork/parser}/Parser.kt | 3 +-- .../gay/pizza/pork/parser}/PeekableSource.kt | 2 +- .../kotlin/gay/pizza/pork/parser}/Printer.kt | 5 ++--- .../gay/pizza/pork/parser}/StringCharSource.kt | 2 +- .../gay/pizza/pork/parser}/StringEscape.kt | 3 +-- .../main/kotlin/gay/pizza/pork/parser}/Token.kt | 2 +- .../gay/pizza/pork/parser}/TokenFamily.kt | 2 +- .../pizza/pork/parser}/TokenNodeAttribution.kt | 2 +- .../gay/pizza/pork/parser}/TokenSource.kt | 2 +- .../gay/pizza/pork/parser}/TokenStream.kt | 2 +- .../gay/pizza/pork/parser}/TokenStreamSource.kt | 2 +- .../kotlin/gay/pizza/pork/parser}/TokenType.kt | 6 +++--- .../gay/pizza/pork/parser}/TokenTypeProperty.kt | 2 +- .../kotlin/gay/pizza/pork/parser}/Tokenizer.kt | 2 +- settings.gradle.kts | 6 +++++- {core => tool}/build.gradle.kts | 8 ++++++-- .../kotlin/gay/pizza/pork/tool}/AstCommand.kt | 2 +- .../gay/pizza/pork/tool}/AttributeCommand.kt | 4 ++-- .../kotlin/gay/pizza/pork/tool}/FileTool.kt | 7 +++---- .../gay/pizza/pork/tool}/HighlightCommand.kt | 5 ++--- .../gay/pizza/pork/tool}/ReprintCommand.kt | 2 +- .../kotlin/gay/pizza/pork/tool}/RootCommand.kt | 2 +- .../kotlin/gay/pizza/pork/tool}/RunCommand.kt | 6 +++--- .../gay/pizza/pork/tool}/TokenizeCommand.kt | 2 +- .../main/kotlin/gay/pizza/pork/tool}/Tool.kt | 10 ++++++---- .../main/kotlin/gay/pizza/pork/tool}/main.kt | 2 +- 53 files changed, 119 insertions(+), 81 deletions(-) create mode 100644 common/build.gradle.kts rename {core/src/main/kotlin/gay/pizza/pork/util => common/src/main/kotlin/gay/pizza/pork/common}/IndentPrinter.kt (94%) delete mode 100644 core/src/main/kotlin/gay/pizza/pork/PorkLanguage.kt delete mode 100644 core/src/main/kotlin/gay/pizza/pork/eval/None.kt create mode 100644 evaluator/build.gradle.kts rename {core/src/main/kotlin/gay/pizza/pork/eval => evaluator/src/main/kotlin/gay/pizza/pork/evaluator}/Arguments.kt (54%) rename {core/src/main/kotlin/gay/pizza/pork/eval => evaluator/src/main/kotlin/gay/pizza/pork/evaluator}/BlockFunction.kt (60%) rename {core/src/main/kotlin/gay/pizza/pork/eval => evaluator/src/main/kotlin/gay/pizza/pork/evaluator}/CallableFunction.kt (69%) rename {core/src/main/kotlin/gay/pizza/pork/eval => evaluator/src/main/kotlin/gay/pizza/pork/evaluator}/EvaluationContext.kt (96%) rename {core/src/main/kotlin/gay/pizza/pork/eval => evaluator/src/main/kotlin/gay/pizza/pork/evaluator}/EvaluationContextProvider.kt (76%) rename {core/src/main/kotlin/gay/pizza/pork/eval => evaluator/src/main/kotlin/gay/pizza/pork/evaluator}/EvaluationVisitor.kt (99%) rename {core/src/main/kotlin/gay/pizza/pork/eval => evaluator/src/main/kotlin/gay/pizza/pork/evaluator}/Evaluator.kt (95%) create mode 100644 evaluator/src/main/kotlin/gay/pizza/pork/evaluator/None.kt rename {core/src/main/kotlin/gay/pizza/pork/eval => evaluator/src/main/kotlin/gay/pizza/pork/evaluator}/Scope.kt (97%) create mode 100644 frontend/build.gradle.kts rename {core => frontend}/src/main/kotlin/gay/pizza/pork/frontend/ContentSource.kt (80%) rename {core => frontend}/src/main/kotlin/gay/pizza/pork/frontend/FsContentSource.kt (82%) rename {core => frontend}/src/main/kotlin/gay/pizza/pork/frontend/World.kt (82%) create mode 100644 parser/build.gradle.kts rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/AnsiHighlightScheme.kt (66%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/CharSource.kt (62%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/DiscardNodeAttribution.kt (86%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/Highlight.kt (80%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/HighlightScheme.kt (70%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/Highlighter.kt (83%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/NodeAttribution.kt (81%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/Parser.kt (99%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/PeekableSource.kt (74%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/Printer.kt (97%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/StringCharSource.kt (93%) rename {core/src/main/kotlin/gay/pizza/pork/util => parser/src/main/kotlin/gay/pizza/pork/parser}/StringEscape.kt (88%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/Token.kt (89%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/TokenFamily.kt (85%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/TokenNodeAttribution.kt (97%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/TokenSource.kt (61%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/TokenStream.kt (77%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/TokenStreamSource.kt (94%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/TokenType.kt (94%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/TokenTypeProperty.kt (95%) rename {core/src/main/kotlin/gay/pizza/pork/parse => parser/src/main/kotlin/gay/pizza/pork/parser}/Tokenizer.kt (99%) rename {core => tool}/build.gradle.kts (65%) rename {core/src/main/kotlin/gay/pizza/pork/cli => tool/src/main/kotlin/gay/pizza/pork/tool}/AstCommand.kt (96%) rename {core/src/main/kotlin/gay/pizza/pork/cli => tool/src/main/kotlin/gay/pizza/pork/tool}/AttributeCommand.kt (90%) rename {core/src/main/kotlin/gay/pizza/pork/cli => tool/src/main/kotlin/gay/pizza/pork/tool}/FileTool.kt (63%) rename {core/src/main/kotlin/gay/pizza/pork/cli => tool/src/main/kotlin/gay/pizza/pork/tool}/HighlightCommand.kt (73%) rename {core/src/main/kotlin/gay/pizza/pork/cli => tool/src/main/kotlin/gay/pizza/pork/tool}/ReprintCommand.kt (93%) rename {core/src/main/kotlin/gay/pizza/pork/cli => tool/src/main/kotlin/gay/pizza/pork/tool}/RootCommand.kt (93%) rename {core/src/main/kotlin/gay/pizza/pork/cli => tool/src/main/kotlin/gay/pizza/pork/tool}/RunCommand.kt (82%) rename {core/src/main/kotlin/gay/pizza/pork/cli => tool/src/main/kotlin/gay/pizza/pork/tool}/TokenizeCommand.kt (95%) rename {core/src/main/kotlin/gay/pizza/pork/cli => tool/src/main/kotlin/gay/pizza/pork/tool}/Tool.kt (83%) rename {core/src/main/kotlin/gay/pizza/pork/cli => tool/src/main/kotlin/gay/pizza/pork/tool}/main.kt (67%) diff --git a/README.md b/README.md index 3bb61a8..cb465af 100644 --- a/README.md +++ b/README.md @@ -23,5 +23,5 @@ fn main() { ## Usage ``` -./gradlew -q core:run --args 'run ../examples/fib.pork' +./gradlew -q tool:run --args 'run ../examples/fib.pork' ``` diff --git a/common/build.gradle.kts b/common/build.gradle.kts new file mode 100644 index 0000000..e842a6a --- /dev/null +++ b/common/build.gradle.kts @@ -0,0 +1,3 @@ +plugins { + pork_module +} diff --git a/core/src/main/kotlin/gay/pizza/pork/util/IndentPrinter.kt b/common/src/main/kotlin/gay/pizza/pork/common/IndentPrinter.kt similarity index 94% rename from core/src/main/kotlin/gay/pizza/pork/util/IndentPrinter.kt rename to common/src/main/kotlin/gay/pizza/pork/common/IndentPrinter.kt index 21ee2cd..5e68c70 100644 --- a/core/src/main/kotlin/gay/pizza/pork/util/IndentPrinter.kt +++ b/common/src/main/kotlin/gay/pizza/pork/common/IndentPrinter.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.util +package gay.pizza.pork.common class IndentPrinter( val buffer: StringBuilder = StringBuilder(), diff --git a/core/src/main/kotlin/gay/pizza/pork/PorkLanguage.kt b/core/src/main/kotlin/gay/pizza/pork/PorkLanguage.kt deleted file mode 100644 index a9cce21..0000000 --- a/core/src/main/kotlin/gay/pizza/pork/PorkLanguage.kt +++ /dev/null @@ -1,3 +0,0 @@ -package gay.pizza.pork - -object PorkLanguage diff --git a/core/src/main/kotlin/gay/pizza/pork/eval/None.kt b/core/src/main/kotlin/gay/pizza/pork/eval/None.kt deleted file mode 100644 index 6d86fd0..0000000 --- a/core/src/main/kotlin/gay/pizza/pork/eval/None.kt +++ /dev/null @@ -1,3 +0,0 @@ -package gay.pizza.pork.eval - -data object None diff --git a/evaluator/build.gradle.kts b/evaluator/build.gradle.kts new file mode 100644 index 0000000..04ad213 --- /dev/null +++ b/evaluator/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + pork_module +} + +dependencies { + api(project(":ast")) + api(project(":frontend")) + + implementation(project(":common")) +} diff --git a/core/src/main/kotlin/gay/pizza/pork/eval/Arguments.kt b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/Arguments.kt similarity index 54% rename from core/src/main/kotlin/gay/pizza/pork/eval/Arguments.kt rename to evaluator/src/main/kotlin/gay/pizza/pork/evaluator/Arguments.kt index 28d48e1..000dd75 100644 --- a/core/src/main/kotlin/gay/pizza/pork/eval/Arguments.kt +++ b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/Arguments.kt @@ -1,3 +1,3 @@ -package gay.pizza.pork.eval +package gay.pizza.pork.evaluator class Arguments(val values: List) diff --git a/core/src/main/kotlin/gay/pizza/pork/eval/BlockFunction.kt b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/BlockFunction.kt similarity index 60% rename from core/src/main/kotlin/gay/pizza/pork/eval/BlockFunction.kt rename to evaluator/src/main/kotlin/gay/pizza/pork/evaluator/BlockFunction.kt index 46d34a1..d3059ff 100644 --- a/core/src/main/kotlin/gay/pizza/pork/eval/BlockFunction.kt +++ b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/BlockFunction.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.eval +package gay.pizza.pork.evaluator fun interface BlockFunction { fun call(): Any diff --git a/core/src/main/kotlin/gay/pizza/pork/eval/CallableFunction.kt b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/CallableFunction.kt similarity index 69% rename from core/src/main/kotlin/gay/pizza/pork/eval/CallableFunction.kt rename to evaluator/src/main/kotlin/gay/pizza/pork/evaluator/CallableFunction.kt index d06ef7b..8168a5b 100644 --- a/core/src/main/kotlin/gay/pizza/pork/eval/CallableFunction.kt +++ b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/CallableFunction.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.eval +package gay.pizza.pork.evaluator fun interface CallableFunction { fun call(arguments: Arguments): Any diff --git a/core/src/main/kotlin/gay/pizza/pork/eval/EvaluationContext.kt b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/EvaluationContext.kt similarity index 96% rename from core/src/main/kotlin/gay/pizza/pork/eval/EvaluationContext.kt rename to evaluator/src/main/kotlin/gay/pizza/pork/evaluator/EvaluationContext.kt index dbf8fb1..d1d5fa2 100644 --- a/core/src/main/kotlin/gay/pizza/pork/eval/EvaluationContext.kt +++ b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/EvaluationContext.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.eval +package gay.pizza.pork.evaluator import gay.pizza.pork.ast.CompilationUnit import gay.pizza.pork.ast.ImportDeclaration diff --git a/core/src/main/kotlin/gay/pizza/pork/eval/EvaluationContextProvider.kt b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/EvaluationContextProvider.kt similarity index 76% rename from core/src/main/kotlin/gay/pizza/pork/eval/EvaluationContextProvider.kt rename to evaluator/src/main/kotlin/gay/pizza/pork/evaluator/EvaluationContextProvider.kt index 6353d8f..8a65d75 100644 --- a/core/src/main/kotlin/gay/pizza/pork/eval/EvaluationContextProvider.kt +++ b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/EvaluationContextProvider.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.eval +package gay.pizza.pork.evaluator interface EvaluationContextProvider { fun provideEvaluationContext(path: String): EvaluationContext diff --git a/core/src/main/kotlin/gay/pizza/pork/eval/EvaluationVisitor.kt b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/EvaluationVisitor.kt similarity index 99% rename from core/src/main/kotlin/gay/pizza/pork/eval/EvaluationVisitor.kt rename to evaluator/src/main/kotlin/gay/pizza/pork/evaluator/EvaluationVisitor.kt index d70bed2..19cb526 100644 --- a/core/src/main/kotlin/gay/pizza/pork/eval/EvaluationVisitor.kt +++ b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/EvaluationVisitor.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.eval +package gay.pizza.pork.evaluator import gay.pizza.pork.ast.* diff --git a/core/src/main/kotlin/gay/pizza/pork/eval/Evaluator.kt b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/Evaluator.kt similarity index 95% rename from core/src/main/kotlin/gay/pizza/pork/eval/Evaluator.kt rename to evaluator/src/main/kotlin/gay/pizza/pork/evaluator/Evaluator.kt index 05eef3d..e5fe1a0 100644 --- a/core/src/main/kotlin/gay/pizza/pork/eval/Evaluator.kt +++ b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/Evaluator.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.eval +package gay.pizza.pork.evaluator import gay.pizza.pork.frontend.World diff --git a/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/None.kt b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/None.kt new file mode 100644 index 0000000..b9c123e --- /dev/null +++ b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/None.kt @@ -0,0 +1,3 @@ +package gay.pizza.pork.evaluator + +data object None diff --git a/core/src/main/kotlin/gay/pizza/pork/eval/Scope.kt b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/Scope.kt similarity index 97% rename from core/src/main/kotlin/gay/pizza/pork/eval/Scope.kt rename to evaluator/src/main/kotlin/gay/pizza/pork/evaluator/Scope.kt index f5d1d28..d2a8fa7 100644 --- a/core/src/main/kotlin/gay/pizza/pork/eval/Scope.kt +++ b/evaluator/src/main/kotlin/gay/pizza/pork/evaluator/Scope.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.eval +package gay.pizza.pork.evaluator class Scope(val parent: Scope? = null, inherits: List = emptyList()) { private val inherited = inherits.toMutableList() diff --git a/frontend/build.gradle.kts b/frontend/build.gradle.kts new file mode 100644 index 0000000..05f9399 --- /dev/null +++ b/frontend/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + pork_module +} + +dependencies { + api(project(":ast")) + api(project(":parser")) + + implementation(project(":common")) +} diff --git a/core/src/main/kotlin/gay/pizza/pork/frontend/ContentSource.kt b/frontend/src/main/kotlin/gay/pizza/pork/frontend/ContentSource.kt similarity index 80% rename from core/src/main/kotlin/gay/pizza/pork/frontend/ContentSource.kt rename to frontend/src/main/kotlin/gay/pizza/pork/frontend/ContentSource.kt index 0319262..c4ccc17 100644 --- a/core/src/main/kotlin/gay/pizza/pork/frontend/ContentSource.kt +++ b/frontend/src/main/kotlin/gay/pizza/pork/frontend/ContentSource.kt @@ -1,6 +1,6 @@ package gay.pizza.pork.frontend -import gay.pizza.pork.parse.CharSource +import gay.pizza.pork.parser.CharSource interface ContentSource { fun loadAsCharSource(path: String): CharSource diff --git a/core/src/main/kotlin/gay/pizza/pork/frontend/FsContentSource.kt b/frontend/src/main/kotlin/gay/pizza/pork/frontend/FsContentSource.kt similarity index 82% rename from core/src/main/kotlin/gay/pizza/pork/frontend/FsContentSource.kt rename to frontend/src/main/kotlin/gay/pizza/pork/frontend/FsContentSource.kt index cf11e00..9754c2f 100644 --- a/core/src/main/kotlin/gay/pizza/pork/frontend/FsContentSource.kt +++ b/frontend/src/main/kotlin/gay/pizza/pork/frontend/FsContentSource.kt @@ -1,13 +1,12 @@ package gay.pizza.pork.frontend -import gay.pizza.pork.parse.CharSource -import gay.pizza.pork.parse.StringCharSource +import gay.pizza.pork.parser.StringCharSource import java.nio.file.Path import kotlin.io.path.absolutePathString import kotlin.io.path.readText class FsContentSource(val root: Path) : ContentSource { - override fun loadAsCharSource(path: String): CharSource = + override fun loadAsCharSource(path: String): gay.pizza.pork.parser.CharSource = StringCharSource(asFsPath(path).readText()) override fun stableContentIdentity(path: String): String = diff --git a/core/src/main/kotlin/gay/pizza/pork/frontend/World.kt b/frontend/src/main/kotlin/gay/pizza/pork/frontend/World.kt similarity index 82% rename from core/src/main/kotlin/gay/pizza/pork/frontend/World.kt rename to frontend/src/main/kotlin/gay/pizza/pork/frontend/World.kt index e371885..68f5931 100644 --- a/core/src/main/kotlin/gay/pizza/pork/frontend/World.kt +++ b/frontend/src/main/kotlin/gay/pizza/pork/frontend/World.kt @@ -2,10 +2,9 @@ package gay.pizza.pork.frontend import gay.pizza.pork.ast.CompilationUnit import gay.pizza.pork.ast.ImportDeclaration -import gay.pizza.pork.parse.DiscardNodeAttribution -import gay.pizza.pork.parse.Parser -import gay.pizza.pork.parse.TokenStreamSource -import gay.pizza.pork.parse.Tokenizer +import gay.pizza.pork.parser.Parser +import gay.pizza.pork.parser.TokenStreamSource +import gay.pizza.pork.parser.Tokenizer class World(val contentSource: ContentSource) { private val units = mutableMapOf() @@ -19,7 +18,7 @@ class World(val contentSource: ContentSource) { val charSource = contentSource.loadAsCharSource(path) val tokenizer = Tokenizer(charSource) val tokenStream = tokenizer.tokenize() - val parser = Parser(TokenStreamSource(tokenStream), DiscardNodeAttribution) + val parser = Parser(TokenStreamSource(tokenStream), gay.pizza.pork.parser.DiscardNodeAttribution) return parser.readCompilationUnit() } diff --git a/parser/build.gradle.kts b/parser/build.gradle.kts new file mode 100644 index 0000000..c5d32a0 --- /dev/null +++ b/parser/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + pork_module +} + +dependencies { + api(project(":ast")) + + implementation(project(":common")) +} diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/AnsiHighlightScheme.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/AnsiHighlightScheme.kt similarity index 66% rename from core/src/main/kotlin/gay/pizza/pork/parse/AnsiHighlightScheme.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/AnsiHighlightScheme.kt index f96f38d..4767a56 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/AnsiHighlightScheme.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/AnsiHighlightScheme.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser open class AnsiHighlightScheme : HighlightScheme { override fun highlight(token: Token): Highlight { @@ -16,11 +16,16 @@ open class AnsiHighlightScheme : HighlightScheme { } else Highlight(token) } - open fun string(): AnsiAttributes = AnsiAttributes("32m") - open fun symbol(): AnsiAttributes = AnsiAttributes("33m") - open fun operator(): AnsiAttributes = AnsiAttributes("34m") - open fun keyword(): AnsiAttributes = AnsiAttributes("35m") - open fun comment(): AnsiAttributes = AnsiAttributes("37m") + open fun string(): AnsiAttributes = + AnsiAttributes("32m") + open fun symbol(): AnsiAttributes = + AnsiAttributes("33m") + open fun operator(): AnsiAttributes = + AnsiAttributes("34m") + open fun keyword(): AnsiAttributes = + AnsiAttributes("35m") + open fun comment(): AnsiAttributes = + AnsiAttributes("37m") private fun ansi(attributes: AnsiAttributes, text: String): String = "\u001b[${attributes.color}${text}\u001b[0m" diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/CharSource.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/CharSource.kt similarity index 62% rename from core/src/main/kotlin/gay/pizza/pork/parse/CharSource.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/CharSource.kt index 816d696..36a7a7a 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/CharSource.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/CharSource.kt @@ -1,7 +1,8 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser interface CharSource : PeekableSource { companion object { + @Suppress("ConstPropertyName") const val NullChar = 0.toChar() } } diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/DiscardNodeAttribution.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/DiscardNodeAttribution.kt similarity index 86% rename from core/src/main/kotlin/gay/pizza/pork/parse/DiscardNodeAttribution.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/DiscardNodeAttribution.kt index 4c8642e..6875f5e 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/DiscardNodeAttribution.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/DiscardNodeAttribution.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser import gay.pizza.pork.ast.Node diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/Highlight.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/Highlight.kt similarity index 80% rename from core/src/main/kotlin/gay/pizza/pork/parse/Highlight.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/Highlight.kt index 75fd20d..303310d 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/Highlight.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/Highlight.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser class Highlight(val token: Token, val text: String? = null) { override fun toString(): String = text ?: token.text diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/HighlightScheme.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/HighlightScheme.kt similarity index 70% rename from core/src/main/kotlin/gay/pizza/pork/parse/HighlightScheme.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/HighlightScheme.kt index 96ee358..30e1a14 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/HighlightScheme.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/HighlightScheme.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser interface HighlightScheme { fun highlight(token: Token): Highlight diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/Highlighter.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/Highlighter.kt similarity index 83% rename from core/src/main/kotlin/gay/pizza/pork/parse/Highlighter.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/Highlighter.kt index cb8fc54..18dd782 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/Highlighter.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/Highlighter.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser class Highlighter(val scheme: HighlightScheme) { fun highlight(stream: TokenStream): List = diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/NodeAttribution.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/NodeAttribution.kt similarity index 81% rename from core/src/main/kotlin/gay/pizza/pork/parse/NodeAttribution.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/NodeAttribution.kt index 6a58dec..864afc2 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/NodeAttribution.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/NodeAttribution.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser import gay.pizza.pork.ast.Node diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/Parser.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/Parser.kt similarity index 99% rename from core/src/main/kotlin/gay/pizza/pork/parse/Parser.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/Parser.kt index e23dccb..3bff51d 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/Parser.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/Parser.kt @@ -1,7 +1,6 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser import gay.pizza.pork.ast.* -import gay.pizza.pork.util.StringEscape class Parser(source: PeekableSource, val attribution: NodeAttribution) { private val unsanitizedSource = source diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/PeekableSource.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/PeekableSource.kt similarity index 74% rename from core/src/main/kotlin/gay/pizza/pork/parse/PeekableSource.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/PeekableSource.kt index 6335c4c..fda5bc5 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/PeekableSource.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/PeekableSource.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser interface PeekableSource { val currentIndex: Int diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/Printer.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/Printer.kt similarity index 97% rename from core/src/main/kotlin/gay/pizza/pork/parse/Printer.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/Printer.kt index 87e9284..ce5b5f5 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/Printer.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/Printer.kt @@ -1,8 +1,7 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser import gay.pizza.pork.ast.* -import gay.pizza.pork.util.IndentPrinter -import gay.pizza.pork.util.StringEscape +import gay.pizza.pork.common.IndentPrinter class Printer(buffer: StringBuilder) : NodeVisitor { private val out = IndentPrinter(buffer) diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/StringCharSource.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/StringCharSource.kt similarity index 93% rename from core/src/main/kotlin/gay/pizza/pork/parse/StringCharSource.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/StringCharSource.kt index 5de7aa1..081757d 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/StringCharSource.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/StringCharSource.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser class StringCharSource(val input: String) : CharSource { private var index = 0 diff --git a/core/src/main/kotlin/gay/pizza/pork/util/StringEscape.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/StringEscape.kt similarity index 88% rename from core/src/main/kotlin/gay/pizza/pork/util/StringEscape.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/StringEscape.kt index 2582b59..74089e6 100644 --- a/core/src/main/kotlin/gay/pizza/pork/util/StringEscape.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/StringEscape.kt @@ -1,8 +1,7 @@ -package gay.pizza.pork.util +package gay.pizza.pork.parser object StringEscape { fun escape(input: String): String = input.replace("\n", "\\n") fun unescape(input: String): String = input.replace("\\n", "\n") - fun unquote(input: String): String = input.substring(1, input.length - 1) } diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/Token.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/Token.kt similarity index 89% rename from core/src/main/kotlin/gay/pizza/pork/parse/Token.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/Token.kt index e6a6a23..8a39a0d 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/Token.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/Token.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser class Token(val type: TokenType, val start: Int, val text: String) { override fun toString(): String = "$start ${type.name} '${text.replace("\n", "\\n")}'" diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/TokenFamily.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenFamily.kt similarity index 85% rename from core/src/main/kotlin/gay/pizza/pork/parse/TokenFamily.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/TokenFamily.kt index c22a6d1..8c1795d 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/TokenFamily.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenFamily.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser enum class TokenFamily : TokenTypeProperty { OperatorFamily, diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/TokenNodeAttribution.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenNodeAttribution.kt similarity index 97% rename from core/src/main/kotlin/gay/pizza/pork/parse/TokenNodeAttribution.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/TokenNodeAttribution.kt index 9c7ebfd..2d1edef 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/TokenNodeAttribution.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenNodeAttribution.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser import gay.pizza.pork.ast.NodeCoalescer import gay.pizza.pork.ast.Node diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/TokenSource.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenSource.kt similarity index 61% rename from core/src/main/kotlin/gay/pizza/pork/parse/TokenSource.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/TokenSource.kt index 069e219..7b54326 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/TokenSource.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenSource.kt @@ -1,3 +1,3 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser interface TokenSource : PeekableSource diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/TokenStream.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenStream.kt similarity index 77% rename from core/src/main/kotlin/gay/pizza/pork/parse/TokenStream.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/TokenStream.kt index b55fd5b..4ee6df4 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/TokenStream.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenStream.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser class TokenStream(val tokens: List) { override fun toString(): String = tokens.toString() diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/TokenStreamSource.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenStreamSource.kt similarity index 94% rename from core/src/main/kotlin/gay/pizza/pork/parse/TokenStreamSource.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/TokenStreamSource.kt index 778eee2..969762b 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/TokenStreamSource.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenStreamSource.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser class TokenStreamSource(val stream: TokenStream) : TokenSource { private var index = 0 diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/TokenType.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenType.kt similarity index 94% rename from core/src/main/kotlin/gay/pizza/pork/parse/TokenType.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/TokenType.kt index 1d66cf8..94e646d 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/TokenType.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenType.kt @@ -1,7 +1,7 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser -import gay.pizza.pork.parse.TokenTypeProperty.* -import gay.pizza.pork.parse.TokenFamily.* +import gay.pizza.pork.parser.TokenTypeProperty.* +import gay.pizza.pork.parser.TokenFamily.* enum class TokenType(vararg properties: TokenTypeProperty) { Symbol(SymbolFamily, CharConsumer { (it in 'a'..'z') || (it in 'A'..'Z') || it == '_' }, KeywordUpgrader), diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/TokenTypeProperty.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenTypeProperty.kt similarity index 95% rename from core/src/main/kotlin/gay/pizza/pork/parse/TokenTypeProperty.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/TokenTypeProperty.kt index 57278f6..f009921 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/TokenTypeProperty.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/TokenTypeProperty.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser interface TokenTypeProperty { class SingleChar(val char: Char) : TokenTypeProperty diff --git a/core/src/main/kotlin/gay/pizza/pork/parse/Tokenizer.kt b/parser/src/main/kotlin/gay/pizza/pork/parser/Tokenizer.kt similarity index 99% rename from core/src/main/kotlin/gay/pizza/pork/parse/Tokenizer.kt rename to parser/src/main/kotlin/gay/pizza/pork/parser/Tokenizer.kt index eaff0eb..bbf2c55 100644 --- a/core/src/main/kotlin/gay/pizza/pork/parse/Tokenizer.kt +++ b/parser/src/main/kotlin/gay/pizza/pork/parser/Tokenizer.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.parse +package gay.pizza.pork.parser class Tokenizer(val source: CharSource) { private var tokenStart: Int = 0 diff --git a/settings.gradle.kts b/settings.gradle.kts index 3adf28a..75d3ffd 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,8 +1,12 @@ rootProject.name = "pork" include( + ":common", ":ast", - ":core" + ":parser", + ":frontend", + ":evaluator", + ":tool" ) dependencyResolutionManagement { diff --git a/core/build.gradle.kts b/tool/build.gradle.kts similarity index 65% rename from core/build.gradle.kts rename to tool/build.gradle.kts index f7f8b71..460fcc1 100644 --- a/core/build.gradle.kts +++ b/tool/build.gradle.kts @@ -7,18 +7,22 @@ plugins { dependencies { api(project(":ast")) + api(project(":parser")) + api(project(":frontend")) + api(project(":evaluator")) implementation(libs.clikt) + implementation(project(":common")) } application { - mainClass.set("gay.pizza.pork.cli.MainKt") + mainClass.set("gay.pizza.pork.tool.MainKt") } graalvmNative { binaries { named("main") { imageName.set("pork") - mainClass.set("gay.pizza.pork.cli.MainKt") + mainClass.set("gay.pizza.pork.tool.MainKt") sharedLibrary.set(false) } } diff --git a/core/src/main/kotlin/gay/pizza/pork/cli/AstCommand.kt b/tool/src/main/kotlin/gay/pizza/pork/tool/AstCommand.kt similarity index 96% rename from core/src/main/kotlin/gay/pizza/pork/cli/AstCommand.kt rename to tool/src/main/kotlin/gay/pizza/pork/tool/AstCommand.kt index c890552..c93ea38 100644 --- a/core/src/main/kotlin/gay/pizza/pork/cli/AstCommand.kt +++ b/tool/src/main/kotlin/gay/pizza/pork/tool/AstCommand.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.cli +package gay.pizza.pork.tool import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.parameters.arguments.argument diff --git a/core/src/main/kotlin/gay/pizza/pork/cli/AttributeCommand.kt b/tool/src/main/kotlin/gay/pizza/pork/tool/AttributeCommand.kt similarity index 90% rename from core/src/main/kotlin/gay/pizza/pork/cli/AttributeCommand.kt rename to tool/src/main/kotlin/gay/pizza/pork/tool/AttributeCommand.kt index 60d7179..16ba5ac 100644 --- a/core/src/main/kotlin/gay/pizza/pork/cli/AttributeCommand.kt +++ b/tool/src/main/kotlin/gay/pizza/pork/tool/AttributeCommand.kt @@ -1,10 +1,10 @@ -package gay.pizza.pork.cli +package gay.pizza.pork.tool import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.parameters.arguments.argument import com.github.ajalt.clikt.parameters.types.path import gay.pizza.pork.ast.NodeCoalescer -import gay.pizza.pork.parse.TokenNodeAttribution +import gay.pizza.pork.parser.TokenNodeAttribution class AttributeCommand : CliktCommand(help = "Attribute AST", name = "attribute") { val path by argument("file").path(mustExist = true, canBeDir = false) diff --git a/core/src/main/kotlin/gay/pizza/pork/cli/FileTool.kt b/tool/src/main/kotlin/gay/pizza/pork/tool/FileTool.kt similarity index 63% rename from core/src/main/kotlin/gay/pizza/pork/cli/FileTool.kt rename to tool/src/main/kotlin/gay/pizza/pork/tool/FileTool.kt index 6f42d84..eb597cf 100644 --- a/core/src/main/kotlin/gay/pizza/pork/cli/FileTool.kt +++ b/tool/src/main/kotlin/gay/pizza/pork/tool/FileTool.kt @@ -1,14 +1,13 @@ -package gay.pizza.pork.cli +package gay.pizza.pork.tool import gay.pizza.pork.frontend.ContentSource import gay.pizza.pork.frontend.FsContentSource -import gay.pizza.pork.parse.CharSource -import gay.pizza.pork.parse.StringCharSource +import gay.pizza.pork.parser.StringCharSource import java.nio.file.Path import kotlin.io.path.readText class FileTool(val path: Path) : Tool() { - override fun createCharSource(): CharSource = StringCharSource(path.readText()) + override fun createCharSource(): gay.pizza.pork.parser.CharSource = StringCharSource(path.readText()) override fun createContentSource(): ContentSource = FsContentSource(path.parent) override fun rootFilePath(): String = path.fileName.toString() } diff --git a/core/src/main/kotlin/gay/pizza/pork/cli/HighlightCommand.kt b/tool/src/main/kotlin/gay/pizza/pork/tool/HighlightCommand.kt similarity index 73% rename from core/src/main/kotlin/gay/pizza/pork/cli/HighlightCommand.kt rename to tool/src/main/kotlin/gay/pizza/pork/tool/HighlightCommand.kt index 3d28d01..a940f04 100644 --- a/core/src/main/kotlin/gay/pizza/pork/cli/HighlightCommand.kt +++ b/tool/src/main/kotlin/gay/pizza/pork/tool/HighlightCommand.kt @@ -1,15 +1,14 @@ -package gay.pizza.pork.cli +package gay.pizza.pork.tool import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.parameters.arguments.argument import com.github.ajalt.clikt.parameters.types.path -import gay.pizza.pork.parse.AnsiHighlightScheme class HighlightCommand : CliktCommand(help = "Syntax Highlighter", name = "highlight") { val path by argument("file").path(mustExist = true, canBeDir = false) override fun run() { val tool = FileTool(path) - print(tool.highlight(AnsiHighlightScheme()).joinToString("")) + print(tool.highlight(gay.pizza.pork.parser.AnsiHighlightScheme()).joinToString("")) } } diff --git a/core/src/main/kotlin/gay/pizza/pork/cli/ReprintCommand.kt b/tool/src/main/kotlin/gay/pizza/pork/tool/ReprintCommand.kt similarity index 93% rename from core/src/main/kotlin/gay/pizza/pork/cli/ReprintCommand.kt rename to tool/src/main/kotlin/gay/pizza/pork/tool/ReprintCommand.kt index 9d9e04b..18190a3 100644 --- a/core/src/main/kotlin/gay/pizza/pork/cli/ReprintCommand.kt +++ b/tool/src/main/kotlin/gay/pizza/pork/tool/ReprintCommand.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.cli +package gay.pizza.pork.tool import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.parameters.arguments.argument diff --git a/core/src/main/kotlin/gay/pizza/pork/cli/RootCommand.kt b/tool/src/main/kotlin/gay/pizza/pork/tool/RootCommand.kt similarity index 93% rename from core/src/main/kotlin/gay/pizza/pork/cli/RootCommand.kt rename to tool/src/main/kotlin/gay/pizza/pork/tool/RootCommand.kt index 611964c..155b55e 100644 --- a/core/src/main/kotlin/gay/pizza/pork/cli/RootCommand.kt +++ b/tool/src/main/kotlin/gay/pizza/pork/tool/RootCommand.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.cli +package gay.pizza.pork.tool import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.core.subcommands diff --git a/core/src/main/kotlin/gay/pizza/pork/cli/RunCommand.kt b/tool/src/main/kotlin/gay/pizza/pork/tool/RunCommand.kt similarity index 82% rename from core/src/main/kotlin/gay/pizza/pork/cli/RunCommand.kt rename to tool/src/main/kotlin/gay/pizza/pork/tool/RunCommand.kt index 74a53bf..5195e76 100644 --- a/core/src/main/kotlin/gay/pizza/pork/cli/RunCommand.kt +++ b/tool/src/main/kotlin/gay/pizza/pork/tool/RunCommand.kt @@ -1,10 +1,10 @@ -package gay.pizza.pork.cli +package gay.pizza.pork.tool import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.parameters.arguments.argument import com.github.ajalt.clikt.parameters.types.path -import gay.pizza.pork.eval.CallableFunction -import gay.pizza.pork.eval.Scope +import gay.pizza.pork.evaluator.CallableFunction +import gay.pizza.pork.evaluator.Scope class RunCommand : CliktCommand(help = "Run Program", name = "run") { val path by argument("file").path(mustExist = true, canBeDir = false) diff --git a/core/src/main/kotlin/gay/pizza/pork/cli/TokenizeCommand.kt b/tool/src/main/kotlin/gay/pizza/pork/tool/TokenizeCommand.kt similarity index 95% rename from core/src/main/kotlin/gay/pizza/pork/cli/TokenizeCommand.kt rename to tool/src/main/kotlin/gay/pizza/pork/tool/TokenizeCommand.kt index 0461f0b..2e1bce3 100644 --- a/core/src/main/kotlin/gay/pizza/pork/cli/TokenizeCommand.kt +++ b/tool/src/main/kotlin/gay/pizza/pork/tool/TokenizeCommand.kt @@ -1,4 +1,4 @@ -package gay.pizza.pork.cli +package gay.pizza.pork.tool import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.parameters.arguments.argument diff --git a/core/src/main/kotlin/gay/pizza/pork/cli/Tool.kt b/tool/src/main/kotlin/gay/pizza/pork/tool/Tool.kt similarity index 83% rename from core/src/main/kotlin/gay/pizza/pork/cli/Tool.kt rename to tool/src/main/kotlin/gay/pizza/pork/tool/Tool.kt index abd0410..56a726a 100644 --- a/core/src/main/kotlin/gay/pizza/pork/cli/Tool.kt +++ b/tool/src/main/kotlin/gay/pizza/pork/tool/Tool.kt @@ -1,12 +1,14 @@ -package gay.pizza.pork.cli +package gay.pizza.pork.tool import gay.pizza.pork.ast.NodeVisitor -import gay.pizza.pork.parse.Printer +import gay.pizza.pork.parser.Printer import gay.pizza.pork.ast.CompilationUnit -import gay.pizza.pork.eval.* +import gay.pizza.pork.evaluator.Arguments +import gay.pizza.pork.evaluator.Evaluator +import gay.pizza.pork.evaluator.Scope import gay.pizza.pork.frontend.ContentSource import gay.pizza.pork.frontend.World -import gay.pizza.pork.parse.* +import gay.pizza.pork.parser.* abstract class Tool { abstract fun createCharSource(): CharSource diff --git a/core/src/main/kotlin/gay/pizza/pork/cli/main.kt b/tool/src/main/kotlin/gay/pizza/pork/tool/main.kt similarity index 67% rename from core/src/main/kotlin/gay/pizza/pork/cli/main.kt rename to tool/src/main/kotlin/gay/pizza/pork/tool/main.kt index 6087412..c36f32f 100644 --- a/core/src/main/kotlin/gay/pizza/pork/cli/main.kt +++ b/tool/src/main/kotlin/gay/pizza/pork/tool/main.kt @@ -1,3 +1,3 @@ -package gay.pizza.pork.cli +package gay.pizza.pork.tool fun main(args: Array) = RootCommand().main(args)