summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionNode.java18
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionReferenceNode.java38
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java15
3 files changed, 71 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionNode.java
new file mode 100644
index 0000000..268e47a
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionNode.java
@@ -0,0 +1,18 @@
+// Generated by hobgoblin.
+
+package org.zwobble.hobgoblin.compiler.ast.untyped;
+
+// Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode imports
+// Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode imports
+
+public sealed interface UntypedQueryExpressionNode permits org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode {
+ public interface Builder {
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode build();
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode.Builder body
+ // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode.Builder body
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode body
+ // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode body
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionReferenceNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionReferenceNode.java
new file mode 100644
index 0000000..e45a6bf
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionReferenceNode.java
@@ -0,0 +1,38 @@
+// Generated by hobgoblin.
+
+package org.zwobble.hobgoblin.compiler.ast.untyped;
+
+// Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode imports
+// Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode imports
+
+public record UntypedQueryExpressionReferenceNode(
+ String name,
+ org.zwobble.hobgoblin.compiler.sources.Source source
+) implements org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode {
+ public static org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder arbitrary() {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder("", org.zwobble.hobgoblin.compiler.sources.HobgoblinNativeSources.arbitrarySource());
+ }
+
+ public record Builder(
+ String name,
+ org.zwobble.hobgoblin.compiler.sources.Source source
+ ) implements org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode.Builder {
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode build() {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode(name, source);
+ }
+
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder withName(String name) {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder(name, source);
+ }
+
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder withSource(org.zwobble.hobgoblin.compiler.sources.Source source) {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder(name, source);
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder body
+ // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder body
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode body
+ // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode body
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java
index 3563d0a..4003368 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java
@@ -455,6 +455,21 @@ public class Parser {
);
}
+ // == Query expressions ==
+
+ static UntypedQueryExpressionNode parseQueryExpression(TokenIterator tokens) {
+ var start = tokens.startPosition();
+
+ var name = parseIdentifier(tokens);
+
+ var end = tokens.endPosition();
+ var source = createSource(start, end);
+
+ return new UntypedQueryExpressionReferenceNode(name, source);
+ }
+
+ // == Qualified type names ==
+
public static QualifiedTypeName parseQualifiedTypeName(SourceText sourceText) {
var tokens = Tokenizer.tokenize(sourceText);
var tokenIterator = tokens.iterator();