diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-07-31 11:04:30 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-07-31 11:04:30 +0100 |
| commit | 8dce1c07e695c5fe098ecffc6ee9ff8c34725664 (patch) | |
| tree | 032a9f608eef810a3cc02f2821beb83b076336b8 | |
| parent | c99d9dec1c89a09fd4ba6f7f73a94bf5b29ee7f0 (diff) | |
Add hobgoblin definitions for sources
| -rw-r--r-- | hobgoblin/hobgoblin.json5 | 25 | ||||
| -rw-r--r-- | hobgoblin/src/patio.hob | 0 | ||||
| -rw-r--r-- | hobgoblin/src/sources.hob | 19 | ||||
| -rw-r--r-- | hobgoblin/src/sourcetext.hob | 13 | ||||
| -rw-r--r-- | makefile | 5 | ||||
| -rw-r--r-- | pom.xml | 2 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/sources/NullSource.java | 2 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/sources/RuntimeSource.java | 2 |
8 files changed, 65 insertions, 3 deletions
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 --- /dev/null +++ b/hobgoblin/src/patio.hob 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; +} @@ -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 @@ -48,7 +48,7 @@ <dependency> <groupId>org.zwobble.source-text</groupId> <artifactId>source-text</artifactId> - <version>0.1.0</version> + <version>0.1.3</version> </dependency> <dependency> <groupId>org.pcollections</groupId> 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() { |
