summaryrefslogtreecommitdiff
path: root/JPratt/src/main/java/bjc/pratt/blocks
diff options
context:
space:
mode:
Diffstat (limited to 'JPratt/src/main/java/bjc/pratt/blocks')
-rw-r--r--JPratt/src/main/java/bjc/pratt/blocks/ChainParseBlock.java3
-rw-r--r--JPratt/src/main/java/bjc/pratt/blocks/GrammarParseBlock.java5
-rw-r--r--JPratt/src/main/java/bjc/pratt/blocks/ParseBlock.java39
-rw-r--r--JPratt/src/main/java/bjc/pratt/blocks/ParseBlocks.java3
-rw-r--r--JPratt/src/main/java/bjc/pratt/blocks/RepeatingParseBlock.java3
-rw-r--r--JPratt/src/main/java/bjc/pratt/blocks/SimpleParseBlock.java3
-rw-r--r--JPratt/src/main/java/bjc/pratt/blocks/TriggeredParseBlock.java3
7 files changed, 46 insertions, 13 deletions
diff --git a/JPratt/src/main/java/bjc/pratt/blocks/ChainParseBlock.java b/JPratt/src/main/java/bjc/pratt/blocks/ChainParseBlock.java
index 1758c17..5c728d9 100644
--- a/JPratt/src/main/java/bjc/pratt/blocks/ChainParseBlock.java
+++ b/JPratt/src/main/java/bjc/pratt/blocks/ChainParseBlock.java
@@ -2,9 +2,8 @@ package bjc.pratt.blocks;
import java.util.Set;
-import bjc.pratt.ParseBlock;
import bjc.pratt.ParserContext;
-import bjc.pratt.Token;
+import bjc.pratt.tokens.Token;
import bjc.utils.data.ITree;
import bjc.utils.data.Tree;
import bjc.utils.parserutils.ParserException;
diff --git a/JPratt/src/main/java/bjc/pratt/blocks/GrammarParseBlock.java b/JPratt/src/main/java/bjc/pratt/blocks/GrammarParseBlock.java
index b714940..6bf5582 100644
--- a/JPratt/src/main/java/bjc/pratt/blocks/GrammarParseBlock.java
+++ b/JPratt/src/main/java/bjc/pratt/blocks/GrammarParseBlock.java
@@ -2,11 +2,10 @@ package bjc.pratt.blocks;
import java.util.function.Function;
-import bjc.pratt.ParseBlock;
import bjc.pratt.ParserContext;
import bjc.pratt.PrattParser;
-import bjc.pratt.Token;
-import bjc.pratt.TokenStream;
+import bjc.pratt.tokens.Token;
+import bjc.pratt.tokens.TokenStream;
import bjc.utils.data.ITree;
import bjc.utils.funcutils.Isomorphism;
import bjc.utils.parserutils.ParserException;
diff --git a/JPratt/src/main/java/bjc/pratt/blocks/ParseBlock.java b/JPratt/src/main/java/bjc/pratt/blocks/ParseBlock.java
new file mode 100644
index 0000000..2fddac0
--- /dev/null
+++ b/JPratt/src/main/java/bjc/pratt/blocks/ParseBlock.java
@@ -0,0 +1,39 @@
+package bjc.pratt.blocks;
+
+import bjc.pratt.ParserContext;
+import bjc.pratt.tokens.Token;
+import bjc.utils.data.ITree;
+import bjc.utils.parserutils.ParserException;
+
+/**
+ * Represents a embedded block in an expression.
+ *
+ * @author bjculkin
+ *
+ * @param <K>
+ * The key type of the token.
+ *
+ * @param <V>
+ * The value type of the token.
+ *
+ * @param <C>
+ * The state type of the parser.
+ */
+@FunctionalInterface
+public interface ParseBlock<K, V, C> {
+
+ /**
+ * Parse the block this represents.
+ *
+ * @param ctx
+ * The context for parsing.
+ *
+ * @return A AST for this block.
+ *
+ * @throws ParserException
+ * If something goes wrong during parsing, or the block
+ * fails validation.
+ */
+ ITree<Token<K, V>> parse(ParserContext<K, V, C> ctx) throws ParserException;
+
+} \ No newline at end of file
diff --git a/JPratt/src/main/java/bjc/pratt/blocks/ParseBlocks.java b/JPratt/src/main/java/bjc/pratt/blocks/ParseBlocks.java
index 44288d2..21fa7e1 100644
--- a/JPratt/src/main/java/bjc/pratt/blocks/ParseBlocks.java
+++ b/JPratt/src/main/java/bjc/pratt/blocks/ParseBlocks.java
@@ -3,8 +3,7 @@ package bjc.pratt.blocks;
import java.util.function.Predicate;
import java.util.function.UnaryOperator;
-import bjc.pratt.ParseBlock;
-import bjc.pratt.Token;
+import bjc.pratt.tokens.Token;
import bjc.utils.data.ITree;
/**
diff --git a/JPratt/src/main/java/bjc/pratt/blocks/RepeatingParseBlock.java b/JPratt/src/main/java/bjc/pratt/blocks/RepeatingParseBlock.java
index 7791ea9..4146648 100644
--- a/JPratt/src/main/java/bjc/pratt/blocks/RepeatingParseBlock.java
+++ b/JPratt/src/main/java/bjc/pratt/blocks/RepeatingParseBlock.java
@@ -2,9 +2,8 @@ package bjc.pratt.blocks;
import java.util.function.UnaryOperator;
-import bjc.pratt.ParseBlock;
import bjc.pratt.ParserContext;
-import bjc.pratt.Token;
+import bjc.pratt.tokens.Token;
import bjc.utils.data.ITree;
import bjc.utils.data.Tree;
import bjc.utils.parserutils.ParserException;
diff --git a/JPratt/src/main/java/bjc/pratt/blocks/SimpleParseBlock.java b/JPratt/src/main/java/bjc/pratt/blocks/SimpleParseBlock.java
index 0fb5097..1ff561c 100644
--- a/JPratt/src/main/java/bjc/pratt/blocks/SimpleParseBlock.java
+++ b/JPratt/src/main/java/bjc/pratt/blocks/SimpleParseBlock.java
@@ -2,9 +2,8 @@ package bjc.pratt.blocks;
import java.util.function.Predicate;
-import bjc.pratt.ParseBlock;
import bjc.pratt.ParserContext;
-import bjc.pratt.Token;
+import bjc.pratt.tokens.Token;
import bjc.utils.data.ITree;
import bjc.utils.parserutils.ParserException;
diff --git a/JPratt/src/main/java/bjc/pratt/blocks/TriggeredParseBlock.java b/JPratt/src/main/java/bjc/pratt/blocks/TriggeredParseBlock.java
index bb3d6f7..844a4f8 100644
--- a/JPratt/src/main/java/bjc/pratt/blocks/TriggeredParseBlock.java
+++ b/JPratt/src/main/java/bjc/pratt/blocks/TriggeredParseBlock.java
@@ -2,9 +2,8 @@ package bjc.pratt.blocks;
import java.util.function.UnaryOperator;
-import bjc.pratt.ParseBlock;
import bjc.pratt.ParserContext;
-import bjc.pratt.Token;
+import bjc.pratt.tokens.Token;
import bjc.utils.data.ITree;
import bjc.utils.parserutils.ParserException;