From 8dce1c07e695c5fe098ecffc6ee9ff8c34725664 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 31 Jul 2026 11:04:30 +0100 Subject: Add hobgoblin definitions for sources --- hobgoblin/hobgoblin.json5 | 25 ++++++++++++++++++++++ hobgoblin/src/patio.hob | 0 hobgoblin/src/sources.hob | 19 ++++++++++++++++ hobgoblin/src/sourcetext.hob | 13 +++++++++++ makefile | 5 +++++ pom.xml | 2 +- .../org/shedlang/compiler/sources/NullSource.java | 2 +- .../shedlang/compiler/sources/RuntimeSource.java | 2 +- 8 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 hobgoblin/hobgoblin.json5 create mode 100644 hobgoblin/src/patio.hob create mode 100644 hobgoblin/src/sources.hob create mode 100644 hobgoblin/src/sourcetext.hob diff --git a/hobgoblin/hobgoblin.json5 b/hobgoblin/hobgoblin.json5 new file mode 100644 index 00000000..365c19a6 --- /dev/null +++ b/hobgoblin/hobgoblin.json5 @@ -0,0 +1,25 @@ +{ + outputs: { + langs: { + java: { + packageName: "org.shedlang.compiler", + namespaces: [ + { + hobgoblin: "sourcetext", + java: "org.zwobble.sourcetext", + }, + ], + }, + }, + generators: [ + { + generator: "java-transient-0", + path: "../src/gen/java", + }, + { + generator: "rust-transient-0", + path: "../patio-to-cranelift/src/gen", + }, + ], + }, +} diff --git a/hobgoblin/src/patio.hob b/hobgoblin/src/patio.hob new file mode 100644 index 00000000..e69de29b diff --git a/hobgoblin/src/sources.hob b/hobgoblin/src/sources.hob new file mode 100644 index 00000000..ad089a13 --- /dev/null +++ b/hobgoblin/src/sources.hob @@ -0,0 +1,19 @@ +import {SourceRange} from ./sourcetext; + +sum Source { + variant NullSource; + variant RuntimeSource; + variant FileFragmentSource; +} + +struct NullSource { + singleton; +} + +struct RuntimeSource { + singleton; +} + +struct FileFragmentSource { + field sourceRange: SourceRange; +} diff --git a/hobgoblin/src/sourcetext.hob b/hobgoblin/src/sourcetext.hob new file mode 100644 index 00000000..14754196 --- /dev/null +++ b/hobgoblin/src/sourcetext.hob @@ -0,0 +1,13 @@ +struct SourceRange { + field sourceText: Shared[SourceText]; + field start: SourcePosition; + field end: SourcePosition; +} + +native SourceText { +} + +struct SourcePosition { + field sourceText: Shared[SourceText]; + field characterIndex: Int32; +} diff --git a/makefile b/makefile index d2f4fcd5..858d9114 100644 --- a/makefile +++ b/makefile @@ -35,3 +35,8 @@ src/gen/java: patio-to-cranelift: flatc-25.12.19 -o patio-to-cranelift/src/gen --rust flatbuffers/* cd patio-to-cranelift; cargo fmt && cargo build && cargo test + +.PHONY: hobgoblin + +hobgoblin: + hobgoblin compile hobgoblin diff --git a/pom.xml b/pom.xml index 548bf325..896a6300 100644 --- a/pom.xml +++ b/pom.xml @@ -48,7 +48,7 @@ org.zwobble.source-text source-text - 0.1.0 + 0.1.3 org.pcollections diff --git a/src/main/java/org/shedlang/compiler/sources/NullSource.java b/src/main/java/org/shedlang/compiler/sources/NullSource.java index fbac0ea0..35c82aa3 100644 --- a/src/main/java/org/shedlang/compiler/sources/NullSource.java +++ b/src/main/java/org/shedlang/compiler/sources/NullSource.java @@ -4,7 +4,7 @@ public final class NullSource implements Source { private NullSource() { } - static final NullSource INSTANCE = new NullSource(); + public static final NullSource INSTANCE = new NullSource(); @Override public String describe() { diff --git a/src/main/java/org/shedlang/compiler/sources/RuntimeSource.java b/src/main/java/org/shedlang/compiler/sources/RuntimeSource.java index 749b84e3..b3356f6a 100644 --- a/src/main/java/org/shedlang/compiler/sources/RuntimeSource.java +++ b/src/main/java/org/shedlang/compiler/sources/RuntimeSource.java @@ -4,7 +4,7 @@ public final class RuntimeSource implements Source { private RuntimeSource() { } - static final RuntimeSource INSTANCE = new RuntimeSource(); + public static final RuntimeSource INSTANCE = new RuntimeSource(); @Override public String describe() { -- cgit v1.2.3