summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Culkin <bjculkin@sitri.goetia>2023-11-16 01:16:37 +0000
committerBenjamin Culkin <bjculkin@sitri.goetia>2023-11-16 01:16:37 +0000
commit696c69d6c32226b57503586a5b0d3fdfa610e41c (patch)
treeb0288dc262fcbf5672bd3998f49e9b30a15f9a20
parent37da63640924937b90ea8c1a6a0c6e7318788ed5 (diff)
Basic parser + evaluator skeletonHEADtrunk
This fleshes out a basic parser w/ a calculator grammar and the skeleton for an evaluator
-rw-r--r--winot/winot-core/.classpath7
-rw-r--r--winot/winot-core/.gitignore1
-rw-r--r--winot/winot-core/.settings/org.eclipse.jdt.core.prefs8
-rw-r--r--winot/winot-core/pom.xml56
-rw-r--r--winot/winot-core/src/main/java/com/ashardalon/winot/core/TokenType.java17
-rw-r--r--winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotApp.java37
-rw-r--r--winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotMainMode.java85
-rw-r--r--winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotValue.java168
-rw-r--r--winot/winot-core/src/main/java/module-info.java2
-rw-r--r--winot/winot-core/tags42
-rw-r--r--winot/winot-core/target/classes/META-INF/MANIFEST.MF9
-rw-r--r--winot/winot-core/target/classes/META-INF/maven/com.ashardalon/winot-core/pom.properties8
-rw-r--r--winot/winot-core/target/classes/META-INF/maven/com.ashardalon/winot-core/pom.xml56
-rw-r--r--winot/winot-core/target/classes/com/ashardalon/winot/core/TokenType.classbin1314 -> 1525 bytes
-rw-r--r--winot/winot-core/target/classes/com/ashardalon/winot/core/WinotApp.classbin4543 -> 5426 bytes
-rw-r--r--winot/winot-core/target/classes/com/ashardalon/winot/core/WinotContext.classbin313 -> 313 bytes
-rw-r--r--winot/winot-core/target/classes/com/ashardalon/winot/core/WinotMainMode.classbin6740 -> 11585 bytes
-rw-r--r--winot/winot-core/target/classes/com/ashardalon/winot/core/package-info.classbin131 -> 131 bytes
-rw-r--r--winot/winot-core/target/classes/module-info.classbin222 -> 222 bytes
19 files changed, 405 insertions, 91 deletions
diff --git a/winot/winot-core/.classpath b/winot/winot-core/.classpath
index b6a7afa..5d2fb8e 100644
--- a/winot/winot-core/.classpath
+++ b/winot/winot-core/.classpath
@@ -9,6 +9,7 @@
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
+ <attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
@@ -22,17 +23,17 @@
<attributes>
<attribute name="test" value="true"/>
<attribute name="maven.pomderived" value="true"/>
+ <attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
- <attribute name="module" value="true"/>
</attributes>
</classpathentry>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
<attributes>
- <attribute name="module" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
diff --git a/winot/winot-core/.gitignore b/winot/winot-core/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/winot/winot-core/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/winot/winot-core/.settings/org.eclipse.jdt.core.prefs b/winot/winot-core/.settings/org.eclipse.jdt.core.prefs
index d089a9b..29fe717 100644
--- a/winot/winot-core/.settings/org.eclipse.jdt.core.prefs
+++ b/winot/winot-core/.settings/org.eclipse.jdt.core.prefs
@@ -1,11 +1,11 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
-org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
-org.eclipse.jdt.core.compiler.release=enabled
-org.eclipse.jdt.core.compiler.source=17
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/winot/winot-core/pom.xml b/winot/winot-core/pom.xml
index 71ac2c5..245bea4 100644
--- a/winot/winot-core/pom.xml
+++ b/winot/winot-core/pom.xml
@@ -1,29 +1,43 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>com.ashardalon</groupId>
- <artifactId>winot</artifactId>
- <version>0.0.1-SNAPSHOT</version>
+ <groupId>com.ashardalon</groupId>
+ <artifactId>winot</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>winot-core</artifactId>
<name>Core for Winot language</name>
- <description>Contains the core for using the Winot language
-</description>
+ <description>
+ Contains the core for using the Winot language
+ </description>
+ <build>
+ <sourceDirectory>src/main/java</sourceDirectory>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.5.1</version>
+ <configuration>
+ <source>11</source>
+ <target>11</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
<dependencies>
- <dependency>
- <groupId>bjc</groupId>
- <artifactId>BJC-Utils2</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>bjc</groupId>
- <artifactId>JPratt</artifactId>
- <version>0.0.2-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>io.github.bculkin2442</groupId>
- <artifactId>esodata</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
+ <dependency>
+ <groupId>bjc</groupId>
+ <artifactId>BJC-Utils2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>bjc</groupId>
+ <artifactId>JPratt</artifactId>
+ <version>0.0.2-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>io.github.bculkin2442</groupId>
+ <artifactId>esodata</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
</dependencies>
-</project> \ No newline at end of file
+</project>
diff --git a/winot/winot-core/src/main/java/com/ashardalon/winot/core/TokenType.java b/winot/winot-core/src/main/java/com/ashardalon/winot/core/TokenType.java
index 5387328..1757be5 100644
--- a/winot/winot-core/src/main/java/com/ashardalon/winot/core/TokenType.java
+++ b/winot/winot-core/src/main/java/com/ashardalon/winot/core/TokenType.java
@@ -12,6 +12,10 @@ public enum TokenType {
*/
TERMINAL,
/**
+ * Result of evaluation
+ */
+ RESULT,
+ /**
* Raw token. Hasn't been fully processed yet
*/
RAW,
@@ -20,6 +24,19 @@ public enum TokenType {
* 'def' special-object initiator
*/
DEF,
+ /**
+ * + operator
+ */
+ ADD,
+ /**
+ * - operator
+ */
+ MINUS,
+ /** / operator */
+ DIVIDE,
+ /** * operator */
+ MULTIPLY,
+
// Represent literals of various types
/**
* Double-quoted string.
diff --git a/winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotApp.java b/winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotApp.java
index 019ce49..fdf0e59 100644
--- a/winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotApp.java
+++ b/winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotApp.java
@@ -2,14 +2,14 @@ package com.ashardalon.winot.core;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
+import java.util.HashMap;
+import java.util.Map;
import bjc.data.*;
import bjc.pratt.*;
-import bjc.pratt.commands.InitialCommand;
import bjc.pratt.commands.impls.InitialCommands;
-import bjc.pratt.tokens.*;
+import bjc.pratt.commands.impls.NonInitialCommands;
import bjc.utils.cli.StreamTerminal;
-import bjc.utils.parserutils.*;
import bjc.utils.parserutils.splitter.*;
/**
@@ -24,17 +24,30 @@ public class WinotApp {
* @param args Currently unused CLI args
*/
public static void main(String[] args) {
+ Map<String, TokenType> operators = new HashMap<>();
+
+ operators.put("def", TokenType.DEF);
+
+ operators.put("+", TokenType.ADD);
+ operators.put("*", TokenType.MULTIPLY);
+ operators.put("-", TokenType.MINUS);
+ operators.put("/", TokenType.DIVIDE);
+
ConfigurableTokenSplitter baseSplitter = new ConfigurableTokenSplitter(true);
- baseSplitter.addMultiDelimiters(" ");
+
+ //baseSplitter.addMultiDelimiters(" ");
+
+ baseSplitter.addSimpleDelimiters("+", "-", "*", "/");
+
baseSplitter.compile();
ExcludingTokenSplitter exclSplitter = new ExcludingTokenSplitter(baseSplitter);
- FilteredTokenSplitter filtSplitter = new FilteredTokenSplitter(exclSplitter, (tok) -> !tok.equals(""));
+ FilteredTokenSplitter filtSplitter = new FilteredTokenSplitter(exclSplitter, (tok) -> !tok.equals("") || !tok.equals(" "));
WinotContext state = new WinotContext();
- PrattParser<TokenType, String, WinotContext> parser = new PrattParser<>();
+ PrattParser<TokenType, WinotValue, WinotContext> parser = new PrattParser<>();
parser.addInitialCommand(TokenType.LITERAL, InitialCommands.leaf());
parser.addInitialCommand(TokenType.DQ_STR, InitialCommands.leaf());
@@ -42,14 +55,20 @@ public class WinotApp {
// using 'var' because otherwise the type is some 40+ characters involving repeating the command type twice
// Also, have to specify args to 'branch' since the compiler can't guess them otherwise
- var defBuilder = InitialCommands.<TokenType, String, WinotContext>branch();
- InitialCommand<TokenType, String, WinotContext> defCommand = defBuilder.add(TokenType.DEF, null).build();
+ var defBuilder = InitialCommands.<TokenType, WinotValue, WinotContext>branch();
+ var defCommand = defBuilder.add(TokenType.DEF, null).build();
parser.addInitialCommand(TokenType.DEF, defCommand);
+
+ parser.addNonInitialCommand(TokenType.ADD, NonInitialCommands.infixLeft(10));
+ parser.addNonInitialCommand(TokenType.MINUS, NonInitialCommands.infixLeft(10));
+ parser.addNonInitialCommand(TokenType.MULTIPLY, NonInitialCommands.infixLeft(11));
+ parser.addNonInitialCommand(TokenType.DIVIDE, NonInitialCommands.infixLeft(11));
StreamTerminal terminal = new StreamTerminal(new InputStreamReader(System.in),
new OutputStreamWriter(System.out), "/", null);
IntHolder comNo = new IntHolder();
- terminal.setMode(new WinotMainMode(terminal, comNo, parser, state, filtSplitter));
+ WinotMainMode mode = new WinotMainMode(terminal, comNo, parser, state, filtSplitter, operators);
+ terminal.setMode(mode);
terminal.addOutput("0 > ");
terminal.run();
diff --git a/winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotMainMode.java b/winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotMainMode.java
index ce8b9ef..1b520df 100644
--- a/winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotMainMode.java
+++ b/winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotMainMode.java
@@ -2,12 +2,15 @@ package com.ashardalon.winot.core;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import bjc.data.*;
+import bjc.funcdata.ListEx;
import bjc.pratt.PrattParser;
import bjc.pratt.commands.CommandResult;
+import bjc.pratt.commands.CommandResult.Status;
import bjc.pratt.tokens.*;
import bjc.utils.cli.StreamTerminal;
import bjc.utils.parserutils.ParserException;
@@ -17,19 +20,21 @@ import bjc.utils.parserutils.splitter.FilteredTokenSplitter;
final class WinotMainMode implements Consumer<String> {
private final StreamTerminal terminal;
private final IntHolder comNo;
- private final PrattParser<TokenType, String, WinotContext> parser;
+ private final PrattParser<TokenType, WinotValue, WinotContext> parser;
private final WinotContext state;
private final FilteredTokenSplitter filtSplitter;
+ private final Map<String, TokenType> operators;
- WinotMainMode(StreamTerminal terminal, IntHolder comNo, PrattParser<TokenType, String, WinotContext> parser,
- WinotContext state, FilteredTokenSplitter filtSplitter) {
+ WinotMainMode(StreamTerminal terminal, IntHolder comNo, PrattParser<TokenType, WinotValue, WinotContext> parser,
+ WinotContext state, FilteredTokenSplitter filtSplitter, Map<String, TokenType> operators) {
this.terminal = terminal;
this.comNo = comNo;
this.parser = parser;
this.state = state;
this.filtSplitter = filtSplitter;
+ this.operators = operators;
}
-
+
@Override
public void accept(String str) {
List<String> rawTokens = TokenUtils.removeDQuotedStrings(str);
@@ -37,31 +42,65 @@ final class WinotMainMode implements Consumer<String> {
Function<String, Token<TokenType, String>> tokenzer = (strang) -> {
return new SimpleToken<>(strToggle.get(), strang);
};
- TransformIterator<String,
- Token<TokenType, String>> rawItr = new TransformIterator<>(rawTokens.iterator(), tokenzer);
- FlatMapIterator<Token<TokenType, String>,
- Token<TokenType, String>> mapItr = new FlatMapIterator<>(rawItr, (tok) -> {
- if (tok.getKey() == TokenType.RAW) {
- Iterator<String> tknItr = filtSplitter.split(tok.getValue()).toIterable().iterator();
- Function<String, Token<TokenType, String>> literizer = (tokn) -> {
- return new SimpleToken<>(TokenType.LITERAL, tokn);
- };
- TransformIterator<String,
- Token<TokenType, String>> transf = new TransformIterator<>(tknItr, literizer);
- return transf;
- }
- return new SingleIterator<>(tok);
- });
- SimpleTokenStream<TokenType,
- String> sts = new SimpleTokenStream<>(mapItr, new SimpleToken<>(TokenType.TERMINAL, ""));
+ var rawItr = new TransformIterator<String, Token<TokenType, String>>(rawTokens.iterator(), tokenzer);
+ var mapItr = new FlatMapIterator<Token<TokenType, String>, Token<TokenType, WinotValue>>(rawItr, this::toLiteral);
+ var sts = new SimpleTokenStream<TokenType, WinotValue>(mapItr, new SimpleToken<>(TokenType.TERMINAL, WinotValue.EMPTY));
try {
// Prime token stream
sts.next();
- CommandResult<TokenType, String> result = parser.parseExpression(0, sts, state, true);
- terminal.addOutput(result.toString() + "\n");
+ CommandResult<TokenType, WinotValue> result = parser.parseExpression(0, sts, state, true);
+ terminal.addOutput("Parsed:\n" + result.toString() + "\n");
+ if (result.status == Status.SUCCESS) {
+ var evalRes = result.success().topDownTransform((tok) -> {
+ // Default to evaluating bottom up
+ return TopDownTransformResult.PUSHDOWN;
+ }, (tree) -> {
+ Token<TokenType,WinotValue> head = tree.getHead();
+ switch (head.getKey()) {
+ case LITERAL:
+ SimpleToken<TokenType, WinotValue> res = new SimpleToken<>(TokenType.RESULT, head.getValue());
+ return new SimpleTree<>(res);
+ default:
+ throw new UnsupportedOperationException("Unsupport eval token: " + head.getKey());
+ }
+ });
+ terminal.addOutput("Evaluated to: " + evalRes);
+ }
+ if (sts.hasNext()) {
+ terminal.addOutput("Remaining tokens:\n");
+ sts.forEachRemaining((tok) -> {
+ terminal.addOutput("\t" + tok.toString() + "\n");
+ });
+ }
} catch (ParserException pex) {
terminal.addOutput(pex.toString() + "\n");
}
terminal.addOutput(String.format("%d > ", comNo.incr()));
}
+
+ private Iterator<Token<TokenType, WinotValue>> toLiteral(Token<TokenType, String> tok) {
+ if (tok.getKey() == TokenType.RAW) {
+ ListEx<String> splist = filtSplitter.split(tok.getValue());
+ Iterator<String> tknItr = splist.toIterable().iterator();
+ TransformIterator<String, String> splitr;
+ splitr = new TransformIterator<String, String>(tknItr, String::trim);
+
+ Function<String, Token<TokenType, WinotValue>> literizer;
+ literizer = (tokn) -> {
+ if (operators.containsKey(tokn)) {
+ return new SimpleToken<>(operators.get(tokn), WinotValue.EMPTY);
+ } else if (tokn.matches("\\d+")) {
+ WinotValue intVal = WinotValue.integer(Integer.parseInt(tokn));
+ return new SimpleToken<>(TokenType.LITERAL, intVal);
+ } else if (TokenUtils.isDouble(tokn)) {
+ WinotValue doubleVal = WinotValue.fpLit(Double.parseDouble(tokn));
+ return new SimpleToken<>(TokenType.LITERAL, doubleVal);
+ }
+ return new SimpleToken<>(TokenType.LITERAL, WinotValue.string(tokn));
+ };
+ var transf = new TransformIterator<String, Token<TokenType, WinotValue>>(splitr, literizer);
+ return transf;
+ }
+ return new SingleIterator<>(new SimpleToken<>(tok.getKey(), WinotValue.string(tok.getValue())));
+ }
} \ No newline at end of file
diff --git a/winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotValue.java b/winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotValue.java
new file mode 100644
index 0000000..79b57e9
--- /dev/null
+++ b/winot/winot-core/src/main/java/com/ashardalon/winot/core/WinotValue.java
@@ -0,0 +1,168 @@
+package com.ashardalon.winot.core;
+
+import java.util.Objects;
+
+public class WinotValue {
+ public enum Type {
+ /**
+ * A value that contains nothing
+ */
+ EMPTY,
+ /**
+ * A string
+ */
+ STRING,
+ /**
+ * An int
+ */
+ INT,
+ /**
+ * A double
+ */
+ DOUBLE
+ }
+
+ public static final class IntegerWinotValue extends WinotValue {
+ public int val;
+
+ public IntegerWinotValue(int val) {
+ super(Type.INT);
+ this.val = val;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(val);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ IntegerWinotValue other = (IntegerWinotValue) obj;
+ return val == other.val;
+ }
+
+ @Override
+ public String toString() {
+ return "IntegerWinotValue [val=" + val + "]";
+ }
+ }
+
+ public static final class DoubleWinotValue extends WinotValue {
+ public double val;
+
+ public DoubleWinotValue(double val) {
+ super(Type.DOUBLE);
+ this.val = val;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(val);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ DoubleWinotValue other = (DoubleWinotValue) obj;
+ return Double.doubleToLongBits(val) == Double.doubleToLongBits(other.val);
+ }
+
+ @Override
+ public String toString() {
+ return "DoubleWinotValue [val=" + val + "]";
+ }
+ }
+
+ public static class TerminalWinotValue extends WinotValue {
+ public TerminalWinotValue() {
+ super(Type.EMPTY);
+ }
+
+ @Override
+ public String toString() {
+ return "TerminalWinotValue []";
+ }
+ }
+
+ public static class StringWinotValue extends WinotValue {
+ private String val;
+
+ public StringWinotValue(String val) {
+ super(Type.STRING);
+ this.val = val;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(val);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ StringWinotValue other = (StringWinotValue) obj;
+ return Objects.equals(val, other.val);
+ }
+
+ @Override
+ public String toString() {
+ return "StringWinotValue [val=" + val + "]";
+ }
+ }
+
+ public final Type type;
+
+ protected WinotValue(Type typ) {
+ this.type = typ;
+ }
+
+ public static WinotValue EMPTY = new TerminalWinotValue();
+
+
+ public static WinotValue string(String val) {
+ return new StringWinotValue(val);
+ }
+
+
+ public static WinotValue integer(int val) {
+ return new IntegerWinotValue(val);
+ }
+
+ public static WinotValue fpLit(double val) {
+ return new DoubleWinotValue(val);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(type);
+ }
+
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ WinotValue other = (WinotValue) obj;
+ return type == other.type;
+ }
+} \ No newline at end of file
diff --git a/winot/winot-core/src/main/java/module-info.java b/winot/winot-core/src/main/java/module-info.java
index 96194a7..c0addf7 100644
--- a/winot/winot-core/src/main/java/module-info.java
+++ b/winot/winot-core/src/main/java/module-info.java
@@ -5,6 +5,6 @@
*/
module com.ashardalon.winot.core {
requires bjc.utils;
- requires jpratt;
requires esodata;
+ requires jpratt;
} \ No newline at end of file
diff --git a/winot/winot-core/tags b/winot/winot-core/tags
new file mode 100644
index 0000000..3cdfe0e
--- /dev/null
+++ b/winot/winot-core/tags
@@ -0,0 +1,42 @@
+!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
+!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
+!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
+!_TAG_PROGRAM_NAME Exuberant Ctags //
+!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
+!_TAG_PROGRAM_VERSION 5.8 //
+DEF src/main/java/com/ashardalon/winot/core/TokenType.java /^ DEF,$/;" e enum:TokenType file:
+DQ_STR src/main/java/com/ashardalon/winot/core/TokenType.java /^ DQ_STR,$/;" e enum:TokenType file:
+EMPTY src/main/java/com/ashardalon/winot/core/WinotValue.java /^ EMPTY,$/;" e enum:WinotValue.Type file:
+EMPTY src/main/java/com/ashardalon/winot/core/WinotValue.java /^ public static WinotValue EMPTY = new TerminalWinotValue();$/;" f class:WinotValue
+LITERAL src/main/java/com/ashardalon/winot/core/TokenType.java /^ LITERAL$/;" e enum:TokenType file:
+RAW src/main/java/com/ashardalon/winot/core/TokenType.java /^ RAW,$/;" e enum:TokenType file:
+STRING src/main/java/com/ashardalon/winot/core/WinotValue.java /^ STRING$/;" e enum:WinotValue.Type file:
+StringWinotValue src/main/java/com/ashardalon/winot/core/WinotValue.java /^ public StringWinotValue(String val) {$/;" m class:WinotValue.StringWinotValue
+StringWinotValue src/main/java/com/ashardalon/winot/core/WinotValue.java /^ public static class StringWinotValue extends WinotValue {$/;" c class:WinotValue
+TERMINAL src/main/java/com/ashardalon/winot/core/TokenType.java /^ TERMINAL,$/;" e enum:TokenType file:
+TerminalWinotValue src/main/java/com/ashardalon/winot/core/WinotValue.java /^ public TerminalWinotValue() {$/;" m class:WinotValue.TerminalWinotValue
+TerminalWinotValue src/main/java/com/ashardalon/winot/core/WinotValue.java /^ public static class TerminalWinotValue extends WinotValue {$/;" c class:WinotValue
+TokenType src/main/java/com/ashardalon/winot/core/TokenType.java /^public enum TokenType {$/;" g
+Type src/main/java/com/ashardalon/winot/core/WinotValue.java /^ public enum Type {$/;" g class:WinotValue
+WinotApp src/main/java/com/ashardalon/winot/core/WinotApp.java /^public class WinotApp {$/;" c
+WinotContext src/main/java/com/ashardalon/winot/core/WinotContext.java /^public class WinotContext {$/;" c
+WinotMainMode src/main/java/com/ashardalon/winot/core/WinotMainMode.java /^ WinotMainMode(StreamTerminal terminal, IntHolder comNo, PrattParser<TokenType, WinotValue, WinotContext> parser,$/;" m class:WinotMainMode
+WinotMainMode src/main/java/com/ashardalon/winot/core/WinotMainMode.java /^final class WinotMainMode implements Consumer<String> {$/;" c
+WinotValue src/main/java/com/ashardalon/winot/core/WinotValue.java /^public class WinotValue {$/;" c
+accept src/main/java/com/ashardalon/winot/core/WinotMainMode.java /^ public void accept(String str) {$/;" m class:WinotMainMode
+com.ashardalon.winot.core src/main/java/com/ashardalon/winot/core/TokenType.java /^package com.ashardalon.winot.core;$/;" p
+com.ashardalon.winot.core src/main/java/com/ashardalon/winot/core/WinotApp.java /^package com.ashardalon.winot.core;$/;" p
+com.ashardalon.winot.core src/main/java/com/ashardalon/winot/core/WinotContext.java /^package com.ashardalon.winot.core;$/;" p
+com.ashardalon.winot.core src/main/java/com/ashardalon/winot/core/WinotMainMode.java /^package com.ashardalon.winot.core;$/;" p
+com.ashardalon.winot.core src/main/java/com/ashardalon/winot/core/WinotValue.java /^package com.ashardalon.winot.core;$/;" p
+com.ashardalon.winot.core src/main/java/com/ashardalon/winot/core/package-info.java /^package com.ashardalon.winot.core;/;" p
+comNo src/main/java/com/ashardalon/winot/core/WinotMainMode.java /^ private final IntHolder comNo;$/;" f class:WinotMainMode file:
+equals src/main/java/com/ashardalon/winot/core/WinotValue.java /^ public boolean equals(Object obj) {$/;" m class:WinotValue.StringWinotValue
+filtSplitter src/main/java/com/ashardalon/winot/core/WinotMainMode.java /^ private final FilteredTokenSplitter filtSplitter;$/;" f class:WinotMainMode file:
+hashCode src/main/java/com/ashardalon/winot/core/WinotValue.java /^ public int hashCode() {$/;" m class:WinotValue.StringWinotValue
+main src/main/java/com/ashardalon/winot/core/WinotApp.java /^ public static void main(String[] args) {$/;" m class:WinotApp
+parser src/main/java/com/ashardalon/winot/core/WinotMainMode.java /^ private final PrattParser<TokenType, WinotValue, WinotContext> parser;$/;" f class:WinotMainMode file:
+state src/main/java/com/ashardalon/winot/core/WinotMainMode.java /^ private final WinotContext state;$/;" f class:WinotMainMode file:
+string src/main/java/com/ashardalon/winot/core/WinotValue.java /^ public static WinotValue string(String val) {$/;" m class:WinotValue
+terminal src/main/java/com/ashardalon/winot/core/WinotMainMode.java /^ private final StreamTerminal terminal;$/;" f class:WinotMainMode file:
+val src/main/java/com/ashardalon/winot/core/WinotValue.java /^ private String val;$/;" f class:WinotValue.StringWinotValue file:
diff --git a/winot/winot-core/target/classes/META-INF/MANIFEST.MF b/winot/winot-core/target/classes/META-INF/MANIFEST.MF
index 0276670..b087487 100644
--- a/winot/winot-core/target/classes/META-INF/MANIFEST.MF
+++ b/winot/winot-core/target/classes/META-INF/MANIFEST.MF
@@ -1,5 +1,4 @@
-Manifest-Version: 1.0
-Built-By: bjcul
-Build-Jdk: 18.0.1
-Created-By: Maven Integration for Eclipse
-
+Manifest-Version: 1.0
+Build-Jdk-Spec: 17
+Created-By: Maven Integration for Eclipse
+
diff --git a/winot/winot-core/target/classes/META-INF/maven/com.ashardalon/winot-core/pom.properties b/winot/winot-core/target/classes/META-INF/maven/com.ashardalon/winot-core/pom.properties
index 242b22b..3c453f4 100644
--- a/winot/winot-core/target/classes/META-INF/maven/com.ashardalon/winot-core/pom.properties
+++ b/winot/winot-core/target/classes/META-INF/maven/com.ashardalon/winot-core/pom.properties
@@ -1,7 +1,7 @@
#Generated by Maven Integration for Eclipse
-#Wed Oct 25 19:34:06 EDT 2023
-artifactId=winot-core
-groupId=com.ashardalon
-m2e.projectLocation=C\:\\Users\\bjcul\\eclipse-workspace\\winot\\winot-core
+#Wed Nov 15 23:55:36 GMT 2023
+m2e.projectLocation=/home/bjculkin/projects/winot/winot/winot-core
m2e.projectName=winot-core
+groupId=com.ashardalon
+artifactId=winot-core
version=0.0.1-SNAPSHOT
diff --git a/winot/winot-core/target/classes/META-INF/maven/com.ashardalon/winot-core/pom.xml b/winot/winot-core/target/classes/META-INF/maven/com.ashardalon/winot-core/pom.xml
index 71ac2c5..245bea4 100644
--- a/winot/winot-core/target/classes/META-INF/maven/com.ashardalon/winot-core/pom.xml
+++ b/winot/winot-core/target/classes/META-INF/maven/com.ashardalon/winot-core/pom.xml
@@ -1,29 +1,43 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>com.ashardalon</groupId>
- <artifactId>winot</artifactId>
- <version>0.0.1-SNAPSHOT</version>
+ <groupId>com.ashardalon</groupId>
+ <artifactId>winot</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>winot-core</artifactId>
<name>Core for Winot language</name>
- <description>Contains the core for using the Winot language
-</description>
+ <description>
+ Contains the core for using the Winot language
+ </description>
+ <build>
+ <sourceDirectory>src/main/java</sourceDirectory>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.5.1</version>
+ <configuration>
+ <source>11</source>
+ <target>11</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
<dependencies>
- <dependency>
- <groupId>bjc</groupId>
- <artifactId>BJC-Utils2</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>bjc</groupId>
- <artifactId>JPratt</artifactId>
- <version>0.0.2-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>io.github.bculkin2442</groupId>
- <artifactId>esodata</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
+ <dependency>
+ <groupId>bjc</groupId>
+ <artifactId>BJC-Utils2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>bjc</groupId>
+ <artifactId>JPratt</artifactId>
+ <version>0.0.2-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>io.github.bculkin2442</groupId>
+ <artifactId>esodata</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
</dependencies>
-</project> \ No newline at end of file
+</project>
diff --git a/winot/winot-core/target/classes/com/ashardalon/winot/core/TokenType.class b/winot/winot-core/target/classes/com/ashardalon/winot/core/TokenType.class
index cd5d9e7..bfe59f6 100644
--- a/winot/winot-core/target/classes/com/ashardalon/winot/core/TokenType.class
+++ b/winot/winot-core/target/classes/com/ashardalon/winot/core/TokenType.class
Binary files differ
diff --git a/winot/winot-core/target/classes/com/ashardalon/winot/core/WinotApp.class b/winot/winot-core/target/classes/com/ashardalon/winot/core/WinotApp.class
index a2fc97d..1c64ce6 100644
--- a/winot/winot-core/target/classes/com/ashardalon/winot/core/WinotApp.class
+++ b/winot/winot-core/target/classes/com/ashardalon/winot/core/WinotApp.class
Binary files differ
diff --git a/winot/winot-core/target/classes/com/ashardalon/winot/core/WinotContext.class b/winot/winot-core/target/classes/com/ashardalon/winot/core/WinotContext.class
index 15ae22b..6dc99a6 100644
--- a/winot/winot-core/target/classes/com/ashardalon/winot/core/WinotContext.class
+++ b/winot/winot-core/target/classes/com/ashardalon/winot/core/WinotContext.class
Binary files differ
diff --git a/winot/winot-core/target/classes/com/ashardalon/winot/core/WinotMainMode.class b/winot/winot-core/target/classes/com/ashardalon/winot/core/WinotMainMode.class
index 90a0570..b479652 100644
--- a/winot/winot-core/target/classes/com/ashardalon/winot/core/WinotMainMode.class
+++ b/winot/winot-core/target/classes/com/ashardalon/winot/core/WinotMainMode.class
Binary files differ
diff --git a/winot/winot-core/target/classes/com/ashardalon/winot/core/package-info.class b/winot/winot-core/target/classes/com/ashardalon/winot/core/package-info.class
index 54aba6e..2f38b09 100644
--- a/winot/winot-core/target/classes/com/ashardalon/winot/core/package-info.class
+++ b/winot/winot-core/target/classes/com/ashardalon/winot/core/package-info.class
Binary files differ
diff --git a/winot/winot-core/target/classes/module-info.class b/winot/winot-core/target/classes/module-info.class
index 254dd2c..a73931e 100644
--- a/winot/winot-core/target/classes/module-info.class
+++ b/winot/winot-core/target/classes/module-info.class
Binary files differ