diff --git a/src/main/java/com/syncleus/logicparser/Linked.java b/src/main/java/com/syncleus/logicparser/Linked.java
new file mode 100644
index 0000000000000000000000000000000000000000..2591f723ab1b902b67919230ceaca965bcbf964c
--- /dev/null
+++ b/src/main/java/com/syncleus/logicparser/Linked.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright: (c) Syncleus, Inc.
+ *
+ * You may redistribute and modify this source code under the terms and
+ * conditions of the Open Source Community License - Type C version 1.0
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com.
+ * There should be a copy of the license included with this file. If a copy
+ * of the license is not included you are granted no right to distribute or
+ * otherwise use this file except through a legal and valid license. You
+ * should also contact Syncleus, Inc. at the information below if you cannot
+ * find a license:
+ *
+ * Syncleus, Inc.
+ * 2604 South 12th Street
+ * Philadelphia, PA 19148
+ */
+package com.syncleus.logicparser;
+
+public interface Linked<B extends Linked<?,?,?>, A extends Linked<?,?,?>, V> extends NestedString {
+ B getBefore();
+ void setBefore(B before);
+ A getAfter();
+ void setAfter(A after);
+ V getValue();
+ void setValue(V value);
+}
diff --git a/src/main/java/com/syncleus/logicparser/LinkedLogic.java b/src/main/java/com/syncleus/logicparser/LinkedLogic.java
new file mode 100644
index 0000000000000000000000000000000000000000..8771a9475edc54b1f9e8e4ad7e65dabc741616f5
--- /dev/null
+++ b/src/main/java/com/syncleus/logicparser/LinkedLogic.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright: (c) Syncleus, Inc.
+ *
+ * You may redistribute and modify this source code under the terms and
+ * conditions of the Open Source Community License - Type C version 1.0
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com.
+ * There should be a copy of the license included with this file. If a copy
+ * of the license is not included you are granted no right to distribute or
+ * otherwise use this file except through a legal and valid license. You
+ * should also contact Syncleus, Inc. at the information below if you cannot
+ * find a license:
+ *
+ * Syncleus, Inc.
+ * 2604 South 12th Street
+ * Philadelphia, PA 19148
+ */
+package com.syncleus.logicparser;
+
+public class LinkedLogic<B extends Linked<?,?,?>, A extends Linked<?,?,?>, V extends Logic> extends LinkedObject<B,A,V> {
+ public LinkedLogic(final B before, final A after, final V value) {
+ super(before, after, value);
+ }
+
+ @Override
+ public String toBaseString() {
+ return "";
+ }
+
+ @Override
+ public String toString() {
+ return this.getValue().toString();
+ }
+}
diff --git a/src/main/java/com/syncleus/logicparser/LinkedObject.java b/src/main/java/com/syncleus/logicparser/LinkedObject.java
new file mode 100644
index 0000000000000000000000000000000000000000..fd83d8e8550fa418bb989570a43e6f06054995c6
--- /dev/null
+++ b/src/main/java/com/syncleus/logicparser/LinkedObject.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright: (c) Syncleus, Inc.
+ *
+ * You may redistribute and modify this source code under the terms and
+ * conditions of the Open Source Community License - Type C version 1.0
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com.
+ * There should be a copy of the license included with this file. If a copy
+ * of the license is not included you are granted no right to distribute or
+ * otherwise use this file except through a legal and valid license. You
+ * should also contact Syncleus, Inc. at the information below if you cannot
+ * find a license:
+ *
+ * Syncleus, Inc.
+ * 2604 South 12th Street
+ * Philadelphia, PA 19148
+ */
+package com.syncleus.logicparser;
+
+public abstract class LinkedObject<B extends Linked<?,?,?>, A extends Linked<?,?,?>, V> implements Linked<B,A,V> {
+ private B before;
+ private A after;
+ private V value;
+
+ public LinkedObject(final B before, final A after, final V value) {
+ this.before = before;
+ this.after = after;
+ this.value = value;
+ }
+
+ @Override
+ public B getBefore() {
+ return before;
+ }
+
+ @Override
+ public A getAfter() {
+ return after;
+ }
+
+ @Override
+ public V getValue() {
+ return value;
+ }
+
+ @Override
+ public void setBefore(final B before) {
+ this.before = before;
+ }
+
+ @Override
+ public void setAfter(final A after) {
+ this.after = after;
+ }
+
+ @Override
+ public void setValue(final V value) {
+ this.value = value;
+ }
+}
diff --git a/src/main/java/com/syncleus/logicparser/LinkedString.java b/src/main/java/com/syncleus/logicparser/LinkedString.java
new file mode 100644
index 0000000000000000000000000000000000000000..6e04c0d32108b29bed7cf2d61cd01306a2965da7
--- /dev/null
+++ b/src/main/java/com/syncleus/logicparser/LinkedString.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright: (c) Syncleus, Inc.
+ *
+ * You may redistribute and modify this source code under the terms and
+ * conditions of the Open Source Community License - Type C version 1.0
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com.
+ * There should be a copy of the license included with this file. If a copy
+ * of the license is not included you are granted no right to distribute or
+ * otherwise use this file except through a legal and valid license. You
+ * should also contact Syncleus, Inc. at the information below if you cannot
+ * find a license:
+ *
+ * Syncleus, Inc.
+ * 2604 South 12th Street
+ * Philadelphia, PA 19148
+ */
+package com.syncleus.logicparser;
+
+public class LinkedString<B extends Linked<?,?,?>, A extends Linked<?,?,?>> extends LinkedObject<B,A,String> {
+ public LinkedString(final B before, final A after, final String value) {
+ super(before, after, value);
+ }
+
+ @Override
+ public String toBaseString() {
+ return this.getValue();
+ }
+
+ @Override
+ public String toString() {
+ return this.getValue();
+ }
+}
diff --git a/src/main/java/com/syncleus/logicparser/Logic.java b/src/main/java/com/syncleus/logicparser/Logic.java
new file mode 100644
index 0000000000000000000000000000000000000000..196722c5541013323027e1277d3c607f5c9c319c
--- /dev/null
+++ b/src/main/java/com/syncleus/logicparser/Logic.java
@@ -0,0 +1,20 @@
+/**
+ * Copyright: (c) Syncleus, Inc.
+ *
+ * You may redistribute and modify this source code under the terms and
+ * conditions of the Open Source Community License - Type C version 1.0
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com.
+ * There should be a copy of the license included with this file. If a copy
+ * of the license is not included you are granted no right to distribute or
+ * otherwise use this file except through a legal and valid license. You
+ * should also contact Syncleus, Inc. at the information below if you cannot
+ * find a license:
+ *
+ * Syncleus, Inc.
+ * 2604 South 12th Street
+ * Philadelphia, PA 19148
+ */
+package com.syncleus.logicparser;
+
+public interface Logic {
+}
diff --git a/src/main/java/com/syncleus/logicparser/LogicParser.java b/src/main/java/com/syncleus/logicparser/LogicParser.java
index 3d611085a0acd6436f1c19ffd5555e67e4dc79fa..25a03771f9a13cef4e981ec49e018812b3b0e9ef 100644
--- a/src/main/java/com/syncleus/logicparser/LogicParser.java
+++ b/src/main/java/com/syncleus/logicparser/LogicParser.java
@@ -17,4 +17,34 @@
package com.syncleus.logicparser;
public class LogicParser {
+ private final Linked<Linked<?,?,?>,Linked<?,?,?>,?> head;
+
+ public LogicParser(final String logicString) {
+ this.head = new LinkedString<>(null, null, logicString);
+
+ this.parse();
+ }
+
+ private void parse() {
+ }
+
+ private String toBaseString() {
+ Linked<?,?,?> currentLink = this.head;
+ final StringBuilder baseBuilder = new StringBuilder();
+ do {
+ baseBuilder.append(this.head.toBaseString());
+ currentLink = currentLink.getAfter();
+ } while(currentLink != null);
+ return baseBuilder.toString();
+ }
+
+ public String toString() {
+ Linked<?,?,?> currentLink = this.head;
+ final StringBuilder baseBuilder = new StringBuilder();
+ do {
+ baseBuilder.append(this.head.toString());
+ currentLink = currentLink.getAfter();
+ } while(currentLink != null);
+ return baseBuilder.toString();
+ }
}
diff --git a/src/main/java/com/syncleus/logicparser/NestedString.java b/src/main/java/com/syncleus/logicparser/NestedString.java
new file mode 100644
index 0000000000000000000000000000000000000000..73a4492087f11795fe3db82c33cdabed29e25e1b
--- /dev/null
+++ b/src/main/java/com/syncleus/logicparser/NestedString.java
@@ -0,0 +1,21 @@
+/**
+ * Copyright: (c) Syncleus, Inc.
+ *
+ * You may redistribute and modify this source code under the terms and
+ * conditions of the Open Source Community License - Type C version 1.0
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com.
+ * There should be a copy of the license included with this file. If a copy
+ * of the license is not included you are granted no right to distribute or
+ * otherwise use this file except through a legal and valid license. You
+ * should also contact Syncleus, Inc. at the information below if you cannot
+ * find a license:
+ *
+ * Syncleus, Inc.
+ * 2604 South 12th Street
+ * Philadelphia, PA 19148
+ */
+package com.syncleus.logicparser;
+
+public interface NestedString {
+ String toBaseString();
+}