getSyntaxErrorInfos() {
- return syntaxErrors;
- }
-}
diff --git a/src/main/java/org/editor/events/AccessEvents.java b/src/main/java/org/editor/events/AccessEvents.java
index ed7b049..5b2f6da 100644
--- a/src/main/java/org/editor/events/AccessEvents.java
+++ b/src/main/java/org/editor/events/AccessEvents.java
@@ -1,9 +1,14 @@
package org.editor.events;
import java.awt.event.ActionEvent;
+import java.util.List;
import org.editor.AccessFrame;
+import org.editor.CanvasFrame;
import org.editor.EditorWindow;
+import org.piccode.ast.Ast;
import org.piccode.backend.Compiler;
+import org.piccode.piccodescript.ErrorAsciiKind;
+import org.piccode.rt.PiccodeException;
/**
*
@@ -16,18 +21,34 @@ public static void compileAndRender(ActionEvent e) {
if (ed == null) {
return;
}
- var code = ed.textArea.getText();
+
+ if (ed.file == null) {
+ EditorWindow.current_file.setText("Cannot compiler unsaved code");
+ return;
+ }
+
+ var file = ed.file.toString();
+ var code = ed.textArea.getText();
+ CanvasFrame.file = file;
+ CanvasFrame.code = code;
+ CanvasFrame.start = true;
AccessFrame.writeSuccess("Compilation started: ");
- Compiler.compile(code, true);
}
-
+
public static void compile(ActionEvent e) {
var ed = EditorWindow.getSelectedEditor();
if (ed == null) {
return;
}
- var code = ed.textArea.getText();
+
+ if (ed.file == null) {
+ EditorWindow.current_file.setText("Cannot compiler unsaved code");
+ return;
+ }
+
+ var code = ed.textArea.getText();
AccessFrame.writeSuccess("Compilation started: ");
- Compiler.compile(code, false);
+ Compiler.out = AccessFrame.AccessFrameOutputStream.out;
}
+
}
diff --git a/src/main/java/org/editor/events/Actions.java b/src/main/java/org/editor/events/Actions.java
index d521bea..ab726c7 100644
--- a/src/main/java/org/editor/events/Actions.java
+++ b/src/main/java/org/editor/events/Actions.java
@@ -119,7 +119,7 @@ public static void loadActions() {
.icon("add-file")
.tooltip("Create a new file")
.shortcut("control N")
- .handler(e -> It.todo())
+ .handler(MenuEvents::newFile)
.build();
openProjectAction
diff --git a/src/main/java/org/editor/events/MenuEvents.java b/src/main/java/org/editor/events/MenuEvents.java
index 58b96c9..3b04f33 100644
--- a/src/main/java/org/editor/events/MenuEvents.java
+++ b/src/main/java/org/editor/events/MenuEvents.java
@@ -132,4 +132,9 @@ static void quit(ActionEvent e) {
closeAllTabs(e);
System.exit(0);
}
+
+ static void newFile(ActionEvent e) {
+ // TODO: Use a file creator dialog in the future
+ EditorWindow.addTab(e);
+ }
}
diff --git a/src/main/java/org/editor/icons/Icons.java b/src/main/java/org/editor/icons/Icons.java
index a97f1ee..2d0e3a4 100644
--- a/src/main/java/org/editor/icons/Icons.java
+++ b/src/main/java/org/editor/icons/Icons.java
@@ -54,6 +54,7 @@ public class Icons {
"license",
"line",
"logout",
+ "markdown",
"navigation-toolbar-bottom",
"navigation-toolbar-left",
"navigation-toolbar-top",
diff --git a/src/main/java/org/editor/panels/FileTreePanel.java b/src/main/java/org/editor/panels/FileTreePanel.java
new file mode 100644
index 0000000..3aae322
--- /dev/null
+++ b/src/main/java/org/editor/panels/FileTreePanel.java
@@ -0,0 +1,100 @@
+package org.editor.panels;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.io.File;
+import javax.swing.Icon;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.DefaultTreeModel;
+import org.editor.icons.Icons;
+
+/**
+ *
+ * @author hexaredecimal
+ */
+public class FileTreePanel extends DockablePanel {
+
+ public JTree file_tree;
+
+ public FileTreePanel() {
+ super(new BorderLayout(), "files", "files", "File listing (cwd)", "folder-tree");
+
+ file_tree = new JTree();
+ file_tree.setCellRenderer(new FileTreeCellRenderer());
+ file_tree.putClientProperty("JTree.showLines", Boolean.TRUE);
+ file_tree.putClientProperty("JTree.lineStyle", "Angled");
+ //file_tree.setRowHeight(24); // or a reasonable number depending on your font size
+
+ loadDirectory(System.getProperty("user.dir"));
+
+ this.add(file_tree, BorderLayout.CENTER);
+ }
+
+ private void loadDirectory(String file) {
+ File fp = new File(file);
+ if (!fp.exists()) {
+ System.err.println("error: " + file + " does not extit");
+ return;
+ }
+
+ if (fp.isFile()) {
+ return;
+ }
+
+ if (fp.isDirectory()) {
+ DefaultTreeModel model = (DefaultTreeModel) file_tree.getModel();
+ DefaultMutableTreeNode top = new DefaultMutableTreeNode(fp);
+ model.setRoot(top);
+ file_tree.setModel(model);
+ createNodes(top, fp);
+ }
+ }
+
+ private void createNodes(DefaultMutableTreeNode top, File fp) {
+ File[] files = fp.listFiles();
+
+ for (File file : files) {
+ if (file.isFile()) {
+ DefaultMutableTreeNode f = new DefaultMutableTreeNode(file);
+ top.add(f);
+ } else {
+ DefaultMutableTreeNode dir = new DefaultMutableTreeNode(file);
+ createNodes(dir, file);
+ top.add(dir);
+ }
+ }
+ }
+
+ class FileTreeCellRenderer extends DefaultTreeCellRenderer {
+
+ @Override
+ public Component getTreeCellRendererComponent(JTree tree, Object value,
+ boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
+
+ super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
+
+ DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
+ Object userObject = node.getUserObject();
+
+ if (userObject instanceof File file) {
+ if (file.isDirectory() && file.getName().equals("src")) {
+ setIcon(Icons.getIcon("code-folder"));
+ } else if (file.isDirectory()) {
+ setIcon(Icons.getIcon("folder"));
+ } else if (file.getName().endsWith(".pics")) {
+ setIcon(Icons.getIcon("code-file"));
+ } else if (file.getName().endsWith(".md")) {
+ setIcon(Icons.getIcon("markdown"));
+ } else {
+ setIcon(Icons.getIcon("file"));
+ }
+ setText(file.getName());
+ }
+
+ return this;
+ }
+ }
+
+}
diff --git a/src/main/java/org/editor/panels/PluginsPanel.java b/src/main/java/org/editor/panels/PluginsPanel.java
new file mode 100644
index 0000000..0013be2
--- /dev/null
+++ b/src/main/java/org/editor/panels/PluginsPanel.java
@@ -0,0 +1,17 @@
+package org.editor.panels;
+
+import java.awt.BorderLayout;
+
+/**
+ *
+ * @author hexaredecimal
+ */
+public class PluginsPanel extends DockablePanel {
+
+
+ public PluginsPanel() {
+ super(new BorderLayout(), "Plugins", "Plugins", "Browse community plugins", "plugin");
+ // TODO: Implement the code
+ }
+
+}
diff --git a/src/main/java/org/editor/panels/VCPanel.java b/src/main/java/org/editor/panels/VCPanel.java
new file mode 100644
index 0000000..5353c1b
--- /dev/null
+++ b/src/main/java/org/editor/panels/VCPanel.java
@@ -0,0 +1,17 @@
+package org.editor.panels;
+
+import java.awt.BorderLayout;
+
+/**
+ *
+ * @author hexaredecimal
+ */
+public class VCPanel extends DockablePanel {
+
+
+ public VCPanel() {
+ super(new BorderLayout(), "Git", "Git", "Use version control", "compare-git");
+ // TODO: Implement the code
+ }
+
+}
diff --git a/src/main/java/org/piccode/antlr4/PiccodeScript.interp b/src/main/java/org/piccode/antlr4/PiccodeScript.interp
deleted file mode 100644
index 6b0ec03..0000000
--- a/src/main/java/org/piccode/antlr4/PiccodeScript.interp
+++ /dev/null
@@ -1,132 +0,0 @@
-token literal names:
-null
-'+'
-'-'
-'*'
-'/'
-'>'
-'>='
-'<'
-'<='
-'=='
-'!='
-'&&'
-'||'
-'>>'
-'<<'
-'&'
-'|'
-'!'
-'|>'
-'{'
-'}'
-'('
-')'
-'['
-']'
-':'
-','
-';'
-'->'
-'~'
-'='
-'let'
-'function'
-'when'
-'import'
-'is'
-'if'
-'else'
-'module'
-'do'
-null
-null
-'.'
-null
-null
-null
-null
-
-token symbolic names:
-null
-ADD
-SUB
-MUL
-DIV
-GT
-GE
-LT
-LE
-EQ
-NE
-AND
-OR
-SHL
-SHR
-BAND
-BOR
-EXCLAIM
-PIPE
-LBRACE
-RBRACE
-LPAREN
-RPAREN
-LBRACKET
-RBRACKET
-COLON
-COMMA
-SEMI
-ARROW
-TILDE
-ASSIGN
-LET
-FUNCTION
-WHEN
-IMPORT
-IS
-IF
-ELSE
-MODULE
-DO
-NUMBER
-STRING
-DOT
-LINE_COMMENT
-BLOCK_COMMENT
-ID
-WS
-
-rule names:
-stmts
-stmt
-import_module
-module
-module_stmts
-module_stmt
-func
-func_args
-arg_list
-arg
-literal_expr
-expr_stmt
-expr
-unary
-if_expr
-when_expr
-when_cases
-when_case
-else_case
-var_decl
-tuple
-array
-object
-expr_list
-call_expr_list
-call_expr
-key_val_pair
-key_val_pairs
-do_expr
-
-
-atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 48, 331, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 3, 2, 7, 2, 62, 10, 2, 12, 2, 14, 2, 65, 11, 2, 3, 2, 5, 2, 68, 10, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 74, 10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 7, 6, 88, 10, 6, 12, 6, 14, 6, 91, 11, 6, 3, 7, 3, 7, 3, 7, 5, 7, 96, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 5, 9, 106, 10, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 7, 10, 113, 10, 10, 12, 10, 14, 10, 116, 11, 10, 3, 11, 3, 11, 3, 11, 5, 11, 121, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 128, 10, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 136, 10, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 149, 10, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 214, 10, 14, 3, 14, 7, 14, 217, 10, 14, 12, 14, 14, 14, 220, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 230, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 5, 17, 247, 10, 17, 3, 17, 3, 17, 3, 18, 7, 18, 252, 10, 18, 12, 18, 14, 18, 255, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 5, 23, 277, 10, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 7, 25, 288, 10, 25, 12, 25, 14, 25, 291, 11, 25, 3, 26, 3, 26, 3, 26, 7, 26, 296, 10, 26, 12, 26, 14, 26, 299, 11, 26, 3, 27, 3, 27, 3, 27, 5, 27, 304, 10, 27, 3, 27, 5, 27, 307, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 7, 29, 316, 10, 29, 12, 29, 14, 29, 319, 11, 29, 3, 30, 3, 30, 3, 30, 7, 30, 324, 10, 30, 12, 30, 14, 30, 327, 11, 30, 3, 30, 3, 30, 3, 30, 2, 3, 26, 31, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 2, 2, 2, 362, 2, 67, 3, 2, 2, 2, 4, 73, 3, 2, 2, 2, 6, 75, 3, 2, 2, 2, 8, 80, 3, 2, 2, 2, 10, 89, 3, 2, 2, 2, 12, 95, 3, 2, 2, 2, 14, 97, 3, 2, 2, 2, 16, 103, 3, 2, 2, 2, 18, 109, 3, 2, 2, 2, 20, 117, 3, 2, 2, 2, 22, 127, 3, 2, 2, 2, 24, 129, 3, 2, 2, 2, 26, 148, 3, 2, 2, 2, 28, 229, 3, 2, 2, 2, 30, 231, 3, 2, 2, 2, 32, 241, 3, 2, 2, 2, 34, 253, 3, 2, 2, 2, 36, 256, 3, 2, 2, 2, 38, 261, 3, 2, 2, 2, 40, 265, 3, 2, 2, 2, 42, 270, 3, 2, 2, 2, 44, 274, 3, 2, 2, 2, 46, 280, 3, 2, 2, 2, 48, 284, 3, 2, 2, 2, 50, 292, 3, 2, 2, 2, 52, 306, 3, 2, 2, 2, 54, 308, 3, 2, 2, 2, 56, 312, 3, 2, 2, 2, 58, 320, 3, 2, 2, 2, 60, 62, 5, 4, 3, 2, 61, 60, 3, 2, 2, 2, 62, 65, 3, 2, 2, 2, 63, 61, 3, 2, 2, 2, 63, 64, 3, 2, 2, 2, 64, 68, 3, 2, 2, 2, 65, 63, 3, 2, 2, 2, 66, 68, 7, 2, 2, 3, 67, 63, 3, 2, 2, 2, 67, 66, 3, 2, 2, 2, 68, 3, 3, 2, 2, 2, 69, 74, 5, 6, 4, 2, 70, 74, 5, 14, 8, 2, 71, 74, 5, 8, 5, 2, 72, 74, 5, 24, 13, 2, 73, 69, 3, 2, 2, 2, 73, 70, 3, 2, 2, 2, 73, 71, 3, 2, 2, 2, 73, 72, 3, 2, 2, 2, 74, 5, 3, 2, 2, 2, 75, 76, 7, 36, 2, 2, 76, 77, 7, 47, 2, 2, 77, 78, 7, 27, 2, 2, 78, 79, 7, 47, 2, 2, 79, 7, 3, 2, 2, 2, 80, 81, 7, 40, 2, 2, 81, 82, 7, 47, 2, 2, 82, 83, 7, 21, 2, 2, 83, 84, 5, 10, 6, 2, 84, 85, 7, 22, 2, 2, 85, 9, 3, 2, 2, 2, 86, 88, 5, 12, 7, 2, 87, 86, 3, 2, 2, 2, 88, 91, 3, 2, 2, 2, 89, 87, 3, 2, 2, 2, 89, 90, 3, 2, 2, 2, 90, 11, 3, 2, 2, 2, 91, 89, 3, 2, 2, 2, 92, 96, 5, 14, 8, 2, 93, 96, 5, 40, 21, 2, 94, 96, 5, 8, 5, 2, 95, 92, 3, 2, 2, 2, 95, 93, 3, 2, 2, 2, 95, 94, 3, 2, 2, 2, 96, 13, 3, 2, 2, 2, 97, 98, 7, 34, 2, 2, 98, 99, 7, 47, 2, 2, 99, 100, 5, 16, 9, 2, 100, 101, 7, 32, 2, 2, 101, 102, 5, 26, 14, 2, 102, 15, 3, 2, 2, 2, 103, 105, 7, 23, 2, 2, 104, 106, 5, 18, 10, 2, 105, 104, 3, 2, 2, 2, 105, 106, 3, 2, 2, 2, 106, 107, 3, 2, 2, 2, 107, 108, 7, 24, 2, 2, 108, 17, 3, 2, 2, 2, 109, 114, 5, 20, 11, 2, 110, 111, 7, 28, 2, 2, 111, 113, 5, 20, 11, 2, 112, 110, 3, 2, 2, 2, 113, 116, 3, 2, 2, 2, 114, 112, 3, 2, 2, 2, 114, 115, 3, 2, 2, 2, 115, 19, 3, 2, 2, 2, 116, 114, 3, 2, 2, 2, 117, 120, 7, 47, 2, 2, 118, 119, 7, 32, 2, 2, 119, 121, 5, 22, 12, 2, 120, 118, 3, 2, 2, 2, 120, 121, 3, 2, 2, 2, 121, 21, 3, 2, 2, 2, 122, 128, 7, 42, 2, 2, 123, 128, 7, 43, 2, 2, 124, 128, 5, 44, 23, 2, 125, 128, 5, 42, 22, 2, 126, 128, 5, 46, 24, 2, 127, 122, 3, 2, 2, 2, 127, 123, 3, 2, 2, 2, 127, 124, 3, 2, 2, 2, 127, 125, 3, 2, 2, 2, 127, 126, 3, 2, 2, 2, 128, 23, 3, 2, 2, 2, 129, 130, 5, 26, 14, 2, 130, 25, 3, 2, 2, 2, 131, 132, 8, 14, 1, 2, 132, 149, 5, 40, 21, 2, 133, 135, 7, 23, 2, 2, 134, 136, 5, 26, 14, 2, 135, 134, 3, 2, 2, 2, 135, 136, 3, 2, 2, 2, 136, 137, 3, 2, 2, 2, 137, 149, 7, 24, 2, 2, 138, 149, 5, 28, 15, 2, 139, 149, 5, 30, 16, 2, 140, 149, 5, 32, 17, 2, 141, 149, 5, 58, 30, 2, 142, 149, 5, 44, 23, 2, 143, 149, 5, 42, 22, 2, 144, 149, 5, 46, 24, 2, 145, 149, 7, 47, 2, 2, 146, 149, 7, 42, 2, 2, 147, 149, 7, 43, 2, 2, 148, 131, 3, 2, 2, 2, 148, 133, 3, 2, 2, 2, 148, 138, 3, 2, 2, 2, 148, 139, 3, 2, 2, 2, 148, 140, 3, 2, 2, 2, 148, 141, 3, 2, 2, 2, 148, 142, 3, 2, 2, 2, 148, 143, 3, 2, 2, 2, 148, 144, 3, 2, 2, 2, 148, 145, 3, 2, 2, 2, 148, 146, 3, 2, 2, 2, 148, 147, 3, 2, 2, 2, 149, 218, 3, 2, 2, 2, 150, 151, 12, 33, 2, 2, 151, 152, 7, 44, 2, 2, 152, 217, 5, 26, 14, 34, 153, 154, 12, 32, 2, 2, 154, 155, 7, 20, 2, 2, 155, 217, 5, 26, 14, 33, 156, 157, 12, 31, 2, 2, 157, 158, 7, 14, 2, 2, 158, 217, 5, 26, 14, 32, 159, 160, 12, 30, 2, 2, 160, 161, 7, 13, 2, 2, 161, 217, 5, 26, 14, 31, 162, 163, 12, 29, 2, 2, 163, 164, 7, 11, 2, 2, 164, 217, 5, 26, 14, 30, 165, 166, 12, 28, 2, 2, 166, 167, 7, 12, 2, 2, 167, 217, 5, 26, 14, 29, 168, 169, 12, 27, 2, 2, 169, 170, 7, 9, 2, 2, 170, 217, 5, 26, 14, 28, 171, 172, 12, 26, 2, 2, 172, 173, 7, 10, 2, 2, 173, 217, 5, 26, 14, 27, 174, 175, 12, 25, 2, 2, 175, 176, 7, 7, 2, 2, 176, 217, 5, 26, 14, 26, 177, 178, 12, 24, 2, 2, 178, 179, 7, 8, 2, 2, 179, 217, 5, 26, 14, 25, 180, 181, 12, 23, 2, 2, 181, 182, 7, 15, 2, 2, 182, 217, 5, 26, 14, 24, 183, 184, 12, 22, 2, 2, 184, 185, 7, 16, 2, 2, 185, 217, 5, 26, 14, 23, 186, 187, 12, 21, 2, 2, 187, 188, 7, 18, 2, 2, 188, 217, 5, 26, 14, 22, 189, 190, 12, 20, 2, 2, 190, 191, 7, 17, 2, 2, 191, 217, 5, 26, 14, 21, 192, 193, 12, 19, 2, 2, 193, 194, 7, 5, 2, 2, 194, 217, 5, 26, 14, 20, 195, 196, 12, 18, 2, 2, 196, 197, 7, 6, 2, 2, 197, 217, 5, 26, 14, 19, 198, 199, 12, 17, 2, 2, 199, 200, 7, 3, 2, 2, 200, 217, 5, 26, 14, 18, 201, 202, 12, 16, 2, 2, 202, 203, 7, 4, 2, 2, 203, 217, 5, 26, 14, 17, 204, 205, 12, 15, 2, 2, 205, 206, 7, 44, 2, 2, 206, 217, 5, 26, 14, 16, 207, 208, 12, 14, 2, 2, 208, 209, 7, 27, 2, 2, 209, 217, 5, 26, 14, 15, 210, 211, 12, 35, 2, 2, 211, 213, 7, 23, 2, 2, 212, 214, 5, 50, 26, 2, 213, 212, 3, 2, 2, 2, 213, 214, 3, 2, 2, 2, 214, 215, 3, 2, 2, 2, 215, 217, 7, 24, 2, 2, 216, 150, 3, 2, 2, 2, 216, 153, 3, 2, 2, 2, 216, 156, 3, 2, 2, 2, 216, 159, 3, 2, 2, 2, 216, 162, 3, 2, 2, 2, 216, 165, 3, 2, 2, 2, 216, 168, 3, 2, 2, 2, 216, 171, 3, 2, 2, 2, 216, 174, 3, 2, 2, 2, 216, 177, 3, 2, 2, 2, 216, 180, 3, 2, 2, 2, 216, 183, 3, 2, 2, 2, 216, 186, 3, 2, 2, 2, 216, 189, 3, 2, 2, 2, 216, 192, 3, 2, 2, 2, 216, 195, 3, 2, 2, 2, 216, 198, 3, 2, 2, 2, 216, 201, 3, 2, 2, 2, 216, 204, 3, 2, 2, 2, 216, 207, 3, 2, 2, 2, 216, 210, 3, 2, 2, 2, 217, 220, 3, 2, 2, 2, 218, 216, 3, 2, 2, 2, 218, 219, 3, 2, 2, 2, 219, 27, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 221, 222, 7, 19, 2, 2, 222, 230, 5, 26, 14, 2, 223, 224, 7, 4, 2, 2, 224, 230, 5, 26, 14, 2, 225, 226, 7, 31, 2, 2, 226, 230, 5, 26, 14, 2, 227, 228, 7, 17, 2, 2, 228, 230, 5, 26, 14, 2, 229, 221, 3, 2, 2, 2, 229, 223, 3, 2, 2, 2, 229, 225, 3, 2, 2, 2, 229, 227, 3, 2, 2, 2, 230, 29, 3, 2, 2, 2, 231, 232, 7, 38, 2, 2, 232, 233, 5, 26, 14, 2, 233, 234, 7, 21, 2, 2, 234, 235, 5, 26, 14, 2, 235, 236, 7, 22, 2, 2, 236, 237, 7, 39, 2, 2, 237, 238, 7, 21, 2, 2, 238, 239, 5, 26, 14, 2, 239, 240, 7, 22, 2, 2, 240, 31, 3, 2, 2, 2, 241, 242, 7, 35, 2, 2, 242, 243, 5, 26, 14, 2, 243, 244, 7, 21, 2, 2, 244, 246, 5, 34, 18, 2, 245, 247, 5, 38, 20, 2, 246, 245, 3, 2, 2, 2, 246, 247, 3, 2, 2, 2, 247, 248, 3, 2, 2, 2, 248, 249, 7, 22, 2, 2, 249, 33, 3, 2, 2, 2, 250, 252, 5, 36, 19, 2, 251, 250, 3, 2, 2, 2, 252, 255, 3, 2, 2, 2, 253, 251, 3, 2, 2, 2, 253, 254, 3, 2, 2, 2, 254, 35, 3, 2, 2, 2, 255, 253, 3, 2, 2, 2, 256, 257, 7, 37, 2, 2, 257, 258, 5, 48, 25, 2, 258, 259, 7, 30, 2, 2, 259, 260, 5, 26, 14, 2, 260, 37, 3, 2, 2, 2, 261, 262, 7, 39, 2, 2, 262, 263, 7, 30, 2, 2, 263, 264, 5, 26, 14, 2, 264, 39, 3, 2, 2, 2, 265, 266, 7, 33, 2, 2, 266, 267, 7, 47, 2, 2, 267, 268, 7, 32, 2, 2, 268, 269, 5, 26, 14, 2, 269, 41, 3, 2, 2, 2, 270, 271, 7, 23, 2, 2, 271, 272, 5, 48, 25, 2, 272, 273, 7, 24, 2, 2, 273, 43, 3, 2, 2, 2, 274, 276, 7, 25, 2, 2, 275, 277, 5, 48, 25, 2, 276, 275, 3, 2, 2, 2, 276, 277, 3, 2, 2, 2, 277, 278, 3, 2, 2, 2, 278, 279, 7, 26, 2, 2, 279, 45, 3, 2, 2, 2, 280, 281, 7, 21, 2, 2, 281, 282, 5, 56, 29, 2, 282, 283, 7, 22, 2, 2, 283, 47, 3, 2, 2, 2, 284, 289, 5, 26, 14, 2, 285, 286, 7, 28, 2, 2, 286, 288, 5, 26, 14, 2, 287, 285, 3, 2, 2, 2, 288, 291, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 289, 290, 3, 2, 2, 2, 290, 49, 3, 2, 2, 2, 291, 289, 3, 2, 2, 2, 292, 297, 5, 52, 27, 2, 293, 294, 7, 28, 2, 2, 294, 296, 5, 52, 27, 2, 295, 293, 3, 2, 2, 2, 296, 299, 3, 2, 2, 2, 297, 295, 3, 2, 2, 2, 297, 298, 3, 2, 2, 2, 298, 51, 3, 2, 2, 2, 299, 297, 3, 2, 2, 2, 300, 303, 7, 47, 2, 2, 301, 302, 7, 32, 2, 2, 302, 304, 5, 26, 14, 2, 303, 301, 3, 2, 2, 2, 303, 304, 3, 2, 2, 2, 304, 307, 3, 2, 2, 2, 305, 307, 5, 26, 14, 2, 306, 300, 3, 2, 2, 2, 306, 305, 3, 2, 2, 2, 307, 53, 3, 2, 2, 2, 308, 309, 7, 47, 2, 2, 309, 310, 7, 27, 2, 2, 310, 311, 5, 26, 14, 2, 311, 55, 3, 2, 2, 2, 312, 317, 5, 54, 28, 2, 313, 314, 7, 28, 2, 2, 314, 316, 5, 54, 28, 2, 315, 313, 3, 2, 2, 2, 316, 319, 3, 2, 2, 2, 317, 315, 3, 2, 2, 2, 317, 318, 3, 2, 2, 2, 318, 57, 3, 2, 2, 2, 319, 317, 3, 2, 2, 2, 320, 321, 7, 41, 2, 2, 321, 325, 7, 21, 2, 2, 322, 324, 5, 26, 14, 2, 323, 322, 3, 2, 2, 2, 324, 327, 3, 2, 2, 2, 325, 323, 3, 2, 2, 2, 325, 326, 3, 2, 2, 2, 326, 328, 3, 2, 2, 2, 327, 325, 3, 2, 2, 2, 328, 329, 7, 22, 2, 2, 329, 59, 3, 2, 2, 2, 26, 63, 67, 73, 89, 95, 105, 114, 120, 127, 135, 148, 213, 216, 218, 229, 246, 253, 276, 289, 297, 303, 306, 317, 325]
\ No newline at end of file
diff --git a/src/main/java/org/piccode/antlr4/PiccodeScript.tokens b/src/main/java/org/piccode/antlr4/PiccodeScript.tokens
deleted file mode 100644
index ba250bc..0000000
--- a/src/main/java/org/piccode/antlr4/PiccodeScript.tokens
+++ /dev/null
@@ -1,86 +0,0 @@
-ADD=1
-SUB=2
-MUL=3
-DIV=4
-GT=5
-GE=6
-LT=7
-LE=8
-EQ=9
-NE=10
-AND=11
-OR=12
-SHL=13
-SHR=14
-BAND=15
-BOR=16
-EXCLAIM=17
-PIPE=18
-LBRACE=19
-RBRACE=20
-LPAREN=21
-RPAREN=22
-LBRACKET=23
-RBRACKET=24
-COLON=25
-COMMA=26
-SEMI=27
-ARROW=28
-TILDE=29
-ASSIGN=30
-LET=31
-FUNCTION=32
-WHEN=33
-IMPORT=34
-IS=35
-IF=36
-ELSE=37
-MODULE=38
-DO=39
-NUMBER=40
-STRING=41
-DOT=42
-LINE_COMMENT=43
-BLOCK_COMMENT=44
-ID=45
-WS=46
-'+'=1
-'-'=2
-'*'=3
-'/'=4
-'>'=5
-'>='=6
-'<'=7
-'<='=8
-'=='=9
-'!='=10
-'&&'=11
-'||'=12
-'>>'=13
-'<<'=14
-'&'=15
-'|'=16
-'!'=17
-'|>'=18
-'{'=19
-'}'=20
-'('=21
-')'=22
-'['=23
-']'=24
-':'=25
-','=26
-';'=27
-'->'=28
-'~'=29
-'='=30
-'let'=31
-'function'=32
-'when'=33
-'import'=34
-'is'=35
-'if'=36
-'else'=37
-'module'=38
-'do'=39
-'.'=42
diff --git a/src/main/java/org/piccode/antlr4/PiccodeScriptBaseListener.java b/src/main/java/org/piccode/antlr4/PiccodeScriptBaseListener.java
deleted file mode 100644
index f8f986b..0000000
--- a/src/main/java/org/piccode/antlr4/PiccodeScriptBaseListener.java
+++ /dev/null
@@ -1,389 +0,0 @@
-// Generated from PiccodeScript.g4 by ANTLR 4.9.3
-
- package org.piccode.antlr4;
-
-
-import org.antlr.v4.runtime.ParserRuleContext;
-import org.antlr.v4.runtime.tree.ErrorNode;
-import org.antlr.v4.runtime.tree.TerminalNode;
-
-/**
- * This class provides an empty implementation of {@link PiccodeScriptListener},
- * which can be extended to create a listener which only needs to handle a subset
- * of the available methods.
- */
-public class PiccodeScriptBaseListener implements PiccodeScriptListener {
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterStmts(PiccodeScriptParser.StmtsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitStmts(PiccodeScriptParser.StmtsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterStmt(PiccodeScriptParser.StmtContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitStmt(PiccodeScriptParser.StmtContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterImport_module(PiccodeScriptParser.Import_moduleContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitImport_module(PiccodeScriptParser.Import_moduleContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterModule(PiccodeScriptParser.ModuleContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitModule(PiccodeScriptParser.ModuleContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterModule_stmts(PiccodeScriptParser.Module_stmtsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitModule_stmts(PiccodeScriptParser.Module_stmtsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterModule_stmt(PiccodeScriptParser.Module_stmtContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitModule_stmt(PiccodeScriptParser.Module_stmtContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterFunc(PiccodeScriptParser.FuncContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitFunc(PiccodeScriptParser.FuncContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterFunc_args(PiccodeScriptParser.Func_argsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitFunc_args(PiccodeScriptParser.Func_argsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterArg_list(PiccodeScriptParser.Arg_listContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitArg_list(PiccodeScriptParser.Arg_listContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterArg(PiccodeScriptParser.ArgContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitArg(PiccodeScriptParser.ArgContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterLiteral_expr(PiccodeScriptParser.Literal_exprContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitLiteral_expr(PiccodeScriptParser.Literal_exprContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterExpr_stmt(PiccodeScriptParser.Expr_stmtContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitExpr_stmt(PiccodeScriptParser.Expr_stmtContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterExpr(PiccodeScriptParser.ExprContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitExpr(PiccodeScriptParser.ExprContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterUnary(PiccodeScriptParser.UnaryContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitUnary(PiccodeScriptParser.UnaryContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterIf_expr(PiccodeScriptParser.If_exprContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitIf_expr(PiccodeScriptParser.If_exprContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterWhen_expr(PiccodeScriptParser.When_exprContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitWhen_expr(PiccodeScriptParser.When_exprContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterWhen_cases(PiccodeScriptParser.When_casesContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitWhen_cases(PiccodeScriptParser.When_casesContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterWhen_case(PiccodeScriptParser.When_caseContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitWhen_case(PiccodeScriptParser.When_caseContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterElse_case(PiccodeScriptParser.Else_caseContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitElse_case(PiccodeScriptParser.Else_caseContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterVar_decl(PiccodeScriptParser.Var_declContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitVar_decl(PiccodeScriptParser.Var_declContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterTuple(PiccodeScriptParser.TupleContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitTuple(PiccodeScriptParser.TupleContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterArray(PiccodeScriptParser.ArrayContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitArray(PiccodeScriptParser.ArrayContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterObject(PiccodeScriptParser.ObjectContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitObject(PiccodeScriptParser.ObjectContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterExpr_list(PiccodeScriptParser.Expr_listContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitExpr_list(PiccodeScriptParser.Expr_listContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterCall_expr_list(PiccodeScriptParser.Call_expr_listContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitCall_expr_list(PiccodeScriptParser.Call_expr_listContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterCall_expr(PiccodeScriptParser.Call_exprContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitCall_expr(PiccodeScriptParser.Call_exprContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterKey_val_pair(PiccodeScriptParser.Key_val_pairContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitKey_val_pair(PiccodeScriptParser.Key_val_pairContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterKey_val_pairs(PiccodeScriptParser.Key_val_pairsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitKey_val_pairs(PiccodeScriptParser.Key_val_pairsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterDo_expr(PiccodeScriptParser.Do_exprContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitDo_expr(PiccodeScriptParser.Do_exprContext ctx) { }
-
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterEveryRule(ParserRuleContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitEveryRule(ParserRuleContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void visitTerminal(TerminalNode node) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void visitErrorNode(ErrorNode node) { }
-}
\ No newline at end of file
diff --git a/src/main/java/org/piccode/antlr4/PiccodeScriptBaseVisitor.java b/src/main/java/org/piccode/antlr4/PiccodeScriptBaseVisitor.java
deleted file mode 100644
index 8cccc64..0000000
--- a/src/main/java/org/piccode/antlr4/PiccodeScriptBaseVisitor.java
+++ /dev/null
@@ -1,219 +0,0 @@
-// Generated from PiccodeScript.g4 by ANTLR 4.9.3
-
- package org.piccode.antlr4;
-
-import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
-
-/**
- * This class provides an empty implementation of {@link PiccodeScriptVisitor},
- * which can be extended to create a visitor which only needs to handle a subset
- * of the available methods.
- *
- * @param The return type of the visit operation. Use {@link Void} for
- * operations with no return type.
- */
-public class PiccodeScriptBaseVisitor extends AbstractParseTreeVisitor implements PiccodeScriptVisitor {
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitStmts(PiccodeScriptParser.StmtsContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitStmt(PiccodeScriptParser.StmtContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitImport_module(PiccodeScriptParser.Import_moduleContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitModule(PiccodeScriptParser.ModuleContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitModule_stmts(PiccodeScriptParser.Module_stmtsContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitModule_stmt(PiccodeScriptParser.Module_stmtContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitFunc(PiccodeScriptParser.FuncContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitFunc_args(PiccodeScriptParser.Func_argsContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitArg_list(PiccodeScriptParser.Arg_listContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitArg(PiccodeScriptParser.ArgContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitLiteral_expr(PiccodeScriptParser.Literal_exprContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitExpr_stmt(PiccodeScriptParser.Expr_stmtContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitExpr(PiccodeScriptParser.ExprContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitUnary(PiccodeScriptParser.UnaryContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitIf_expr(PiccodeScriptParser.If_exprContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitWhen_expr(PiccodeScriptParser.When_exprContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitWhen_cases(PiccodeScriptParser.When_casesContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitWhen_case(PiccodeScriptParser.When_caseContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitElse_case(PiccodeScriptParser.Else_caseContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitVar_decl(PiccodeScriptParser.Var_declContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitTuple(PiccodeScriptParser.TupleContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitArray(PiccodeScriptParser.ArrayContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitObject(PiccodeScriptParser.ObjectContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitExpr_list(PiccodeScriptParser.Expr_listContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitCall_expr_list(PiccodeScriptParser.Call_expr_listContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitCall_expr(PiccodeScriptParser.Call_exprContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitKey_val_pair(PiccodeScriptParser.Key_val_pairContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitKey_val_pairs(PiccodeScriptParser.Key_val_pairsContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitDo_expr(PiccodeScriptParser.Do_exprContext ctx) { return visitChildren(ctx); }
-}
\ No newline at end of file
diff --git a/src/main/java/org/piccode/antlr4/PiccodeScriptLexer.interp b/src/main/java/org/piccode/antlr4/PiccodeScriptLexer.interp
deleted file mode 100644
index 4575c74..0000000
--- a/src/main/java/org/piccode/antlr4/PiccodeScriptLexer.interp
+++ /dev/null
@@ -1,155 +0,0 @@
-token literal names:
-null
-'+'
-'-'
-'*'
-'/'
-'>'
-'>='
-'<'
-'<='
-'=='
-'!='
-'&&'
-'||'
-'>>'
-'<<'
-'&'
-'|'
-'!'
-'|>'
-'{'
-'}'
-'('
-')'
-'['
-']'
-':'
-','
-';'
-'->'
-'~'
-'='
-'let'
-'function'
-'when'
-'import'
-'is'
-'if'
-'else'
-'module'
-'do'
-null
-null
-'.'
-null
-null
-null
-null
-
-token symbolic names:
-null
-ADD
-SUB
-MUL
-DIV
-GT
-GE
-LT
-LE
-EQ
-NE
-AND
-OR
-SHL
-SHR
-BAND
-BOR
-EXCLAIM
-PIPE
-LBRACE
-RBRACE
-LPAREN
-RPAREN
-LBRACKET
-RBRACKET
-COLON
-COMMA
-SEMI
-ARROW
-TILDE
-ASSIGN
-LET
-FUNCTION
-WHEN
-IMPORT
-IS
-IF
-ELSE
-MODULE
-DO
-NUMBER
-STRING
-DOT
-LINE_COMMENT
-BLOCK_COMMENT
-ID
-WS
-
-rule names:
-ADD
-SUB
-MUL
-DIV
-GT
-GE
-LT
-LE
-EQ
-NE
-AND
-OR
-SHL
-SHR
-BAND
-BOR
-EXCLAIM
-PIPE
-LBRACE
-RBRACE
-LPAREN
-RPAREN
-LBRACKET
-RBRACKET
-COLON
-COMMA
-SEMI
-ARROW
-TILDE
-ASSIGN
-LET
-FUNCTION
-WHEN
-IMPORT
-IS
-IF
-ELSE
-MODULE
-DO
-NUMBER
-STRING
-DOT
-LINE_COMMENT
-BLOCK_COMMENT
-ID
-WS
-
-channel names:
-DEFAULT_TOKEN_CHANNEL
-HIDDEN
-
-mode names:
-DEFAULT_MODE
-
-atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 48, 287, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 41, 6, 41, 213, 10, 41, 13, 41, 14, 41, 214, 3, 41, 3, 41, 6, 41, 219, 10, 41, 13, 41, 14, 41, 220, 5, 41, 223, 10, 41, 3, 42, 3, 42, 3, 42, 3, 42, 7, 42, 229, 10, 42, 12, 42, 14, 42, 232, 11, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 7, 42, 239, 10, 42, 12, 42, 14, 42, 242, 11, 42, 3, 42, 5, 42, 245, 10, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 7, 44, 253, 10, 44, 12, 44, 14, 44, 256, 11, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 7, 45, 264, 10, 45, 12, 45, 14, 45, 267, 11, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 7, 46, 276, 10, 46, 12, 46, 14, 46, 279, 11, 46, 3, 47, 6, 47, 282, 10, 47, 13, 47, 14, 47, 283, 3, 47, 3, 47, 3, 265, 2, 48, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 3, 2, 9, 3, 2, 50, 59, 4, 2, 36, 36, 94, 94, 4, 2, 41, 41, 94, 94, 4, 2, 12, 12, 15, 15, 5, 2, 67, 92, 97, 97, 99, 124, 6, 2, 50, 59, 67, 92, 97, 97, 99, 124, 5, 2, 11, 12, 15, 15, 34, 34, 2, 298, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 3, 95, 3, 2, 2, 2, 5, 97, 3, 2, 2, 2, 7, 99, 3, 2, 2, 2, 9, 101, 3, 2, 2, 2, 11, 103, 3, 2, 2, 2, 13, 105, 3, 2, 2, 2, 15, 108, 3, 2, 2, 2, 17, 110, 3, 2, 2, 2, 19, 113, 3, 2, 2, 2, 21, 116, 3, 2, 2, 2, 23, 119, 3, 2, 2, 2, 25, 122, 3, 2, 2, 2, 27, 125, 3, 2, 2, 2, 29, 128, 3, 2, 2, 2, 31, 131, 3, 2, 2, 2, 33, 133, 3, 2, 2, 2, 35, 135, 3, 2, 2, 2, 37, 137, 3, 2, 2, 2, 39, 140, 3, 2, 2, 2, 41, 142, 3, 2, 2, 2, 43, 144, 3, 2, 2, 2, 45, 146, 3, 2, 2, 2, 47, 148, 3, 2, 2, 2, 49, 150, 3, 2, 2, 2, 51, 152, 3, 2, 2, 2, 53, 154, 3, 2, 2, 2, 55, 156, 3, 2, 2, 2, 57, 158, 3, 2, 2, 2, 59, 161, 3, 2, 2, 2, 61, 163, 3, 2, 2, 2, 63, 165, 3, 2, 2, 2, 65, 169, 3, 2, 2, 2, 67, 178, 3, 2, 2, 2, 69, 183, 3, 2, 2, 2, 71, 190, 3, 2, 2, 2, 73, 193, 3, 2, 2, 2, 75, 196, 3, 2, 2, 2, 77, 201, 3, 2, 2, 2, 79, 208, 3, 2, 2, 2, 81, 212, 3, 2, 2, 2, 83, 244, 3, 2, 2, 2, 85, 246, 3, 2, 2, 2, 87, 248, 3, 2, 2, 2, 89, 259, 3, 2, 2, 2, 91, 273, 3, 2, 2, 2, 93, 281, 3, 2, 2, 2, 95, 96, 7, 45, 2, 2, 96, 4, 3, 2, 2, 2, 97, 98, 7, 47, 2, 2, 98, 6, 3, 2, 2, 2, 99, 100, 7, 44, 2, 2, 100, 8, 3, 2, 2, 2, 101, 102, 7, 49, 2, 2, 102, 10, 3, 2, 2, 2, 103, 104, 7, 64, 2, 2, 104, 12, 3, 2, 2, 2, 105, 106, 7, 64, 2, 2, 106, 107, 7, 63, 2, 2, 107, 14, 3, 2, 2, 2, 108, 109, 7, 62, 2, 2, 109, 16, 3, 2, 2, 2, 110, 111, 7, 62, 2, 2, 111, 112, 7, 63, 2, 2, 112, 18, 3, 2, 2, 2, 113, 114, 7, 63, 2, 2, 114, 115, 7, 63, 2, 2, 115, 20, 3, 2, 2, 2, 116, 117, 7, 35, 2, 2, 117, 118, 7, 63, 2, 2, 118, 22, 3, 2, 2, 2, 119, 120, 7, 40, 2, 2, 120, 121, 7, 40, 2, 2, 121, 24, 3, 2, 2, 2, 122, 123, 7, 126, 2, 2, 123, 124, 7, 126, 2, 2, 124, 26, 3, 2, 2, 2, 125, 126, 7, 64, 2, 2, 126, 127, 7, 64, 2, 2, 127, 28, 3, 2, 2, 2, 128, 129, 7, 62, 2, 2, 129, 130, 7, 62, 2, 2, 130, 30, 3, 2, 2, 2, 131, 132, 7, 40, 2, 2, 132, 32, 3, 2, 2, 2, 133, 134, 7, 126, 2, 2, 134, 34, 3, 2, 2, 2, 135, 136, 7, 35, 2, 2, 136, 36, 3, 2, 2, 2, 137, 138, 7, 126, 2, 2, 138, 139, 7, 64, 2, 2, 139, 38, 3, 2, 2, 2, 140, 141, 7, 125, 2, 2, 141, 40, 3, 2, 2, 2, 142, 143, 7, 127, 2, 2, 143, 42, 3, 2, 2, 2, 144, 145, 7, 42, 2, 2, 145, 44, 3, 2, 2, 2, 146, 147, 7, 43, 2, 2, 147, 46, 3, 2, 2, 2, 148, 149, 7, 93, 2, 2, 149, 48, 3, 2, 2, 2, 150, 151, 7, 95, 2, 2, 151, 50, 3, 2, 2, 2, 152, 153, 7, 60, 2, 2, 153, 52, 3, 2, 2, 2, 154, 155, 7, 46, 2, 2, 155, 54, 3, 2, 2, 2, 156, 157, 7, 61, 2, 2, 157, 56, 3, 2, 2, 2, 158, 159, 7, 47, 2, 2, 159, 160, 7, 64, 2, 2, 160, 58, 3, 2, 2, 2, 161, 162, 7, 128, 2, 2, 162, 60, 3, 2, 2, 2, 163, 164, 7, 63, 2, 2, 164, 62, 3, 2, 2, 2, 165, 166, 7, 110, 2, 2, 166, 167, 7, 103, 2, 2, 167, 168, 7, 118, 2, 2, 168, 64, 3, 2, 2, 2, 169, 170, 7, 104, 2, 2, 170, 171, 7, 119, 2, 2, 171, 172, 7, 112, 2, 2, 172, 173, 7, 101, 2, 2, 173, 174, 7, 118, 2, 2, 174, 175, 7, 107, 2, 2, 175, 176, 7, 113, 2, 2, 176, 177, 7, 112, 2, 2, 177, 66, 3, 2, 2, 2, 178, 179, 7, 121, 2, 2, 179, 180, 7, 106, 2, 2, 180, 181, 7, 103, 2, 2, 181, 182, 7, 112, 2, 2, 182, 68, 3, 2, 2, 2, 183, 184, 7, 107, 2, 2, 184, 185, 7, 111, 2, 2, 185, 186, 7, 114, 2, 2, 186, 187, 7, 113, 2, 2, 187, 188, 7, 116, 2, 2, 188, 189, 7, 118, 2, 2, 189, 70, 3, 2, 2, 2, 190, 191, 7, 107, 2, 2, 191, 192, 7, 117, 2, 2, 192, 72, 3, 2, 2, 2, 193, 194, 7, 107, 2, 2, 194, 195, 7, 104, 2, 2, 195, 74, 3, 2, 2, 2, 196, 197, 7, 103, 2, 2, 197, 198, 7, 110, 2, 2, 198, 199, 7, 117, 2, 2, 199, 200, 7, 103, 2, 2, 200, 76, 3, 2, 2, 2, 201, 202, 7, 111, 2, 2, 202, 203, 7, 113, 2, 2, 203, 204, 7, 102, 2, 2, 204, 205, 7, 119, 2, 2, 205, 206, 7, 110, 2, 2, 206, 207, 7, 103, 2, 2, 207, 78, 3, 2, 2, 2, 208, 209, 7, 102, 2, 2, 209, 210, 7, 113, 2, 2, 210, 80, 3, 2, 2, 2, 211, 213, 9, 2, 2, 2, 212, 211, 3, 2, 2, 2, 213, 214, 3, 2, 2, 2, 214, 212, 3, 2, 2, 2, 214, 215, 3, 2, 2, 2, 215, 222, 3, 2, 2, 2, 216, 218, 7, 48, 2, 2, 217, 219, 9, 2, 2, 2, 218, 217, 3, 2, 2, 2, 219, 220, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 220, 221, 3, 2, 2, 2, 221, 223, 3, 2, 2, 2, 222, 216, 3, 2, 2, 2, 222, 223, 3, 2, 2, 2, 223, 82, 3, 2, 2, 2, 224, 230, 7, 36, 2, 2, 225, 229, 10, 3, 2, 2, 226, 227, 7, 94, 2, 2, 227, 229, 11, 2, 2, 2, 228, 225, 3, 2, 2, 2, 228, 226, 3, 2, 2, 2, 229, 232, 3, 2, 2, 2, 230, 228, 3, 2, 2, 2, 230, 231, 3, 2, 2, 2, 231, 233, 3, 2, 2, 2, 232, 230, 3, 2, 2, 2, 233, 245, 7, 36, 2, 2, 234, 240, 7, 41, 2, 2, 235, 239, 10, 4, 2, 2, 236, 237, 7, 94, 2, 2, 237, 239, 11, 2, 2, 2, 238, 235, 3, 2, 2, 2, 238, 236, 3, 2, 2, 2, 239, 242, 3, 2, 2, 2, 240, 238, 3, 2, 2, 2, 240, 241, 3, 2, 2, 2, 241, 243, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 243, 245, 7, 41, 2, 2, 244, 224, 3, 2, 2, 2, 244, 234, 3, 2, 2, 2, 245, 84, 3, 2, 2, 2, 246, 247, 7, 48, 2, 2, 247, 86, 3, 2, 2, 2, 248, 249, 7, 49, 2, 2, 249, 250, 7, 49, 2, 2, 250, 254, 3, 2, 2, 2, 251, 253, 10, 5, 2, 2, 252, 251, 3, 2, 2, 2, 253, 256, 3, 2, 2, 2, 254, 252, 3, 2, 2, 2, 254, 255, 3, 2, 2, 2, 255, 257, 3, 2, 2, 2, 256, 254, 3, 2, 2, 2, 257, 258, 8, 44, 2, 2, 258, 88, 3, 2, 2, 2, 259, 260, 7, 49, 2, 2, 260, 261, 7, 44, 2, 2, 261, 265, 3, 2, 2, 2, 262, 264, 11, 2, 2, 2, 263, 262, 3, 2, 2, 2, 264, 267, 3, 2, 2, 2, 265, 266, 3, 2, 2, 2, 265, 263, 3, 2, 2, 2, 266, 268, 3, 2, 2, 2, 267, 265, 3, 2, 2, 2, 268, 269, 7, 44, 2, 2, 269, 270, 7, 49, 2, 2, 270, 271, 3, 2, 2, 2, 271, 272, 8, 45, 2, 2, 272, 90, 3, 2, 2, 2, 273, 277, 9, 6, 2, 2, 274, 276, 9, 7, 2, 2, 275, 274, 3, 2, 2, 2, 276, 279, 3, 2, 2, 2, 277, 275, 3, 2, 2, 2, 277, 278, 3, 2, 2, 2, 278, 92, 3, 2, 2, 2, 279, 277, 3, 2, 2, 2, 280, 282, 9, 8, 2, 2, 281, 280, 3, 2, 2, 2, 282, 283, 3, 2, 2, 2, 283, 281, 3, 2, 2, 2, 283, 284, 3, 2, 2, 2, 284, 285, 3, 2, 2, 2, 285, 286, 8, 47, 2, 2, 286, 94, 3, 2, 2, 2, 15, 2, 214, 220, 222, 228, 230, 238, 240, 244, 254, 265, 277, 283, 3, 2, 3, 2]
\ No newline at end of file
diff --git a/src/main/java/org/piccode/antlr4/PiccodeScriptLexer.java b/src/main/java/org/piccode/antlr4/PiccodeScriptLexer.java
deleted file mode 100644
index 48375d4..0000000
--- a/src/main/java/org/piccode/antlr4/PiccodeScriptLexer.java
+++ /dev/null
@@ -1,226 +0,0 @@
-// Generated from PiccodeScript.g4 by ANTLR 4.9.3
-
- package org.piccode.antlr4;
-
-import org.antlr.v4.runtime.Lexer;
-import org.antlr.v4.runtime.CharStream;
-import org.antlr.v4.runtime.Token;
-import org.antlr.v4.runtime.TokenStream;
-import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.atn.*;
-import org.antlr.v4.runtime.dfa.DFA;
-import org.antlr.v4.runtime.misc.*;
-
-@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
-public class PiccodeScriptLexer extends Lexer {
- static { RuntimeMetaData.checkVersion("4.9.3", RuntimeMetaData.VERSION); }
-
- protected static final DFA[] _decisionToDFA;
- protected static final PredictionContextCache _sharedContextCache =
- new PredictionContextCache();
- public static final int
- ADD=1, SUB=2, MUL=3, DIV=4, GT=5, GE=6, LT=7, LE=8, EQ=9, NE=10, AND=11,
- OR=12, SHL=13, SHR=14, BAND=15, BOR=16, EXCLAIM=17, PIPE=18, LBRACE=19,
- RBRACE=20, LPAREN=21, RPAREN=22, LBRACKET=23, RBRACKET=24, COLON=25, COMMA=26,
- SEMI=27, ARROW=28, TILDE=29, ASSIGN=30, LET=31, FUNCTION=32, WHEN=33,
- IMPORT=34, IS=35, IF=36, ELSE=37, MODULE=38, DO=39, NUMBER=40, STRING=41,
- DOT=42, LINE_COMMENT=43, BLOCK_COMMENT=44, ID=45, WS=46;
- public static String[] channelNames = {
- "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
- };
-
- public static String[] modeNames = {
- "DEFAULT_MODE"
- };
-
- private static String[] makeRuleNames() {
- return new String[] {
- "ADD", "SUB", "MUL", "DIV", "GT", "GE", "LT", "LE", "EQ", "NE", "AND",
- "OR", "SHL", "SHR", "BAND", "BOR", "EXCLAIM", "PIPE", "LBRACE", "RBRACE",
- "LPAREN", "RPAREN", "LBRACKET", "RBRACKET", "COLON", "COMMA", "SEMI",
- "ARROW", "TILDE", "ASSIGN", "LET", "FUNCTION", "WHEN", "IMPORT", "IS",
- "IF", "ELSE", "MODULE", "DO", "NUMBER", "STRING", "DOT", "LINE_COMMENT",
- "BLOCK_COMMENT", "ID", "WS"
- };
- }
- public static final String[] ruleNames = makeRuleNames();
-
- private static String[] makeLiteralNames() {
- return new String[] {
- null, "'+'", "'-'", "'*'", "'/'", "'>'", "'>='", "'<'", "'<='", "'=='",
- "'!='", "'&&'", "'||'", "'>>'", "'<<'", "'&'", "'|'", "'!'", "'|>'",
- "'{'", "'}'", "'('", "')'", "'['", "']'", "':'", "','", "';'", "'->'",
- "'~'", "'='", "'let'", "'function'", "'when'", "'import'", "'is'", "'if'",
- "'else'", "'module'", "'do'", null, null, "'.'"
- };
- }
- private static final String[] _LITERAL_NAMES = makeLiteralNames();
- private static String[] makeSymbolicNames() {
- return new String[] {
- null, "ADD", "SUB", "MUL", "DIV", "GT", "GE", "LT", "LE", "EQ", "NE",
- "AND", "OR", "SHL", "SHR", "BAND", "BOR", "EXCLAIM", "PIPE", "LBRACE",
- "RBRACE", "LPAREN", "RPAREN", "LBRACKET", "RBRACKET", "COLON", "COMMA",
- "SEMI", "ARROW", "TILDE", "ASSIGN", "LET", "FUNCTION", "WHEN", "IMPORT",
- "IS", "IF", "ELSE", "MODULE", "DO", "NUMBER", "STRING", "DOT", "LINE_COMMENT",
- "BLOCK_COMMENT", "ID", "WS"
- };
- }
- private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
- public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
-
- /**
- * @deprecated Use {@link #VOCABULARY} instead.
- */
- @Deprecated
- public static final String[] tokenNames;
- static {
- tokenNames = new String[_SYMBOLIC_NAMES.length];
- for (int i = 0; i < tokenNames.length; i++) {
- tokenNames[i] = VOCABULARY.getLiteralName(i);
- if (tokenNames[i] == null) {
- tokenNames[i] = VOCABULARY.getSymbolicName(i);
- }
-
- if (tokenNames[i] == null) {
- tokenNames[i] = "";
- }
- }
- }
-
- @Override
- @Deprecated
- public String[] getTokenNames() {
- return tokenNames;
- }
-
- @Override
-
- public Vocabulary getVocabulary() {
- return VOCABULARY;
- }
-
-
- public PiccodeScriptLexer(CharStream input) {
- super(input);
- _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
- }
-
- @Override
- public String getGrammarFileName() { return "PiccodeScript.g4"; }
-
- @Override
- public String[] getRuleNames() { return ruleNames; }
-
- @Override
- public String getSerializedATN() { return _serializedATN; }
-
- @Override
- public String[] getChannelNames() { return channelNames; }
-
- @Override
- public String[] getModeNames() { return modeNames; }
-
- @Override
- public ATN getATN() { return _ATN; }
-
- public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\60\u011f\b\1\4\2"+
- "\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4"+
- "\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+
- "\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+
- "\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t"+
- " \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t"+
- "+\4,\t,\4-\t-\4.\t.\4/\t/\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7"+
- "\3\7\3\7\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\n\3\13\3\13\3\13\3\f\3\f\3\f\3"+
- "\r\3\r\3\r\3\16\3\16\3\16\3\17\3\17\3\17\3\20\3\20\3\21\3\21\3\22\3\22"+
- "\3\23\3\23\3\23\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3\27\3\30\3\30\3\31"+
- "\3\31\3\32\3\32\3\33\3\33\3\34\3\34\3\35\3\35\3\35\3\36\3\36\3\37\3\37"+
- "\3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3"+
- "#\3#\3#\3#\3$\3$\3$\3%\3%\3%\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3"+
- "\'\3(\3(\3(\3)\6)\u00d5\n)\r)\16)\u00d6\3)\3)\6)\u00db\n)\r)\16)\u00dc"+
- "\5)\u00df\n)\3*\3*\3*\3*\7*\u00e5\n*\f*\16*\u00e8\13*\3*\3*\3*\3*\3*\7"+
- "*\u00ef\n*\f*\16*\u00f2\13*\3*\5*\u00f5\n*\3+\3+\3,\3,\3,\3,\7,\u00fd"+
- "\n,\f,\16,\u0100\13,\3,\3,\3-\3-\3-\3-\7-\u0108\n-\f-\16-\u010b\13-\3"+
- "-\3-\3-\3-\3-\3.\3.\7.\u0114\n.\f.\16.\u0117\13.\3/\6/\u011a\n/\r/\16"+
- "/\u011b\3/\3/\3\u0109\2\60\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25"+
- "\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32"+
- "\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60\3\2\t"+
- "\3\2\62;\4\2$$^^\4\2))^^\4\2\f\f\17\17\5\2C\\aac|\6\2\62;C\\aac|\5\2\13"+
- "\f\17\17\"\"\2\u012a\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2"+
- "\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3"+
- "\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2"+
- "\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2"+
- "\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2"+
- "\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2"+
- "\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q"+
- "\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2"+
- "\2\2\3_\3\2\2\2\5a\3\2\2\2\7c\3\2\2\2\te\3\2\2\2\13g\3\2\2\2\ri\3\2\2"+
- "\2\17l\3\2\2\2\21n\3\2\2\2\23q\3\2\2\2\25t\3\2\2\2\27w\3\2\2\2\31z\3\2"+
- "\2\2\33}\3\2\2\2\35\u0080\3\2\2\2\37\u0083\3\2\2\2!\u0085\3\2\2\2#\u0087"+
- "\3\2\2\2%\u0089\3\2\2\2\'\u008c\3\2\2\2)\u008e\3\2\2\2+\u0090\3\2\2\2"+
- "-\u0092\3\2\2\2/\u0094\3\2\2\2\61\u0096\3\2\2\2\63\u0098\3\2\2\2\65\u009a"+
- "\3\2\2\2\67\u009c\3\2\2\29\u009e\3\2\2\2;\u00a1\3\2\2\2=\u00a3\3\2\2\2"+
- "?\u00a5\3\2\2\2A\u00a9\3\2\2\2C\u00b2\3\2\2\2E\u00b7\3\2\2\2G\u00be\3"+
- "\2\2\2I\u00c1\3\2\2\2K\u00c4\3\2\2\2M\u00c9\3\2\2\2O\u00d0\3\2\2\2Q\u00d4"+
- "\3\2\2\2S\u00f4\3\2\2\2U\u00f6\3\2\2\2W\u00f8\3\2\2\2Y\u0103\3\2\2\2["+
- "\u0111\3\2\2\2]\u0119\3\2\2\2_`\7-\2\2`\4\3\2\2\2ab\7/\2\2b\6\3\2\2\2"+
- "cd\7,\2\2d\b\3\2\2\2ef\7\61\2\2f\n\3\2\2\2gh\7@\2\2h\f\3\2\2\2ij\7@\2"+
- "\2jk\7?\2\2k\16\3\2\2\2lm\7>\2\2m\20\3\2\2\2no\7>\2\2op\7?\2\2p\22\3\2"+
- "\2\2qr\7?\2\2rs\7?\2\2s\24\3\2\2\2tu\7#\2\2uv\7?\2\2v\26\3\2\2\2wx\7("+
- "\2\2xy\7(\2\2y\30\3\2\2\2z{\7~\2\2{|\7~\2\2|\32\3\2\2\2}~\7@\2\2~\177"+
- "\7@\2\2\177\34\3\2\2\2\u0080\u0081\7>\2\2\u0081\u0082\7>\2\2\u0082\36"+
- "\3\2\2\2\u0083\u0084\7(\2\2\u0084 \3\2\2\2\u0085\u0086\7~\2\2\u0086\""+
- "\3\2\2\2\u0087\u0088\7#\2\2\u0088$\3\2\2\2\u0089\u008a\7~\2\2\u008a\u008b"+
- "\7@\2\2\u008b&\3\2\2\2\u008c\u008d\7}\2\2\u008d(\3\2\2\2\u008e\u008f\7"+
- "\177\2\2\u008f*\3\2\2\2\u0090\u0091\7*\2\2\u0091,\3\2\2\2\u0092\u0093"+
- "\7+\2\2\u0093.\3\2\2\2\u0094\u0095\7]\2\2\u0095\60\3\2\2\2\u0096\u0097"+
- "\7_\2\2\u0097\62\3\2\2\2\u0098\u0099\7<\2\2\u0099\64\3\2\2\2\u009a\u009b"+
- "\7.\2\2\u009b\66\3\2\2\2\u009c\u009d\7=\2\2\u009d8\3\2\2\2\u009e\u009f"+
- "\7/\2\2\u009f\u00a0\7@\2\2\u00a0:\3\2\2\2\u00a1\u00a2\7\u0080\2\2\u00a2"+
- "<\3\2\2\2\u00a3\u00a4\7?\2\2\u00a4>\3\2\2\2\u00a5\u00a6\7n\2\2\u00a6\u00a7"+
- "\7g\2\2\u00a7\u00a8\7v\2\2\u00a8@\3\2\2\2\u00a9\u00aa\7h\2\2\u00aa\u00ab"+
- "\7w\2\2\u00ab\u00ac\7p\2\2\u00ac\u00ad\7e\2\2\u00ad\u00ae\7v\2\2\u00ae"+
- "\u00af\7k\2\2\u00af\u00b0\7q\2\2\u00b0\u00b1\7p\2\2\u00b1B\3\2\2\2\u00b2"+
- "\u00b3\7y\2\2\u00b3\u00b4\7j\2\2\u00b4\u00b5\7g\2\2\u00b5\u00b6\7p\2\2"+
- "\u00b6D\3\2\2\2\u00b7\u00b8\7k\2\2\u00b8\u00b9\7o\2\2\u00b9\u00ba\7r\2"+
- "\2\u00ba\u00bb\7q\2\2\u00bb\u00bc\7t\2\2\u00bc\u00bd\7v\2\2\u00bdF\3\2"+
- "\2\2\u00be\u00bf\7k\2\2\u00bf\u00c0\7u\2\2\u00c0H\3\2\2\2\u00c1\u00c2"+
- "\7k\2\2\u00c2\u00c3\7h\2\2\u00c3J\3\2\2\2\u00c4\u00c5\7g\2\2\u00c5\u00c6"+
- "\7n\2\2\u00c6\u00c7\7u\2\2\u00c7\u00c8\7g\2\2\u00c8L\3\2\2\2\u00c9\u00ca"+
- "\7o\2\2\u00ca\u00cb\7q\2\2\u00cb\u00cc\7f\2\2\u00cc\u00cd\7w\2\2\u00cd"+
- "\u00ce\7n\2\2\u00ce\u00cf\7g\2\2\u00cfN\3\2\2\2\u00d0\u00d1\7f\2\2\u00d1"+
- "\u00d2\7q\2\2\u00d2P\3\2\2\2\u00d3\u00d5\t\2\2\2\u00d4\u00d3\3\2\2\2\u00d5"+
- "\u00d6\3\2\2\2\u00d6\u00d4\3\2\2\2\u00d6\u00d7\3\2\2\2\u00d7\u00de\3\2"+
- "\2\2\u00d8\u00da\7\60\2\2\u00d9\u00db\t\2\2\2\u00da\u00d9\3\2\2\2\u00db"+
- "\u00dc\3\2\2\2\u00dc\u00da\3\2\2\2\u00dc\u00dd\3\2\2\2\u00dd\u00df\3\2"+
- "\2\2\u00de\u00d8\3\2\2\2\u00de\u00df\3\2\2\2\u00dfR\3\2\2\2\u00e0\u00e6"+
- "\7$\2\2\u00e1\u00e5\n\3\2\2\u00e2\u00e3\7^\2\2\u00e3\u00e5\13\2\2\2\u00e4"+
- "\u00e1\3\2\2\2\u00e4\u00e2\3\2\2\2\u00e5\u00e8\3\2\2\2\u00e6\u00e4\3\2"+
- "\2\2\u00e6\u00e7\3\2\2\2\u00e7\u00e9\3\2\2\2\u00e8\u00e6\3\2\2\2\u00e9"+
- "\u00f5\7$\2\2\u00ea\u00f0\7)\2\2\u00eb\u00ef\n\4\2\2\u00ec\u00ed\7^\2"+
- "\2\u00ed\u00ef\13\2\2\2\u00ee\u00eb\3\2\2\2\u00ee\u00ec\3\2\2\2\u00ef"+
- "\u00f2\3\2\2\2\u00f0\u00ee\3\2\2\2\u00f0\u00f1\3\2\2\2\u00f1\u00f3\3\2"+
- "\2\2\u00f2\u00f0\3\2\2\2\u00f3\u00f5\7)\2\2\u00f4\u00e0\3\2\2\2\u00f4"+
- "\u00ea\3\2\2\2\u00f5T\3\2\2\2\u00f6\u00f7\7\60\2\2\u00f7V\3\2\2\2\u00f8"+
- "\u00f9\7\61\2\2\u00f9\u00fa\7\61\2\2\u00fa\u00fe\3\2\2\2\u00fb\u00fd\n"+
- "\5\2\2\u00fc\u00fb\3\2\2\2\u00fd\u0100\3\2\2\2\u00fe\u00fc\3\2\2\2\u00fe"+
- "\u00ff\3\2\2\2\u00ff\u0101\3\2\2\2\u0100\u00fe\3\2\2\2\u0101\u0102\b,"+
- "\2\2\u0102X\3\2\2\2\u0103\u0104\7\61\2\2\u0104\u0105\7,\2\2\u0105\u0109"+
- "\3\2\2\2\u0106\u0108\13\2\2\2\u0107\u0106\3\2\2\2\u0108\u010b\3\2\2\2"+
- "\u0109\u010a\3\2\2\2\u0109\u0107\3\2\2\2\u010a\u010c\3\2\2\2\u010b\u0109"+
- "\3\2\2\2\u010c\u010d\7,\2\2\u010d\u010e\7\61\2\2\u010e\u010f\3\2\2\2\u010f"+
- "\u0110\b-\2\2\u0110Z\3\2\2\2\u0111\u0115\t\6\2\2\u0112\u0114\t\7\2\2\u0113"+
- "\u0112\3\2\2\2\u0114\u0117\3\2\2\2\u0115\u0113\3\2\2\2\u0115\u0116\3\2"+
- "\2\2\u0116\\\3\2\2\2\u0117\u0115\3\2\2\2\u0118\u011a\t\b\2\2\u0119\u0118"+
- "\3\2\2\2\u011a\u011b\3\2\2\2\u011b\u0119\3\2\2\2\u011b\u011c\3\2\2\2\u011c"+
- "\u011d\3\2\2\2\u011d\u011e\b/\2\2\u011e^\3\2\2\2\17\2\u00d6\u00dc\u00de"+
- "\u00e4\u00e6\u00ee\u00f0\u00f4\u00fe\u0109\u0115\u011b\3\2\3\2";
- public static final ATN _ATN =
- new ATNDeserializer().deserialize(_serializedATN.toCharArray());
- static {
- _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
- for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
- _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/java/org/piccode/antlr4/PiccodeScriptLexer.tokens b/src/main/java/org/piccode/antlr4/PiccodeScriptLexer.tokens
deleted file mode 100644
index ba250bc..0000000
--- a/src/main/java/org/piccode/antlr4/PiccodeScriptLexer.tokens
+++ /dev/null
@@ -1,86 +0,0 @@
-ADD=1
-SUB=2
-MUL=3
-DIV=4
-GT=5
-GE=6
-LT=7
-LE=8
-EQ=9
-NE=10
-AND=11
-OR=12
-SHL=13
-SHR=14
-BAND=15
-BOR=16
-EXCLAIM=17
-PIPE=18
-LBRACE=19
-RBRACE=20
-LPAREN=21
-RPAREN=22
-LBRACKET=23
-RBRACKET=24
-COLON=25
-COMMA=26
-SEMI=27
-ARROW=28
-TILDE=29
-ASSIGN=30
-LET=31
-FUNCTION=32
-WHEN=33
-IMPORT=34
-IS=35
-IF=36
-ELSE=37
-MODULE=38
-DO=39
-NUMBER=40
-STRING=41
-DOT=42
-LINE_COMMENT=43
-BLOCK_COMMENT=44
-ID=45
-WS=46
-'+'=1
-'-'=2
-'*'=3
-'/'=4
-'>'=5
-'>='=6
-'<'=7
-'<='=8
-'=='=9
-'!='=10
-'&&'=11
-'||'=12
-'>>'=13
-'<<'=14
-'&'=15
-'|'=16
-'!'=17
-'|>'=18
-'{'=19
-'}'=20
-'('=21
-')'=22
-'['=23
-']'=24
-':'=25
-','=26
-';'=27
-'->'=28
-'~'=29
-'='=30
-'let'=31
-'function'=32
-'when'=33
-'import'=34
-'is'=35
-'if'=36
-'else'=37
-'module'=38
-'do'=39
-'.'=42
diff --git a/src/main/java/org/piccode/antlr4/PiccodeScriptListener.java b/src/main/java/org/piccode/antlr4/PiccodeScriptListener.java
deleted file mode 100644
index 286da57..0000000
--- a/src/main/java/org/piccode/antlr4/PiccodeScriptListener.java
+++ /dev/null
@@ -1,302 +0,0 @@
-// Generated from PiccodeScript.g4 by ANTLR 4.9.3
-
- package org.piccode.antlr4;
-
-import org.antlr.v4.runtime.tree.ParseTreeListener;
-
-/**
- * This interface defines a complete listener for a parse tree produced by
- * {@link PiccodeScriptParser}.
- */
-public interface PiccodeScriptListener extends ParseTreeListener {
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#stmts}.
- * @param ctx the parse tree
- */
- void enterStmts(PiccodeScriptParser.StmtsContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#stmts}.
- * @param ctx the parse tree
- */
- void exitStmts(PiccodeScriptParser.StmtsContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#stmt}.
- * @param ctx the parse tree
- */
- void enterStmt(PiccodeScriptParser.StmtContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#stmt}.
- * @param ctx the parse tree
- */
- void exitStmt(PiccodeScriptParser.StmtContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#import_module}.
- * @param ctx the parse tree
- */
- void enterImport_module(PiccodeScriptParser.Import_moduleContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#import_module}.
- * @param ctx the parse tree
- */
- void exitImport_module(PiccodeScriptParser.Import_moduleContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#module}.
- * @param ctx the parse tree
- */
- void enterModule(PiccodeScriptParser.ModuleContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#module}.
- * @param ctx the parse tree
- */
- void exitModule(PiccodeScriptParser.ModuleContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#module_stmts}.
- * @param ctx the parse tree
- */
- void enterModule_stmts(PiccodeScriptParser.Module_stmtsContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#module_stmts}.
- * @param ctx the parse tree
- */
- void exitModule_stmts(PiccodeScriptParser.Module_stmtsContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#module_stmt}.
- * @param ctx the parse tree
- */
- void enterModule_stmt(PiccodeScriptParser.Module_stmtContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#module_stmt}.
- * @param ctx the parse tree
- */
- void exitModule_stmt(PiccodeScriptParser.Module_stmtContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#func}.
- * @param ctx the parse tree
- */
- void enterFunc(PiccodeScriptParser.FuncContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#func}.
- * @param ctx the parse tree
- */
- void exitFunc(PiccodeScriptParser.FuncContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#func_args}.
- * @param ctx the parse tree
- */
- void enterFunc_args(PiccodeScriptParser.Func_argsContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#func_args}.
- * @param ctx the parse tree
- */
- void exitFunc_args(PiccodeScriptParser.Func_argsContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#arg_list}.
- * @param ctx the parse tree
- */
- void enterArg_list(PiccodeScriptParser.Arg_listContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#arg_list}.
- * @param ctx the parse tree
- */
- void exitArg_list(PiccodeScriptParser.Arg_listContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#arg}.
- * @param ctx the parse tree
- */
- void enterArg(PiccodeScriptParser.ArgContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#arg}.
- * @param ctx the parse tree
- */
- void exitArg(PiccodeScriptParser.ArgContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#literal_expr}.
- * @param ctx the parse tree
- */
- void enterLiteral_expr(PiccodeScriptParser.Literal_exprContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#literal_expr}.
- * @param ctx the parse tree
- */
- void exitLiteral_expr(PiccodeScriptParser.Literal_exprContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#expr_stmt}.
- * @param ctx the parse tree
- */
- void enterExpr_stmt(PiccodeScriptParser.Expr_stmtContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#expr_stmt}.
- * @param ctx the parse tree
- */
- void exitExpr_stmt(PiccodeScriptParser.Expr_stmtContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#expr}.
- * @param ctx the parse tree
- */
- void enterExpr(PiccodeScriptParser.ExprContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#expr}.
- * @param ctx the parse tree
- */
- void exitExpr(PiccodeScriptParser.ExprContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#unary}.
- * @param ctx the parse tree
- */
- void enterUnary(PiccodeScriptParser.UnaryContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#unary}.
- * @param ctx the parse tree
- */
- void exitUnary(PiccodeScriptParser.UnaryContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#if_expr}.
- * @param ctx the parse tree
- */
- void enterIf_expr(PiccodeScriptParser.If_exprContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#if_expr}.
- * @param ctx the parse tree
- */
- void exitIf_expr(PiccodeScriptParser.If_exprContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#when_expr}.
- * @param ctx the parse tree
- */
- void enterWhen_expr(PiccodeScriptParser.When_exprContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#when_expr}.
- * @param ctx the parse tree
- */
- void exitWhen_expr(PiccodeScriptParser.When_exprContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#when_cases}.
- * @param ctx the parse tree
- */
- void enterWhen_cases(PiccodeScriptParser.When_casesContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#when_cases}.
- * @param ctx the parse tree
- */
- void exitWhen_cases(PiccodeScriptParser.When_casesContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#when_case}.
- * @param ctx the parse tree
- */
- void enterWhen_case(PiccodeScriptParser.When_caseContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#when_case}.
- * @param ctx the parse tree
- */
- void exitWhen_case(PiccodeScriptParser.When_caseContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#else_case}.
- * @param ctx the parse tree
- */
- void enterElse_case(PiccodeScriptParser.Else_caseContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#else_case}.
- * @param ctx the parse tree
- */
- void exitElse_case(PiccodeScriptParser.Else_caseContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#var_decl}.
- * @param ctx the parse tree
- */
- void enterVar_decl(PiccodeScriptParser.Var_declContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#var_decl}.
- * @param ctx the parse tree
- */
- void exitVar_decl(PiccodeScriptParser.Var_declContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#tuple}.
- * @param ctx the parse tree
- */
- void enterTuple(PiccodeScriptParser.TupleContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#tuple}.
- * @param ctx the parse tree
- */
- void exitTuple(PiccodeScriptParser.TupleContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#array}.
- * @param ctx the parse tree
- */
- void enterArray(PiccodeScriptParser.ArrayContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#array}.
- * @param ctx the parse tree
- */
- void exitArray(PiccodeScriptParser.ArrayContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#object}.
- * @param ctx the parse tree
- */
- void enterObject(PiccodeScriptParser.ObjectContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#object}.
- * @param ctx the parse tree
- */
- void exitObject(PiccodeScriptParser.ObjectContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#expr_list}.
- * @param ctx the parse tree
- */
- void enterExpr_list(PiccodeScriptParser.Expr_listContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#expr_list}.
- * @param ctx the parse tree
- */
- void exitExpr_list(PiccodeScriptParser.Expr_listContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#call_expr_list}.
- * @param ctx the parse tree
- */
- void enterCall_expr_list(PiccodeScriptParser.Call_expr_listContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#call_expr_list}.
- * @param ctx the parse tree
- */
- void exitCall_expr_list(PiccodeScriptParser.Call_expr_listContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#call_expr}.
- * @param ctx the parse tree
- */
- void enterCall_expr(PiccodeScriptParser.Call_exprContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#call_expr}.
- * @param ctx the parse tree
- */
- void exitCall_expr(PiccodeScriptParser.Call_exprContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#key_val_pair}.
- * @param ctx the parse tree
- */
- void enterKey_val_pair(PiccodeScriptParser.Key_val_pairContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#key_val_pair}.
- * @param ctx the parse tree
- */
- void exitKey_val_pair(PiccodeScriptParser.Key_val_pairContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#key_val_pairs}.
- * @param ctx the parse tree
- */
- void enterKey_val_pairs(PiccodeScriptParser.Key_val_pairsContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#key_val_pairs}.
- * @param ctx the parse tree
- */
- void exitKey_val_pairs(PiccodeScriptParser.Key_val_pairsContext ctx);
- /**
- * Enter a parse tree produced by {@link PiccodeScriptParser#do_expr}.
- * @param ctx the parse tree
- */
- void enterDo_expr(PiccodeScriptParser.Do_exprContext ctx);
- /**
- * Exit a parse tree produced by {@link PiccodeScriptParser#do_expr}.
- * @param ctx the parse tree
- */
- void exitDo_expr(PiccodeScriptParser.Do_exprContext ctx);
-}
\ No newline at end of file
diff --git a/src/main/java/org/piccode/antlr4/PiccodeScriptParser.java b/src/main/java/org/piccode/antlr4/PiccodeScriptParser.java
deleted file mode 100644
index 4bb5ae5..0000000
--- a/src/main/java/org/piccode/antlr4/PiccodeScriptParser.java
+++ /dev/null
@@ -1,2564 +0,0 @@
-// Generated from PiccodeScript.g4 by ANTLR 4.9.3
-
- package org.piccode.antlr4;
-
-import org.antlr.v4.runtime.atn.*;
-import org.antlr.v4.runtime.dfa.DFA;
-import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.misc.*;
-import org.antlr.v4.runtime.tree.*;
-import java.util.List;
-import java.util.Iterator;
-import java.util.ArrayList;
-
-@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
-public class PiccodeScriptParser extends Parser {
- static { RuntimeMetaData.checkVersion("4.9.3", RuntimeMetaData.VERSION); }
-
- protected static final DFA[] _decisionToDFA;
- protected static final PredictionContextCache _sharedContextCache =
- new PredictionContextCache();
- public static final int
- ADD=1, SUB=2, MUL=3, DIV=4, GT=5, GE=6, LT=7, LE=8, EQ=9, NE=10, AND=11,
- OR=12, SHL=13, SHR=14, BAND=15, BOR=16, EXCLAIM=17, PIPE=18, LBRACE=19,
- RBRACE=20, LPAREN=21, RPAREN=22, LBRACKET=23, RBRACKET=24, COLON=25, COMMA=26,
- SEMI=27, ARROW=28, TILDE=29, ASSIGN=30, LET=31, FUNCTION=32, WHEN=33,
- IMPORT=34, IS=35, IF=36, ELSE=37, MODULE=38, DO=39, NUMBER=40, STRING=41,
- DOT=42, LINE_COMMENT=43, BLOCK_COMMENT=44, ID=45, WS=46;
- public static final int
- RULE_stmts = 0, RULE_stmt = 1, RULE_import_module = 2, RULE_module = 3,
- RULE_module_stmts = 4, RULE_module_stmt = 5, RULE_func = 6, RULE_func_args = 7,
- RULE_arg_list = 8, RULE_arg = 9, RULE_literal_expr = 10, RULE_expr_stmt = 11,
- RULE_expr = 12, RULE_unary = 13, RULE_if_expr = 14, RULE_when_expr = 15,
- RULE_when_cases = 16, RULE_when_case = 17, RULE_else_case = 18, RULE_var_decl = 19,
- RULE_tuple = 20, RULE_array = 21, RULE_object = 22, RULE_expr_list = 23,
- RULE_call_expr_list = 24, RULE_call_expr = 25, RULE_key_val_pair = 26,
- RULE_key_val_pairs = 27, RULE_do_expr = 28;
- private static String[] makeRuleNames() {
- return new String[] {
- "stmts", "stmt", "import_module", "module", "module_stmts", "module_stmt",
- "func", "func_args", "arg_list", "arg", "literal_expr", "expr_stmt",
- "expr", "unary", "if_expr", "when_expr", "when_cases", "when_case", "else_case",
- "var_decl", "tuple", "array", "object", "expr_list", "call_expr_list",
- "call_expr", "key_val_pair", "key_val_pairs", "do_expr"
- };
- }
- public static final String[] ruleNames = makeRuleNames();
-
- private static String[] makeLiteralNames() {
- return new String[] {
- null, "'+'", "'-'", "'*'", "'/'", "'>'", "'>='", "'<'", "'<='", "'=='",
- "'!='", "'&&'", "'||'", "'>>'", "'<<'", "'&'", "'|'", "'!'", "'|>'",
- "'{'", "'}'", "'('", "')'", "'['", "']'", "':'", "','", "';'", "'->'",
- "'~'", "'='", "'let'", "'function'", "'when'", "'import'", "'is'", "'if'",
- "'else'", "'module'", "'do'", null, null, "'.'"
- };
- }
- private static final String[] _LITERAL_NAMES = makeLiteralNames();
- private static String[] makeSymbolicNames() {
- return new String[] {
- null, "ADD", "SUB", "MUL", "DIV", "GT", "GE", "LT", "LE", "EQ", "NE",
- "AND", "OR", "SHL", "SHR", "BAND", "BOR", "EXCLAIM", "PIPE", "LBRACE",
- "RBRACE", "LPAREN", "RPAREN", "LBRACKET", "RBRACKET", "COLON", "COMMA",
- "SEMI", "ARROW", "TILDE", "ASSIGN", "LET", "FUNCTION", "WHEN", "IMPORT",
- "IS", "IF", "ELSE", "MODULE", "DO", "NUMBER", "STRING", "DOT", "LINE_COMMENT",
- "BLOCK_COMMENT", "ID", "WS"
- };
- }
- private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
- public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
-
- /**
- * @deprecated Use {@link #VOCABULARY} instead.
- */
- @Deprecated
- public static final String[] tokenNames;
- static {
- tokenNames = new String[_SYMBOLIC_NAMES.length];
- for (int i = 0; i < tokenNames.length; i++) {
- tokenNames[i] = VOCABULARY.getLiteralName(i);
- if (tokenNames[i] == null) {
- tokenNames[i] = VOCABULARY.getSymbolicName(i);
- }
-
- if (tokenNames[i] == null) {
- tokenNames[i] = "";
- }
- }
- }
-
- @Override
- @Deprecated
- public String[] getTokenNames() {
- return tokenNames;
- }
-
- @Override
-
- public Vocabulary getVocabulary() {
- return VOCABULARY;
- }
-
- @Override
- public String getGrammarFileName() { return "PiccodeScript.g4"; }
-
- @Override
- public String[] getRuleNames() { return ruleNames; }
-
- @Override
- public String getSerializedATN() { return _serializedATN; }
-
- @Override
- public ATN getATN() { return _ATN; }
-
- public PiccodeScriptParser(TokenStream input) {
- super(input);
- _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
- }
-
- public static class StmtsContext extends ParserRuleContext {
- public List stmt() {
- return getRuleContexts(StmtContext.class);
- }
- public StmtContext stmt(int i) {
- return getRuleContext(StmtContext.class,i);
- }
- public TerminalNode EOF() { return getToken(PiccodeScriptParser.EOF, 0); }
- public StmtsContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_stmts; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterStmts(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitStmts(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitStmts(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final StmtsContext stmts() throws RecognitionException {
- StmtsContext _localctx = new StmtsContext(_ctx, getState());
- enterRule(_localctx, 0, RULE_stmts);
- int _la;
- try {
- setState(65);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) {
- case 1:
- enterOuterAlt(_localctx, 1);
- {
- setState(61);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << SUB) | (1L << BAND) | (1L << EXCLAIM) | (1L << LBRACE) | (1L << LPAREN) | (1L << LBRACKET) | (1L << TILDE) | (1L << LET) | (1L << FUNCTION) | (1L << WHEN) | (1L << IMPORT) | (1L << IF) | (1L << MODULE) | (1L << DO) | (1L << NUMBER) | (1L << STRING) | (1L << ID))) != 0)) {
- {
- {
- setState(58);
- stmt();
- }
- }
- setState(63);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- }
- break;
- case 2:
- enterOuterAlt(_localctx, 2);
- {
- setState(64);
- match(EOF);
- }
- break;
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class StmtContext extends ParserRuleContext {
- public Import_moduleContext import_module() {
- return getRuleContext(Import_moduleContext.class,0);
- }
- public FuncContext func() {
- return getRuleContext(FuncContext.class,0);
- }
- public ModuleContext module() {
- return getRuleContext(ModuleContext.class,0);
- }
- public Expr_stmtContext expr_stmt() {
- return getRuleContext(Expr_stmtContext.class,0);
- }
- public StmtContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_stmt; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterStmt(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitStmt(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitStmt(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final StmtContext stmt() throws RecognitionException {
- StmtContext _localctx = new StmtContext(_ctx, getState());
- enterRule(_localctx, 2, RULE_stmt);
- try {
- setState(71);
- _errHandler.sync(this);
- switch (_input.LA(1)) {
- case IMPORT:
- enterOuterAlt(_localctx, 1);
- {
- setState(67);
- import_module();
- }
- break;
- case FUNCTION:
- enterOuterAlt(_localctx, 2);
- {
- setState(68);
- func();
- }
- break;
- case MODULE:
- enterOuterAlt(_localctx, 3);
- {
- setState(69);
- module();
- }
- break;
- case SUB:
- case BAND:
- case EXCLAIM:
- case LBRACE:
- case LPAREN:
- case LBRACKET:
- case TILDE:
- case LET:
- case WHEN:
- case IF:
- case DO:
- case NUMBER:
- case STRING:
- case ID:
- enterOuterAlt(_localctx, 4);
- {
- setState(70);
- expr_stmt();
- }
- break;
- default:
- throw new NoViableAltException(this);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Import_moduleContext extends ParserRuleContext {
- public TerminalNode IMPORT() { return getToken(PiccodeScriptParser.IMPORT, 0); }
- public List ID() { return getTokens(PiccodeScriptParser.ID); }
- public TerminalNode ID(int i) {
- return getToken(PiccodeScriptParser.ID, i);
- }
- public TerminalNode COLON() { return getToken(PiccodeScriptParser.COLON, 0); }
- public Import_moduleContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_import_module; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterImport_module(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitImport_module(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitImport_module(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Import_moduleContext import_module() throws RecognitionException {
- Import_moduleContext _localctx = new Import_moduleContext(_ctx, getState());
- enterRule(_localctx, 4, RULE_import_module);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(73);
- match(IMPORT);
- setState(74);
- match(ID);
- setState(75);
- match(COLON);
- setState(76);
- match(ID);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class ModuleContext extends ParserRuleContext {
- public TerminalNode MODULE() { return getToken(PiccodeScriptParser.MODULE, 0); }
- public TerminalNode ID() { return getToken(PiccodeScriptParser.ID, 0); }
- public TerminalNode LBRACE() { return getToken(PiccodeScriptParser.LBRACE, 0); }
- public Module_stmtsContext module_stmts() {
- return getRuleContext(Module_stmtsContext.class,0);
- }
- public TerminalNode RBRACE() { return getToken(PiccodeScriptParser.RBRACE, 0); }
- public ModuleContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_module; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterModule(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitModule(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitModule(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ModuleContext module() throws RecognitionException {
- ModuleContext _localctx = new ModuleContext(_ctx, getState());
- enterRule(_localctx, 6, RULE_module);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(78);
- match(MODULE);
- setState(79);
- match(ID);
- setState(80);
- match(LBRACE);
- setState(81);
- module_stmts();
- setState(82);
- match(RBRACE);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Module_stmtsContext extends ParserRuleContext {
- public List module_stmt() {
- return getRuleContexts(Module_stmtContext.class);
- }
- public Module_stmtContext module_stmt(int i) {
- return getRuleContext(Module_stmtContext.class,i);
- }
- public Module_stmtsContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_module_stmts; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterModule_stmts(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitModule_stmts(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitModule_stmts(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Module_stmtsContext module_stmts() throws RecognitionException {
- Module_stmtsContext _localctx = new Module_stmtsContext(_ctx, getState());
- enterRule(_localctx, 8, RULE_module_stmts);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(87);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LET) | (1L << FUNCTION) | (1L << MODULE))) != 0)) {
- {
- {
- setState(84);
- module_stmt();
- }
- }
- setState(89);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Module_stmtContext extends ParserRuleContext {
- public FuncContext func() {
- return getRuleContext(FuncContext.class,0);
- }
- public Var_declContext var_decl() {
- return getRuleContext(Var_declContext.class,0);
- }
- public ModuleContext module() {
- return getRuleContext(ModuleContext.class,0);
- }
- public Module_stmtContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_module_stmt; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterModule_stmt(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitModule_stmt(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitModule_stmt(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Module_stmtContext module_stmt() throws RecognitionException {
- Module_stmtContext _localctx = new Module_stmtContext(_ctx, getState());
- enterRule(_localctx, 10, RULE_module_stmt);
- try {
- setState(93);
- _errHandler.sync(this);
- switch (_input.LA(1)) {
- case FUNCTION:
- enterOuterAlt(_localctx, 1);
- {
- setState(90);
- func();
- }
- break;
- case LET:
- enterOuterAlt(_localctx, 2);
- {
- setState(91);
- var_decl();
- }
- break;
- case MODULE:
- enterOuterAlt(_localctx, 3);
- {
- setState(92);
- module();
- }
- break;
- default:
- throw new NoViableAltException(this);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class FuncContext extends ParserRuleContext {
- public TerminalNode FUNCTION() { return getToken(PiccodeScriptParser.FUNCTION, 0); }
- public TerminalNode ID() { return getToken(PiccodeScriptParser.ID, 0); }
- public Func_argsContext func_args() {
- return getRuleContext(Func_argsContext.class,0);
- }
- public TerminalNode ASSIGN() { return getToken(PiccodeScriptParser.ASSIGN, 0); }
- public ExprContext expr() {
- return getRuleContext(ExprContext.class,0);
- }
- public FuncContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_func; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterFunc(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitFunc(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitFunc(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final FuncContext func() throws RecognitionException {
- FuncContext _localctx = new FuncContext(_ctx, getState());
- enterRule(_localctx, 12, RULE_func);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(95);
- match(FUNCTION);
- setState(96);
- match(ID);
- setState(97);
- func_args();
- setState(98);
- match(ASSIGN);
- setState(99);
- expr(0);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Func_argsContext extends ParserRuleContext {
- public TerminalNode LPAREN() { return getToken(PiccodeScriptParser.LPAREN, 0); }
- public TerminalNode RPAREN() { return getToken(PiccodeScriptParser.RPAREN, 0); }
- public Arg_listContext arg_list() {
- return getRuleContext(Arg_listContext.class,0);
- }
- public Func_argsContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_func_args; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterFunc_args(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitFunc_args(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitFunc_args(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Func_argsContext func_args() throws RecognitionException {
- Func_argsContext _localctx = new Func_argsContext(_ctx, getState());
- enterRule(_localctx, 14, RULE_func_args);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(101);
- match(LPAREN);
- setState(103);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==ID) {
- {
- setState(102);
- arg_list();
- }
- }
-
- setState(105);
- match(RPAREN);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Arg_listContext extends ParserRuleContext {
- public List arg() {
- return getRuleContexts(ArgContext.class);
- }
- public ArgContext arg(int i) {
- return getRuleContext(ArgContext.class,i);
- }
- public List COMMA() { return getTokens(PiccodeScriptParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(PiccodeScriptParser.COMMA, i);
- }
- public Arg_listContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_arg_list; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterArg_list(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitArg_list(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitArg_list(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Arg_listContext arg_list() throws RecognitionException {
- Arg_listContext _localctx = new Arg_listContext(_ctx, getState());
- enterRule(_localctx, 16, RULE_arg_list);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(107);
- arg();
- setState(112);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==COMMA) {
- {
- {
- setState(108);
- match(COMMA);
- setState(109);
- arg();
- }
- }
- setState(114);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class ArgContext extends ParserRuleContext {
- public TerminalNode ID() { return getToken(PiccodeScriptParser.ID, 0); }
- public TerminalNode ASSIGN() { return getToken(PiccodeScriptParser.ASSIGN, 0); }
- public Literal_exprContext literal_expr() {
- return getRuleContext(Literal_exprContext.class,0);
- }
- public ArgContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_arg; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterArg(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitArg(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitArg(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ArgContext arg() throws RecognitionException {
- ArgContext _localctx = new ArgContext(_ctx, getState());
- enterRule(_localctx, 18, RULE_arg);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(115);
- match(ID);
- setState(118);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==ASSIGN) {
- {
- setState(116);
- match(ASSIGN);
- setState(117);
- literal_expr();
- }
- }
-
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Literal_exprContext extends ParserRuleContext {
- public TerminalNode NUMBER() { return getToken(PiccodeScriptParser.NUMBER, 0); }
- public TerminalNode STRING() { return getToken(PiccodeScriptParser.STRING, 0); }
- public ArrayContext array() {
- return getRuleContext(ArrayContext.class,0);
- }
- public TupleContext tuple() {
- return getRuleContext(TupleContext.class,0);
- }
- public ObjectContext object() {
- return getRuleContext(ObjectContext.class,0);
- }
- public Literal_exprContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_literal_expr; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterLiteral_expr(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitLiteral_expr(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitLiteral_expr(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Literal_exprContext literal_expr() throws RecognitionException {
- Literal_exprContext _localctx = new Literal_exprContext(_ctx, getState());
- enterRule(_localctx, 20, RULE_literal_expr);
- try {
- setState(125);
- _errHandler.sync(this);
- switch (_input.LA(1)) {
- case NUMBER:
- enterOuterAlt(_localctx, 1);
- {
- setState(120);
- match(NUMBER);
- }
- break;
- case STRING:
- enterOuterAlt(_localctx, 2);
- {
- setState(121);
- match(STRING);
- }
- break;
- case LBRACKET:
- enterOuterAlt(_localctx, 3);
- {
- setState(122);
- array();
- }
- break;
- case LPAREN:
- enterOuterAlt(_localctx, 4);
- {
- setState(123);
- tuple();
- }
- break;
- case LBRACE:
- enterOuterAlt(_localctx, 5);
- {
- setState(124);
- object();
- }
- break;
- default:
- throw new NoViableAltException(this);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Expr_stmtContext extends ParserRuleContext {
- public ExprContext expr() {
- return getRuleContext(ExprContext.class,0);
- }
- public Expr_stmtContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_expr_stmt; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterExpr_stmt(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitExpr_stmt(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitExpr_stmt(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Expr_stmtContext expr_stmt() throws RecognitionException {
- Expr_stmtContext _localctx = new Expr_stmtContext(_ctx, getState());
- enterRule(_localctx, 22, RULE_expr_stmt);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(127);
- expr(0);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class ExprContext extends ParserRuleContext {
- public Var_declContext var_decl() {
- return getRuleContext(Var_declContext.class,0);
- }
- public TerminalNode LPAREN() { return getToken(PiccodeScriptParser.LPAREN, 0); }
- public TerminalNode RPAREN() { return getToken(PiccodeScriptParser.RPAREN, 0); }
- public List expr() {
- return getRuleContexts(ExprContext.class);
- }
- public ExprContext expr(int i) {
- return getRuleContext(ExprContext.class,i);
- }
- public UnaryContext unary() {
- return getRuleContext(UnaryContext.class,0);
- }
- public If_exprContext if_expr() {
- return getRuleContext(If_exprContext.class,0);
- }
- public When_exprContext when_expr() {
- return getRuleContext(When_exprContext.class,0);
- }
- public Do_exprContext do_expr() {
- return getRuleContext(Do_exprContext.class,0);
- }
- public ArrayContext array() {
- return getRuleContext(ArrayContext.class,0);
- }
- public TupleContext tuple() {
- return getRuleContext(TupleContext.class,0);
- }
- public ObjectContext object() {
- return getRuleContext(ObjectContext.class,0);
- }
- public TerminalNode ID() { return getToken(PiccodeScriptParser.ID, 0); }
- public TerminalNode NUMBER() { return getToken(PiccodeScriptParser.NUMBER, 0); }
- public TerminalNode STRING() { return getToken(PiccodeScriptParser.STRING, 0); }
- public TerminalNode DOT() { return getToken(PiccodeScriptParser.DOT, 0); }
- public TerminalNode PIPE() { return getToken(PiccodeScriptParser.PIPE, 0); }
- public TerminalNode OR() { return getToken(PiccodeScriptParser.OR, 0); }
- public TerminalNode AND() { return getToken(PiccodeScriptParser.AND, 0); }
- public TerminalNode EQ() { return getToken(PiccodeScriptParser.EQ, 0); }
- public TerminalNode NE() { return getToken(PiccodeScriptParser.NE, 0); }
- public TerminalNode LT() { return getToken(PiccodeScriptParser.LT, 0); }
- public TerminalNode LE() { return getToken(PiccodeScriptParser.LE, 0); }
- public TerminalNode GT() { return getToken(PiccodeScriptParser.GT, 0); }
- public TerminalNode GE() { return getToken(PiccodeScriptParser.GE, 0); }
- public TerminalNode SHL() { return getToken(PiccodeScriptParser.SHL, 0); }
- public TerminalNode SHR() { return getToken(PiccodeScriptParser.SHR, 0); }
- public TerminalNode BOR() { return getToken(PiccodeScriptParser.BOR, 0); }
- public TerminalNode BAND() { return getToken(PiccodeScriptParser.BAND, 0); }
- public TerminalNode MUL() { return getToken(PiccodeScriptParser.MUL, 0); }
- public TerminalNode DIV() { return getToken(PiccodeScriptParser.DIV, 0); }
- public TerminalNode ADD() { return getToken(PiccodeScriptParser.ADD, 0); }
- public TerminalNode SUB() { return getToken(PiccodeScriptParser.SUB, 0); }
- public TerminalNode COLON() { return getToken(PiccodeScriptParser.COLON, 0); }
- public Call_expr_listContext call_expr_list() {
- return getRuleContext(Call_expr_listContext.class,0);
- }
- public ExprContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_expr; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterExpr(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitExpr(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitExpr(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ExprContext expr() throws RecognitionException {
- return expr(0);
- }
-
- private ExprContext expr(int _p) throws RecognitionException {
- ParserRuleContext _parentctx = _ctx;
- int _parentState = getState();
- ExprContext _localctx = new ExprContext(_ctx, _parentState);
- ExprContext _prevctx = _localctx;
- int _startState = 24;
- enterRecursionRule(_localctx, 24, RULE_expr, _p);
- int _la;
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(146);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
- case 1:
- {
- setState(130);
- var_decl();
- }
- break;
- case 2:
- {
- setState(131);
- match(LPAREN);
- setState(133);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << SUB) | (1L << BAND) | (1L << EXCLAIM) | (1L << LBRACE) | (1L << LPAREN) | (1L << LBRACKET) | (1L << TILDE) | (1L << LET) | (1L << WHEN) | (1L << IF) | (1L << DO) | (1L << NUMBER) | (1L << STRING) | (1L << ID))) != 0)) {
- {
- setState(132);
- expr(0);
- }
- }
-
- setState(135);
- match(RPAREN);
- }
- break;
- case 3:
- {
- setState(136);
- unary();
- }
- break;
- case 4:
- {
- setState(137);
- if_expr();
- }
- break;
- case 5:
- {
- setState(138);
- when_expr();
- }
- break;
- case 6:
- {
- setState(139);
- do_expr();
- }
- break;
- case 7:
- {
- setState(140);
- array();
- }
- break;
- case 8:
- {
- setState(141);
- tuple();
- }
- break;
- case 9:
- {
- setState(142);
- object();
- }
- break;
- case 10:
- {
- setState(143);
- match(ID);
- }
- break;
- case 11:
- {
- setState(144);
- match(NUMBER);
- }
- break;
- case 12:
- {
- setState(145);
- match(STRING);
- }
- break;
- }
- _ctx.stop = _input.LT(-1);
- setState(216);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,13,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- if ( _parseListeners!=null ) triggerExitRuleEvent();
- _prevctx = _localctx;
- {
- setState(214);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
- case 1:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(148);
- if (!(precpred(_ctx, 31))) throw new FailedPredicateException(this, "precpred(_ctx, 31)");
- setState(149);
- match(DOT);
- setState(150);
- expr(32);
- }
- break;
- case 2:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(151);
- if (!(precpred(_ctx, 30))) throw new FailedPredicateException(this, "precpred(_ctx, 30)");
- setState(152);
- match(PIPE);
- setState(153);
- expr(31);
- }
- break;
- case 3:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(154);
- if (!(precpred(_ctx, 29))) throw new FailedPredicateException(this, "precpred(_ctx, 29)");
- setState(155);
- match(OR);
- setState(156);
- expr(30);
- }
- break;
- case 4:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(157);
- if (!(precpred(_ctx, 28))) throw new FailedPredicateException(this, "precpred(_ctx, 28)");
- setState(158);
- match(AND);
- setState(159);
- expr(29);
- }
- break;
- case 5:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(160);
- if (!(precpred(_ctx, 27))) throw new FailedPredicateException(this, "precpred(_ctx, 27)");
- setState(161);
- match(EQ);
- setState(162);
- expr(28);
- }
- break;
- case 6:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(163);
- if (!(precpred(_ctx, 26))) throw new FailedPredicateException(this, "precpred(_ctx, 26)");
- setState(164);
- match(NE);
- setState(165);
- expr(27);
- }
- break;
- case 7:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(166);
- if (!(precpred(_ctx, 25))) throw new FailedPredicateException(this, "precpred(_ctx, 25)");
- setState(167);
- match(LT);
- setState(168);
- expr(26);
- }
- break;
- case 8:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(169);
- if (!(precpred(_ctx, 24))) throw new FailedPredicateException(this, "precpred(_ctx, 24)");
- setState(170);
- match(LE);
- setState(171);
- expr(25);
- }
- break;
- case 9:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(172);
- if (!(precpred(_ctx, 23))) throw new FailedPredicateException(this, "precpred(_ctx, 23)");
- setState(173);
- match(GT);
- setState(174);
- expr(24);
- }
- break;
- case 10:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(175);
- if (!(precpred(_ctx, 22))) throw new FailedPredicateException(this, "precpred(_ctx, 22)");
- setState(176);
- match(GE);
- setState(177);
- expr(23);
- }
- break;
- case 11:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(178);
- if (!(precpred(_ctx, 21))) throw new FailedPredicateException(this, "precpred(_ctx, 21)");
- setState(179);
- match(SHL);
- setState(180);
- expr(22);
- }
- break;
- case 12:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(181);
- if (!(precpred(_ctx, 20))) throw new FailedPredicateException(this, "precpred(_ctx, 20)");
- setState(182);
- match(SHR);
- setState(183);
- expr(21);
- }
- break;
- case 13:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(184);
- if (!(precpred(_ctx, 19))) throw new FailedPredicateException(this, "precpred(_ctx, 19)");
- setState(185);
- match(BOR);
- setState(186);
- expr(20);
- }
- break;
- case 14:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(187);
- if (!(precpred(_ctx, 18))) throw new FailedPredicateException(this, "precpred(_ctx, 18)");
- setState(188);
- match(BAND);
- setState(189);
- expr(19);
- }
- break;
- case 15:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(190);
- if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)");
- setState(191);
- match(MUL);
- setState(192);
- expr(18);
- }
- break;
- case 16:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(193);
- if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)");
- setState(194);
- match(DIV);
- setState(195);
- expr(17);
- }
- break;
- case 17:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(196);
- if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)");
- setState(197);
- match(ADD);
- setState(198);
- expr(16);
- }
- break;
- case 18:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(199);
- if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)");
- setState(200);
- match(SUB);
- setState(201);
- expr(15);
- }
- break;
- case 19:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(202);
- if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)");
- setState(203);
- match(DOT);
- setState(204);
- expr(14);
- }
- break;
- case 20:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(205);
- if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
- setState(206);
- match(COLON);
- setState(207);
- expr(13);
- }
- break;
- case 21:
- {
- _localctx = new ExprContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(208);
- if (!(precpred(_ctx, 33))) throw new FailedPredicateException(this, "precpred(_ctx, 33)");
- setState(209);
- match(LPAREN);
- setState(211);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << SUB) | (1L << BAND) | (1L << EXCLAIM) | (1L << LBRACE) | (1L << LPAREN) | (1L << LBRACKET) | (1L << TILDE) | (1L << LET) | (1L << WHEN) | (1L << IF) | (1L << DO) | (1L << NUMBER) | (1L << STRING) | (1L << ID))) != 0)) {
- {
- setState(210);
- call_expr_list();
- }
- }
-
- setState(213);
- match(RPAREN);
- }
- break;
- }
- }
- }
- setState(218);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,13,_ctx);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- unrollRecursionContexts(_parentctx);
- }
- return _localctx;
- }
-
- public static class UnaryContext extends ParserRuleContext {
- public TerminalNode EXCLAIM() { return getToken(PiccodeScriptParser.EXCLAIM, 0); }
- public ExprContext expr() {
- return getRuleContext(ExprContext.class,0);
- }
- public TerminalNode SUB() { return getToken(PiccodeScriptParser.SUB, 0); }
- public TerminalNode TILDE() { return getToken(PiccodeScriptParser.TILDE, 0); }
- public TerminalNode BAND() { return getToken(PiccodeScriptParser.BAND, 0); }
- public UnaryContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_unary; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterUnary(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitUnary(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitUnary(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final UnaryContext unary() throws RecognitionException {
- UnaryContext _localctx = new UnaryContext(_ctx, getState());
- enterRule(_localctx, 26, RULE_unary);
- try {
- setState(227);
- _errHandler.sync(this);
- switch (_input.LA(1)) {
- case EXCLAIM:
- enterOuterAlt(_localctx, 1);
- {
- setState(219);
- match(EXCLAIM);
- setState(220);
- expr(0);
- }
- break;
- case SUB:
- enterOuterAlt(_localctx, 2);
- {
- setState(221);
- match(SUB);
- setState(222);
- expr(0);
- }
- break;
- case TILDE:
- enterOuterAlt(_localctx, 3);
- {
- setState(223);
- match(TILDE);
- setState(224);
- expr(0);
- }
- break;
- case BAND:
- enterOuterAlt(_localctx, 4);
- {
- setState(225);
- match(BAND);
- setState(226);
- expr(0);
- }
- break;
- default:
- throw new NoViableAltException(this);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class If_exprContext extends ParserRuleContext {
- public TerminalNode IF() { return getToken(PiccodeScriptParser.IF, 0); }
- public List expr() {
- return getRuleContexts(ExprContext.class);
- }
- public ExprContext expr(int i) {
- return getRuleContext(ExprContext.class,i);
- }
- public List LBRACE() { return getTokens(PiccodeScriptParser.LBRACE); }
- public TerminalNode LBRACE(int i) {
- return getToken(PiccodeScriptParser.LBRACE, i);
- }
- public List RBRACE() { return getTokens(PiccodeScriptParser.RBRACE); }
- public TerminalNode RBRACE(int i) {
- return getToken(PiccodeScriptParser.RBRACE, i);
- }
- public TerminalNode ELSE() { return getToken(PiccodeScriptParser.ELSE, 0); }
- public If_exprContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_if_expr; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterIf_expr(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitIf_expr(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitIf_expr(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final If_exprContext if_expr() throws RecognitionException {
- If_exprContext _localctx = new If_exprContext(_ctx, getState());
- enterRule(_localctx, 28, RULE_if_expr);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(229);
- match(IF);
- setState(230);
- expr(0);
- setState(231);
- match(LBRACE);
- setState(232);
- expr(0);
- setState(233);
- match(RBRACE);
- setState(234);
- match(ELSE);
- setState(235);
- match(LBRACE);
- setState(236);
- expr(0);
- setState(237);
- match(RBRACE);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class When_exprContext extends ParserRuleContext {
- public TerminalNode WHEN() { return getToken(PiccodeScriptParser.WHEN, 0); }
- public ExprContext expr() {
- return getRuleContext(ExprContext.class,0);
- }
- public TerminalNode LBRACE() { return getToken(PiccodeScriptParser.LBRACE, 0); }
- public When_casesContext when_cases() {
- return getRuleContext(When_casesContext.class,0);
- }
- public TerminalNode RBRACE() { return getToken(PiccodeScriptParser.RBRACE, 0); }
- public Else_caseContext else_case() {
- return getRuleContext(Else_caseContext.class,0);
- }
- public When_exprContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_when_expr; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterWhen_expr(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitWhen_expr(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitWhen_expr(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final When_exprContext when_expr() throws RecognitionException {
- When_exprContext _localctx = new When_exprContext(_ctx, getState());
- enterRule(_localctx, 30, RULE_when_expr);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(239);
- match(WHEN);
- setState(240);
- expr(0);
- setState(241);
- match(LBRACE);
- setState(242);
- when_cases();
- setState(244);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==ELSE) {
- {
- setState(243);
- else_case();
- }
- }
-
- setState(246);
- match(RBRACE);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class When_casesContext extends ParserRuleContext {
- public List when_case() {
- return getRuleContexts(When_caseContext.class);
- }
- public When_caseContext when_case(int i) {
- return getRuleContext(When_caseContext.class,i);
- }
- public When_casesContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_when_cases; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterWhen_cases(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitWhen_cases(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitWhen_cases(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final When_casesContext when_cases() throws RecognitionException {
- When_casesContext _localctx = new When_casesContext(_ctx, getState());
- enterRule(_localctx, 32, RULE_when_cases);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(251);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==IS) {
- {
- {
- setState(248);
- when_case();
- }
- }
- setState(253);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class When_caseContext extends ParserRuleContext {
- public TerminalNode IS() { return getToken(PiccodeScriptParser.IS, 0); }
- public Expr_listContext expr_list() {
- return getRuleContext(Expr_listContext.class,0);
- }
- public TerminalNode ARROW() { return getToken(PiccodeScriptParser.ARROW, 0); }
- public ExprContext expr() {
- return getRuleContext(ExprContext.class,0);
- }
- public When_caseContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_when_case; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterWhen_case(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitWhen_case(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitWhen_case(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final When_caseContext when_case() throws RecognitionException {
- When_caseContext _localctx = new When_caseContext(_ctx, getState());
- enterRule(_localctx, 34, RULE_when_case);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(254);
- match(IS);
- setState(255);
- expr_list();
- setState(256);
- match(ARROW);
- setState(257);
- expr(0);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Else_caseContext extends ParserRuleContext {
- public TerminalNode ELSE() { return getToken(PiccodeScriptParser.ELSE, 0); }
- public TerminalNode ARROW() { return getToken(PiccodeScriptParser.ARROW, 0); }
- public ExprContext expr() {
- return getRuleContext(ExprContext.class,0);
- }
- public Else_caseContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_else_case; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterElse_case(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitElse_case(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitElse_case(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Else_caseContext else_case() throws RecognitionException {
- Else_caseContext _localctx = new Else_caseContext(_ctx, getState());
- enterRule(_localctx, 36, RULE_else_case);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(259);
- match(ELSE);
- setState(260);
- match(ARROW);
- setState(261);
- expr(0);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Var_declContext extends ParserRuleContext {
- public TerminalNode LET() { return getToken(PiccodeScriptParser.LET, 0); }
- public TerminalNode ID() { return getToken(PiccodeScriptParser.ID, 0); }
- public TerminalNode ASSIGN() { return getToken(PiccodeScriptParser.ASSIGN, 0); }
- public ExprContext expr() {
- return getRuleContext(ExprContext.class,0);
- }
- public Var_declContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_var_decl; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterVar_decl(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitVar_decl(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitVar_decl(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Var_declContext var_decl() throws RecognitionException {
- Var_declContext _localctx = new Var_declContext(_ctx, getState());
- enterRule(_localctx, 38, RULE_var_decl);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(263);
- match(LET);
- setState(264);
- match(ID);
- setState(265);
- match(ASSIGN);
- setState(266);
- expr(0);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class TupleContext extends ParserRuleContext {
- public TerminalNode LPAREN() { return getToken(PiccodeScriptParser.LPAREN, 0); }
- public Expr_listContext expr_list() {
- return getRuleContext(Expr_listContext.class,0);
- }
- public TerminalNode RPAREN() { return getToken(PiccodeScriptParser.RPAREN, 0); }
- public TupleContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_tuple; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterTuple(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitTuple(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitTuple(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final TupleContext tuple() throws RecognitionException {
- TupleContext _localctx = new TupleContext(_ctx, getState());
- enterRule(_localctx, 40, RULE_tuple);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(268);
- match(LPAREN);
- setState(269);
- expr_list();
- setState(270);
- match(RPAREN);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class ArrayContext extends ParserRuleContext {
- public TerminalNode LBRACKET() { return getToken(PiccodeScriptParser.LBRACKET, 0); }
- public TerminalNode RBRACKET() { return getToken(PiccodeScriptParser.RBRACKET, 0); }
- public Expr_listContext expr_list() {
- return getRuleContext(Expr_listContext.class,0);
- }
- public ArrayContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_array; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterArray(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitArray(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitArray(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ArrayContext array() throws RecognitionException {
- ArrayContext _localctx = new ArrayContext(_ctx, getState());
- enterRule(_localctx, 42, RULE_array);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(272);
- match(LBRACKET);
- setState(274);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << SUB) | (1L << BAND) | (1L << EXCLAIM) | (1L << LBRACE) | (1L << LPAREN) | (1L << LBRACKET) | (1L << TILDE) | (1L << LET) | (1L << WHEN) | (1L << IF) | (1L << DO) | (1L << NUMBER) | (1L << STRING) | (1L << ID))) != 0)) {
- {
- setState(273);
- expr_list();
- }
- }
-
- setState(276);
- match(RBRACKET);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class ObjectContext extends ParserRuleContext {
- public TerminalNode LBRACE() { return getToken(PiccodeScriptParser.LBRACE, 0); }
- public Key_val_pairsContext key_val_pairs() {
- return getRuleContext(Key_val_pairsContext.class,0);
- }
- public TerminalNode RBRACE() { return getToken(PiccodeScriptParser.RBRACE, 0); }
- public ObjectContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_object; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterObject(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitObject(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitObject(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ObjectContext object() throws RecognitionException {
- ObjectContext _localctx = new ObjectContext(_ctx, getState());
- enterRule(_localctx, 44, RULE_object);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(278);
- match(LBRACE);
- setState(279);
- key_val_pairs();
- setState(280);
- match(RBRACE);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Expr_listContext extends ParserRuleContext {
- public List expr() {
- return getRuleContexts(ExprContext.class);
- }
- public ExprContext expr(int i) {
- return getRuleContext(ExprContext.class,i);
- }
- public List COMMA() { return getTokens(PiccodeScriptParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(PiccodeScriptParser.COMMA, i);
- }
- public Expr_listContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_expr_list; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterExpr_list(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitExpr_list(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitExpr_list(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Expr_listContext expr_list() throws RecognitionException {
- Expr_listContext _localctx = new Expr_listContext(_ctx, getState());
- enterRule(_localctx, 46, RULE_expr_list);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(282);
- expr(0);
- setState(287);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==COMMA) {
- {
- {
- setState(283);
- match(COMMA);
- setState(284);
- expr(0);
- }
- }
- setState(289);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Call_expr_listContext extends ParserRuleContext {
- public List call_expr() {
- return getRuleContexts(Call_exprContext.class);
- }
- public Call_exprContext call_expr(int i) {
- return getRuleContext(Call_exprContext.class,i);
- }
- public List COMMA() { return getTokens(PiccodeScriptParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(PiccodeScriptParser.COMMA, i);
- }
- public Call_expr_listContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_call_expr_list; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterCall_expr_list(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitCall_expr_list(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitCall_expr_list(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Call_expr_listContext call_expr_list() throws RecognitionException {
- Call_expr_listContext _localctx = new Call_expr_listContext(_ctx, getState());
- enterRule(_localctx, 48, RULE_call_expr_list);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(290);
- call_expr();
- setState(295);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==COMMA) {
- {
- {
- setState(291);
- match(COMMA);
- setState(292);
- call_expr();
- }
- }
- setState(297);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Call_exprContext extends ParserRuleContext {
- public TerminalNode ID() { return getToken(PiccodeScriptParser.ID, 0); }
- public TerminalNode ASSIGN() { return getToken(PiccodeScriptParser.ASSIGN, 0); }
- public ExprContext expr() {
- return getRuleContext(ExprContext.class,0);
- }
- public Call_exprContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_call_expr; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterCall_expr(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitCall_expr(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitCall_expr(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Call_exprContext call_expr() throws RecognitionException {
- Call_exprContext _localctx = new Call_exprContext(_ctx, getState());
- enterRule(_localctx, 50, RULE_call_expr);
- int _la;
- try {
- setState(304);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
- case 1:
- enterOuterAlt(_localctx, 1);
- {
- setState(298);
- match(ID);
- setState(301);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==ASSIGN) {
- {
- setState(299);
- match(ASSIGN);
- setState(300);
- expr(0);
- }
- }
-
- }
- break;
- case 2:
- enterOuterAlt(_localctx, 2);
- {
- setState(303);
- expr(0);
- }
- break;
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Key_val_pairContext extends ParserRuleContext {
- public TerminalNode ID() { return getToken(PiccodeScriptParser.ID, 0); }
- public TerminalNode COLON() { return getToken(PiccodeScriptParser.COLON, 0); }
- public ExprContext expr() {
- return getRuleContext(ExprContext.class,0);
- }
- public Key_val_pairContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_key_val_pair; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterKey_val_pair(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitKey_val_pair(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitKey_val_pair(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Key_val_pairContext key_val_pair() throws RecognitionException {
- Key_val_pairContext _localctx = new Key_val_pairContext(_ctx, getState());
- enterRule(_localctx, 52, RULE_key_val_pair);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(306);
- match(ID);
- setState(307);
- match(COLON);
- setState(308);
- expr(0);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Key_val_pairsContext extends ParserRuleContext {
- public List key_val_pair() {
- return getRuleContexts(Key_val_pairContext.class);
- }
- public Key_val_pairContext key_val_pair(int i) {
- return getRuleContext(Key_val_pairContext.class,i);
- }
- public List COMMA() { return getTokens(PiccodeScriptParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(PiccodeScriptParser.COMMA, i);
- }
- public Key_val_pairsContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_key_val_pairs; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterKey_val_pairs(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitKey_val_pairs(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitKey_val_pairs(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Key_val_pairsContext key_val_pairs() throws RecognitionException {
- Key_val_pairsContext _localctx = new Key_val_pairsContext(_ctx, getState());
- enterRule(_localctx, 54, RULE_key_val_pairs);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(310);
- key_val_pair();
- setState(315);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==COMMA) {
- {
- {
- setState(311);
- match(COMMA);
- setState(312);
- key_val_pair();
- }
- }
- setState(317);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public static class Do_exprContext extends ParserRuleContext {
- public TerminalNode DO() { return getToken(PiccodeScriptParser.DO, 0); }
- public TerminalNode LBRACE() { return getToken(PiccodeScriptParser.LBRACE, 0); }
- public TerminalNode RBRACE() { return getToken(PiccodeScriptParser.RBRACE, 0); }
- public List expr() {
- return getRuleContexts(ExprContext.class);
- }
- public ExprContext expr(int i) {
- return getRuleContext(ExprContext.class,i);
- }
- public Do_exprContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_do_expr; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).enterDo_expr(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof PiccodeScriptListener ) ((PiccodeScriptListener)listener).exitDo_expr(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor extends T>)visitor).visitDo_expr(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final Do_exprContext do_expr() throws RecognitionException {
- Do_exprContext _localctx = new Do_exprContext(_ctx, getState());
- enterRule(_localctx, 56, RULE_do_expr);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(318);
- match(DO);
- setState(319);
- match(LBRACE);
- setState(323);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << SUB) | (1L << BAND) | (1L << EXCLAIM) | (1L << LBRACE) | (1L << LPAREN) | (1L << LBRACKET) | (1L << TILDE) | (1L << LET) | (1L << WHEN) | (1L << IF) | (1L << DO) | (1L << NUMBER) | (1L << STRING) | (1L << ID))) != 0)) {
- {
- {
- setState(320);
- expr(0);
- }
- }
- setState(325);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- setState(326);
- match(RBRACE);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
- switch (ruleIndex) {
- case 12:
- return expr_sempred((ExprContext)_localctx, predIndex);
- }
- return true;
- }
- private boolean expr_sempred(ExprContext _localctx, int predIndex) {
- switch (predIndex) {
- case 0:
- return precpred(_ctx, 31);
- case 1:
- return precpred(_ctx, 30);
- case 2:
- return precpred(_ctx, 29);
- case 3:
- return precpred(_ctx, 28);
- case 4:
- return precpred(_ctx, 27);
- case 5:
- return precpred(_ctx, 26);
- case 6:
- return precpred(_ctx, 25);
- case 7:
- return precpred(_ctx, 24);
- case 8:
- return precpred(_ctx, 23);
- case 9:
- return precpred(_ctx, 22);
- case 10:
- return precpred(_ctx, 21);
- case 11:
- return precpred(_ctx, 20);
- case 12:
- return precpred(_ctx, 19);
- case 13:
- return precpred(_ctx, 18);
- case 14:
- return precpred(_ctx, 17);
- case 15:
- return precpred(_ctx, 16);
- case 16:
- return precpred(_ctx, 15);
- case 17:
- return precpred(_ctx, 14);
- case 18:
- return precpred(_ctx, 13);
- case 19:
- return precpred(_ctx, 12);
- case 20:
- return precpred(_ctx, 33);
- }
- return true;
- }
-
- public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\60\u014b\4\2\t\2"+
- "\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
- "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
- "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
- "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\3\2\7\2>\n\2\f\2\16"+
- "\2A\13\2\3\2\5\2D\n\2\3\3\3\3\3\3\3\3\5\3J\n\3\3\4\3\4\3\4\3\4\3\4\3\5"+
- "\3\5\3\5\3\5\3\5\3\5\3\6\7\6X\n\6\f\6\16\6[\13\6\3\7\3\7\3\7\5\7`\n\7"+
- "\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t\5\tj\n\t\3\t\3\t\3\n\3\n\3\n\7\nq\n\n"+
- "\f\n\16\nt\13\n\3\13\3\13\3\13\5\13y\n\13\3\f\3\f\3\f\3\f\3\f\5\f\u0080"+
- "\n\f\3\r\3\r\3\16\3\16\3\16\3\16\5\16\u0088\n\16\3\16\3\16\3\16\3\16\3"+
- "\16\3\16\3\16\3\16\3\16\3\16\3\16\5\16\u0095\n\16\3\16\3\16\3\16\3\16"+
- "\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+
- "\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+
- "\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+
- "\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+
- "\3\16\3\16\3\16\5\16\u00d6\n\16\3\16\7\16\u00d9\n\16\f\16\16\16\u00dc"+
- "\13\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u00e6\n\17\3\20\3"+
- "\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\5"+
- "\21\u00f7\n\21\3\21\3\21\3\22\7\22\u00fc\n\22\f\22\16\22\u00ff\13\22\3"+
- "\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3"+
- "\26\3\26\3\26\3\26\3\27\3\27\5\27\u0115\n\27\3\27\3\27\3\30\3\30\3\30"+
- "\3\30\3\31\3\31\3\31\7\31\u0120\n\31\f\31\16\31\u0123\13\31\3\32\3\32"+
- "\3\32\7\32\u0128\n\32\f\32\16\32\u012b\13\32\3\33\3\33\3\33\5\33\u0130"+
- "\n\33\3\33\5\33\u0133\n\33\3\34\3\34\3\34\3\34\3\35\3\35\3\35\7\35\u013c"+
- "\n\35\f\35\16\35\u013f\13\35\3\36\3\36\3\36\7\36\u0144\n\36\f\36\16\36"+
- "\u0147\13\36\3\36\3\36\3\36\2\3\32\37\2\4\6\b\n\f\16\20\22\24\26\30\32"+
- "\34\36 \"$&(*,.\60\62\64\668:\2\2\2\u016a\2C\3\2\2\2\4I\3\2\2\2\6K\3\2"+
- "\2\2\bP\3\2\2\2\nY\3\2\2\2\f_\3\2\2\2\16a\3\2\2\2\20g\3\2\2\2\22m\3\2"+
- "\2\2\24u\3\2\2\2\26\177\3\2\2\2\30\u0081\3\2\2\2\32\u0094\3\2\2\2\34\u00e5"+
- "\3\2\2\2\36\u00e7\3\2\2\2 \u00f1\3\2\2\2\"\u00fd\3\2\2\2$\u0100\3\2\2"+
- "\2&\u0105\3\2\2\2(\u0109\3\2\2\2*\u010e\3\2\2\2,\u0112\3\2\2\2.\u0118"+
- "\3\2\2\2\60\u011c\3\2\2\2\62\u0124\3\2\2\2\64\u0132\3\2\2\2\66\u0134\3"+
- "\2\2\28\u0138\3\2\2\2:\u0140\3\2\2\2<>\5\4\3\2=<\3\2\2\2>A\3\2\2\2?=\3"+
- "\2\2\2?@\3\2\2\2@D\3\2\2\2A?\3\2\2\2BD\7\2\2\3C?\3\2\2\2CB\3\2\2\2D\3"+
- "\3\2\2\2EJ\5\6\4\2FJ\5\16\b\2GJ\5\b\5\2HJ\5\30\r\2IE\3\2\2\2IF\3\2\2\2"+
- "IG\3\2\2\2IH\3\2\2\2J\5\3\2\2\2KL\7$\2\2LM\7/\2\2MN\7\33\2\2NO\7/\2\2"+
- "O\7\3\2\2\2PQ\7(\2\2QR\7/\2\2RS\7\25\2\2ST\5\n\6\2TU\7\26\2\2U\t\3\2\2"+
- "\2VX\5\f\7\2WV\3\2\2\2X[\3\2\2\2YW\3\2\2\2YZ\3\2\2\2Z\13\3\2\2\2[Y\3\2"+
- "\2\2\\`\5\16\b\2]`\5(\25\2^`\5\b\5\2_\\\3\2\2\2_]\3\2\2\2_^\3\2\2\2`\r"+
- "\3\2\2\2ab\7\"\2\2bc\7/\2\2cd\5\20\t\2de\7 \2\2ef\5\32\16\2f\17\3\2\2"+
- "\2gi\7\27\2\2hj\5\22\n\2ih\3\2\2\2ij\3\2\2\2jk\3\2\2\2kl\7\30\2\2l\21"+
- "\3\2\2\2mr\5\24\13\2no\7\34\2\2oq\5\24\13\2pn\3\2\2\2qt\3\2\2\2rp\3\2"+
- "\2\2rs\3\2\2\2s\23\3\2\2\2tr\3\2\2\2ux\7/\2\2vw\7 \2\2wy\5\26\f\2xv\3"+
- "\2\2\2xy\3\2\2\2y\25\3\2\2\2z\u0080\7*\2\2{\u0080\7+\2\2|\u0080\5,\27"+
- "\2}\u0080\5*\26\2~\u0080\5.\30\2\177z\3\2\2\2\177{\3\2\2\2\177|\3\2\2"+
- "\2\177}\3\2\2\2\177~\3\2\2\2\u0080\27\3\2\2\2\u0081\u0082\5\32\16\2\u0082"+
- "\31\3\2\2\2\u0083\u0084\b\16\1\2\u0084\u0095\5(\25\2\u0085\u0087\7\27"+
- "\2\2\u0086\u0088\5\32\16\2\u0087\u0086\3\2\2\2\u0087\u0088\3\2\2\2\u0088"+
- "\u0089\3\2\2\2\u0089\u0095\7\30\2\2\u008a\u0095\5\34\17\2\u008b\u0095"+
- "\5\36\20\2\u008c\u0095\5 \21\2\u008d\u0095\5:\36\2\u008e\u0095\5,\27\2"+
- "\u008f\u0095\5*\26\2\u0090\u0095\5.\30\2\u0091\u0095\7/\2\2\u0092\u0095"+
- "\7*\2\2\u0093\u0095\7+\2\2\u0094\u0083\3\2\2\2\u0094\u0085\3\2\2\2\u0094"+
- "\u008a\3\2\2\2\u0094\u008b\3\2\2\2\u0094\u008c\3\2\2\2\u0094\u008d\3\2"+
- "\2\2\u0094\u008e\3\2\2\2\u0094\u008f\3\2\2\2\u0094\u0090\3\2\2\2\u0094"+
- "\u0091\3\2\2\2\u0094\u0092\3\2\2\2\u0094\u0093\3\2\2\2\u0095\u00da\3\2"+
- "\2\2\u0096\u0097\f!\2\2\u0097\u0098\7,\2\2\u0098\u00d9\5\32\16\"\u0099"+
- "\u009a\f \2\2\u009a\u009b\7\24\2\2\u009b\u00d9\5\32\16!\u009c\u009d\f"+
- "\37\2\2\u009d\u009e\7\16\2\2\u009e\u00d9\5\32\16 \u009f\u00a0\f\36\2\2"+
- "\u00a0\u00a1\7\r\2\2\u00a1\u00d9\5\32\16\37\u00a2\u00a3\f\35\2\2\u00a3"+
- "\u00a4\7\13\2\2\u00a4\u00d9\5\32\16\36\u00a5\u00a6\f\34\2\2\u00a6\u00a7"+
- "\7\f\2\2\u00a7\u00d9\5\32\16\35\u00a8\u00a9\f\33\2\2\u00a9\u00aa\7\t\2"+
- "\2\u00aa\u00d9\5\32\16\34\u00ab\u00ac\f\32\2\2\u00ac\u00ad\7\n\2\2\u00ad"+
- "\u00d9\5\32\16\33\u00ae\u00af\f\31\2\2\u00af\u00b0\7\7\2\2\u00b0\u00d9"+
- "\5\32\16\32\u00b1\u00b2\f\30\2\2\u00b2\u00b3\7\b\2\2\u00b3\u00d9\5\32"+
- "\16\31\u00b4\u00b5\f\27\2\2\u00b5\u00b6\7\17\2\2\u00b6\u00d9\5\32\16\30"+
- "\u00b7\u00b8\f\26\2\2\u00b8\u00b9\7\20\2\2\u00b9\u00d9\5\32\16\27\u00ba"+
- "\u00bb\f\25\2\2\u00bb\u00bc\7\22\2\2\u00bc\u00d9\5\32\16\26\u00bd\u00be"+
- "\f\24\2\2\u00be\u00bf\7\21\2\2\u00bf\u00d9\5\32\16\25\u00c0\u00c1\f\23"+
- "\2\2\u00c1\u00c2\7\5\2\2\u00c2\u00d9\5\32\16\24\u00c3\u00c4\f\22\2\2\u00c4"+
- "\u00c5\7\6\2\2\u00c5\u00d9\5\32\16\23\u00c6\u00c7\f\21\2\2\u00c7\u00c8"+
- "\7\3\2\2\u00c8\u00d9\5\32\16\22\u00c9\u00ca\f\20\2\2\u00ca\u00cb\7\4\2"+
- "\2\u00cb\u00d9\5\32\16\21\u00cc\u00cd\f\17\2\2\u00cd\u00ce\7,\2\2\u00ce"+
- "\u00d9\5\32\16\20\u00cf\u00d0\f\16\2\2\u00d0\u00d1\7\33\2\2\u00d1\u00d9"+
- "\5\32\16\17\u00d2\u00d3\f#\2\2\u00d3\u00d5\7\27\2\2\u00d4\u00d6\5\62\32"+
- "\2\u00d5\u00d4\3\2\2\2\u00d5\u00d6\3\2\2\2\u00d6\u00d7\3\2\2\2\u00d7\u00d9"+
- "\7\30\2\2\u00d8\u0096\3\2\2\2\u00d8\u0099\3\2\2\2\u00d8\u009c\3\2\2\2"+
- "\u00d8\u009f\3\2\2\2\u00d8\u00a2\3\2\2\2\u00d8\u00a5\3\2\2\2\u00d8\u00a8"+
- "\3\2\2\2\u00d8\u00ab\3\2\2\2\u00d8\u00ae\3\2\2\2\u00d8\u00b1\3\2\2\2\u00d8"+
- "\u00b4\3\2\2\2\u00d8\u00b7\3\2\2\2\u00d8\u00ba\3\2\2\2\u00d8\u00bd\3\2"+
- "\2\2\u00d8\u00c0\3\2\2\2\u00d8\u00c3\3\2\2\2\u00d8\u00c6\3\2\2\2\u00d8"+
- "\u00c9\3\2\2\2\u00d8\u00cc\3\2\2\2\u00d8\u00cf\3\2\2\2\u00d8\u00d2\3\2"+
- "\2\2\u00d9\u00dc\3\2\2\2\u00da\u00d8\3\2\2\2\u00da\u00db\3\2\2\2\u00db"+
- "\33\3\2\2\2\u00dc\u00da\3\2\2\2\u00dd\u00de\7\23\2\2\u00de\u00e6\5\32"+
- "\16\2\u00df\u00e0\7\4\2\2\u00e0\u00e6\5\32\16\2\u00e1\u00e2\7\37\2\2\u00e2"+
- "\u00e6\5\32\16\2\u00e3\u00e4\7\21\2\2\u00e4\u00e6\5\32\16\2\u00e5\u00dd"+
- "\3\2\2\2\u00e5\u00df\3\2\2\2\u00e5\u00e1\3\2\2\2\u00e5\u00e3\3\2\2\2\u00e6"+
- "\35\3\2\2\2\u00e7\u00e8\7&\2\2\u00e8\u00e9\5\32\16\2\u00e9\u00ea\7\25"+
- "\2\2\u00ea\u00eb\5\32\16\2\u00eb\u00ec\7\26\2\2\u00ec\u00ed\7\'\2\2\u00ed"+
- "\u00ee\7\25\2\2\u00ee\u00ef\5\32\16\2\u00ef\u00f0\7\26\2\2\u00f0\37\3"+
- "\2\2\2\u00f1\u00f2\7#\2\2\u00f2\u00f3\5\32\16\2\u00f3\u00f4\7\25\2\2\u00f4"+
- "\u00f6\5\"\22\2\u00f5\u00f7\5&\24\2\u00f6\u00f5\3\2\2\2\u00f6\u00f7\3"+
- "\2\2\2\u00f7\u00f8\3\2\2\2\u00f8\u00f9\7\26\2\2\u00f9!\3\2\2\2\u00fa\u00fc"+
- "\5$\23\2\u00fb\u00fa\3\2\2\2\u00fc\u00ff\3\2\2\2\u00fd\u00fb\3\2\2\2\u00fd"+
- "\u00fe\3\2\2\2\u00fe#\3\2\2\2\u00ff\u00fd\3\2\2\2\u0100\u0101\7%\2\2\u0101"+
- "\u0102\5\60\31\2\u0102\u0103\7\36\2\2\u0103\u0104\5\32\16\2\u0104%\3\2"+
- "\2\2\u0105\u0106\7\'\2\2\u0106\u0107\7\36\2\2\u0107\u0108\5\32\16\2\u0108"+
- "\'\3\2\2\2\u0109\u010a\7!\2\2\u010a\u010b\7/\2\2\u010b\u010c\7 \2\2\u010c"+
- "\u010d\5\32\16\2\u010d)\3\2\2\2\u010e\u010f\7\27\2\2\u010f\u0110\5\60"+
- "\31\2\u0110\u0111\7\30\2\2\u0111+\3\2\2\2\u0112\u0114\7\31\2\2\u0113\u0115"+
- "\5\60\31\2\u0114\u0113\3\2\2\2\u0114\u0115\3\2\2\2\u0115\u0116\3\2\2\2"+
- "\u0116\u0117\7\32\2\2\u0117-\3\2\2\2\u0118\u0119\7\25\2\2\u0119\u011a"+
- "\58\35\2\u011a\u011b\7\26\2\2\u011b/\3\2\2\2\u011c\u0121\5\32\16\2\u011d"+
- "\u011e\7\34\2\2\u011e\u0120\5\32\16\2\u011f\u011d\3\2\2\2\u0120\u0123"+
- "\3\2\2\2\u0121\u011f\3\2\2\2\u0121\u0122\3\2\2\2\u0122\61\3\2\2\2\u0123"+
- "\u0121\3\2\2\2\u0124\u0129\5\64\33\2\u0125\u0126\7\34\2\2\u0126\u0128"+
- "\5\64\33\2\u0127\u0125\3\2\2\2\u0128\u012b\3\2\2\2\u0129\u0127\3\2\2\2"+
- "\u0129\u012a\3\2\2\2\u012a\63\3\2\2\2\u012b\u0129\3\2\2\2\u012c\u012f"+
- "\7/\2\2\u012d\u012e\7 \2\2\u012e\u0130\5\32\16\2\u012f\u012d\3\2\2\2\u012f"+
- "\u0130\3\2\2\2\u0130\u0133\3\2\2\2\u0131\u0133\5\32\16\2\u0132\u012c\3"+
- "\2\2\2\u0132\u0131\3\2\2\2\u0133\65\3\2\2\2\u0134\u0135\7/\2\2\u0135\u0136"+
- "\7\33\2\2\u0136\u0137\5\32\16\2\u0137\67\3\2\2\2\u0138\u013d\5\66\34\2"+
- "\u0139\u013a\7\34\2\2\u013a\u013c\5\66\34\2\u013b\u0139\3\2\2\2\u013c"+
- "\u013f\3\2\2\2\u013d\u013b\3\2\2\2\u013d\u013e\3\2\2\2\u013e9\3\2\2\2"+
- "\u013f\u013d\3\2\2\2\u0140\u0141\7)\2\2\u0141\u0145\7\25\2\2\u0142\u0144"+
- "\5\32\16\2\u0143\u0142\3\2\2\2\u0144\u0147\3\2\2\2\u0145\u0143\3\2\2\2"+
- "\u0145\u0146\3\2\2\2\u0146\u0148\3\2\2\2\u0147\u0145\3\2\2\2\u0148\u0149"+
- "\7\26\2\2\u0149;\3\2\2\2\32?CIY_irx\177\u0087\u0094\u00d5\u00d8\u00da"+
- "\u00e5\u00f6\u00fd\u0114\u0121\u0129\u012f\u0132\u013d\u0145";
- public static final ATN _ATN =
- new ATNDeserializer().deserialize(_serializedATN.toCharArray());
- static {
- _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
- for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
- _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/java/org/piccode/antlr4/PiccodeScriptVisitor.java b/src/main/java/org/piccode/antlr4/PiccodeScriptVisitor.java
deleted file mode 100644
index 83e5f60..0000000
--- a/src/main/java/org/piccode/antlr4/PiccodeScriptVisitor.java
+++ /dev/null
@@ -1,189 +0,0 @@
-// Generated from PiccodeScript.g4 by ANTLR 4.9.3
-
- package org.piccode.antlr4;
-
-import org.antlr.v4.runtime.tree.ParseTreeVisitor;
-
-/**
- * This interface defines a complete generic visitor for a parse tree produced
- * by {@link PiccodeScriptParser}.
- *
- * @param The return type of the visit operation. Use {@link Void} for
- * operations with no return type.
- */
-public interface PiccodeScriptVisitor extends ParseTreeVisitor {
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#stmts}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitStmts(PiccodeScriptParser.StmtsContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#stmt}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitStmt(PiccodeScriptParser.StmtContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#import_module}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitImport_module(PiccodeScriptParser.Import_moduleContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#module}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitModule(PiccodeScriptParser.ModuleContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#module_stmts}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitModule_stmts(PiccodeScriptParser.Module_stmtsContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#module_stmt}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitModule_stmt(PiccodeScriptParser.Module_stmtContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#func}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitFunc(PiccodeScriptParser.FuncContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#func_args}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitFunc_args(PiccodeScriptParser.Func_argsContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#arg_list}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitArg_list(PiccodeScriptParser.Arg_listContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#arg}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitArg(PiccodeScriptParser.ArgContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#literal_expr}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitLiteral_expr(PiccodeScriptParser.Literal_exprContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#expr_stmt}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitExpr_stmt(PiccodeScriptParser.Expr_stmtContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#expr}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitExpr(PiccodeScriptParser.ExprContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#unary}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitUnary(PiccodeScriptParser.UnaryContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#if_expr}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitIf_expr(PiccodeScriptParser.If_exprContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#when_expr}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitWhen_expr(PiccodeScriptParser.When_exprContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#when_cases}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitWhen_cases(PiccodeScriptParser.When_casesContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#when_case}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitWhen_case(PiccodeScriptParser.When_caseContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#else_case}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitElse_case(PiccodeScriptParser.Else_caseContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#var_decl}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitVar_decl(PiccodeScriptParser.Var_declContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#tuple}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitTuple(PiccodeScriptParser.TupleContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#array}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitArray(PiccodeScriptParser.ArrayContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#object}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitObject(PiccodeScriptParser.ObjectContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#expr_list}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitExpr_list(PiccodeScriptParser.Expr_listContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#call_expr_list}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitCall_expr_list(PiccodeScriptParser.Call_expr_listContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#call_expr}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitCall_expr(PiccodeScriptParser.Call_exprContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#key_val_pair}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitKey_val_pair(PiccodeScriptParser.Key_val_pairContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#key_val_pairs}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitKey_val_pairs(PiccodeScriptParser.Key_val_pairsContext ctx);
- /**
- * Visit a parse tree produced by {@link PiccodeScriptParser#do_expr}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitDo_expr(PiccodeScriptParser.Do_exprContext ctx);
-}
\ No newline at end of file
diff --git a/src/main/java/org/piccode/ast/Arg.java b/src/main/java/org/piccode/ast/Arg.java
deleted file mode 100644
index 704ee48..0000000
--- a/src/main/java/org/piccode/ast/Arg.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class Arg implements Ast {
- public String name;
- public Ast def_val;
-
- public Arg(String name, Ast def_val) {
- this.name = name;
- this.def_val = def_val;
- }
-
- public Arg(String name) {
- this.name = name;
- this.def_val = null;
- }
-
- @Override
- public String toString() {
- if (def_val == null) {
- return name;
- }
- return name + "=" + def_val;
- }
-
- @Override
- public PiccodeValue execute() {
- throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/ArrayAst.java b/src/main/java/org/piccode/ast/ArrayAst.java
deleted file mode 100644
index 37aabc5..0000000
--- a/src/main/java/org/piccode/ast/ArrayAst.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.piccode.ast;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.piccode.rt.PiccodeArray;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class ArrayAst implements Ast {
- public List nodes;
-
- public ArrayAst(List nodes) {
- this.nodes = nodes;
- }
-
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("[");
-
- for (int i = 0; i < nodes.size(); i++) {
- sb.append(nodes.get(i));
- if (i < nodes.size() - 1) {
- sb.append(", ");
- }
- }
- sb.append("]");
- return sb.toString();
- }
-
- @Override
- public PiccodeValue execute() {
- var list = new ArrayList();
- for (var node: nodes) {
- list.add(node.execute());
- }
- return new PiccodeArray(list);
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/Ast.java b/src/main/java/org/piccode/ast/Ast.java
deleted file mode 100644
index 747d50b..0000000
--- a/src/main/java/org/piccode/ast/Ast.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public interface Ast {
- PiccodeValue execute();
-}
diff --git a/src/main/java/org/piccode/ast/BinOpAst.java b/src/main/java/org/piccode/ast/BinOpAst.java
deleted file mode 100644
index 0072f3d..0000000
--- a/src/main/java/org/piccode/ast/BinOpAst.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.piccode.Piccode;
-import org.piccode.rt.PiccodeBoolean;
-import org.piccode.rt.PiccodeException;
-import org.piccode.rt.PiccodeNumber;
-import org.piccode.rt.PiccodeString;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class BinOpAst implements Ast {
-
- public Ast lhs;
- public String op;
- public Ast rhs;
-
- public BinOpAst(Ast lhs, String op, Ast rhs) {
- this.lhs = lhs;
- this.op = op;
- this.rhs = rhs;
- }
-
- @Override
- public String toString() {
- return lhs + " " + op + " " + rhs;
- }
-
- @Override
- public PiccodeValue execute() {
- var left = lhs.execute();
- var right = rhs.execute();
-
- if (left instanceof PiccodeNumber lf && right instanceof PiccodeNumber rh) {
- double result = 0;
- if (op.equals("+")) {
- result = (double) lf.raw() + (double) rh.raw();
- }
- if (op.equals("-")) {
- result = (double) lf.raw() - (double) rh.raw();
- }
- if (op.equals("*")) {
- result = (double) lf.raw() * (double) rh.raw();
- }
- if (op.equals("/")) {
- result = (double) lf.raw() / (double) rh.raw();
- }
- if (op.equals("%")) {
- result = (double) lf.raw() % (double) rh.raw();
- }
-
- if (op.equals(">")) {
- return new PiccodeBoolean((double) lf.raw() > (double) rh.raw() ? "true" : "false");
- }
-
- if (op.equals("<")) {
- return new PiccodeBoolean((double) lf.raw() < (double) rh.raw() ? "true" : "false");
- }
-
- if (op.equals(">=")) {
- return new PiccodeBoolean((double) lf.raw() >= (double) rh.raw() ? "true" : "false");
- }
-
- if (op.equals("<=")) {
- return new PiccodeBoolean((double) lf.raw() <= (double) rh.raw() ? "true" : "false");
- }
-
- if (op.equals("<<")) {
- result = ((int) (double)lf.raw()) << ((int) (double)rh.raw());
- }
- if (op.equals(">>")) {
- result = ((int) (double)lf.raw()) >> ((int) (double)rh.raw());
- }
-
- if (op.equals("|")) {
- result = ((int) (double)lf.raw()) | ((int) (double)rh.raw());
- }
-
- if (op.equals("&")) {
- result = ((int) (double)lf.raw()) & ((int) (double)rh.raw());
- }
- return new PiccodeNumber(String.valueOf(result));
- }
-
- if (op.equals("+")) {
- var result = String.format("%s%s", left.raw(), right.raw());
- return new PiccodeString(result);
- }
-
- if (op.equals("==")) {
- return new PiccodeBoolean(left.raw() == right.raw() ? "true" : "false");
- }
-
- if (op.equals("!=")) {
- return new PiccodeBoolean(left.raw() == right.raw() ? "true" : "false");
- }
-
- throw new PiccodeException("Invalid operator: " + op + " " + left.getClass() + " vs " + right.getClass());
- }
-}
diff --git a/src/main/java/org/piccode/ast/CallAst.java b/src/main/java/org/piccode/ast/CallAst.java
deleted file mode 100644
index f030e84..0000000
--- a/src/main/java/org/piccode/ast/CallAst.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.piccode.ast;
-
-import java.util.List;
-import org.piccode.piccode.Piccode;
-import org.piccode.rt.NativeFunction;
-import org.piccode.rt.PiccodeClosure;
-import org.piccode.rt.PiccodeException;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class CallAst implements Ast {
-
- public Ast expr;
- public List nodes;
-
- public CallAst(Ast expr, List nodes) {
- this.expr = expr;
- this.nodes = nodes;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append(expr);
- sb.append(" (");
-
- for (int i = 0; i < nodes.size(); i++) {
- sb.append(nodes.get(i));
- if (i < nodes.size() - 1) {
- sb.append(", ");
- }
- }
- sb.append(")");
- return sb.toString();
- }
-
- @Override
- public PiccodeValue execute() {
- var expr_val = expr.execute();
- if (!(expr_val instanceof PiccodeClosure) && !(expr_val instanceof NativeFunction)) {
- throw new PiccodeException("Attempt to call a non-callable expression");
- }
-
- if (expr_val instanceof NativeFunction nat) {
- for (var node : nodes) {
- if (node instanceof NamedCallArg named) {
- nat = (NativeFunction) nat.callNamed(named.name, named.value.execute());
- } else {
- nat = (NativeFunction) nat.call(node.execute());
- }
- }
-
- var result = nat.evaluateIfReady();
- return result;
- }
-
- var closure = (PiccodeClosure) expr_val;
- for (var node : nodes) {
- if (node instanceof NamedCallArg named) {
- closure = (PiccodeClosure) closure.callNamed(named.name, named.value.execute());
- } else {
- closure = (PiccodeClosure) closure.call(node.execute());
- }
- }
-
- // Evaluate only if fully applied
- var result = closure.evaluateIfReady();
- return result;
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/ClosureAst.java b/src/main/java/org/piccode/ast/ClosureAst.java
deleted file mode 100644
index 9c86493..0000000
--- a/src/main/java/org/piccode/ast/ClosureAst.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.piccode.ast;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import org.piccode.rt.Context;
-import org.piccode.rt.PiccodeClosure;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class ClosureAst implements Ast {
- public List args;
- public Ast body;
-
- public ClosureAst(List args, Ast body) {
- this.args = args;
- this.body = body;
- }
-
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb
- .append("")
- .append("(");
- if (args != null) {
- sb.append(args);
- }
- sb.append(") => ");
- sb.append(body);
- return sb.toString();
- }
-
- @Override
- public PiccodeValue execute() {
- Map newArgs = new HashMap<>();
- return new PiccodeClosure(args, newArgs, 0, body);
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/DoExprAst.java b/src/main/java/org/piccode/ast/DoExprAst.java
deleted file mode 100644
index 227d3f6..0000000
--- a/src/main/java/org/piccode/ast/DoExprAst.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.piccode.ast;
-
-import java.util.List;
-import org.piccode.rt.Context;
-import org.piccode.rt.PiccodeBoolean;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class DoExprAst implements Ast {
- public List nodes;
-
- public DoExprAst(List nodes) {
- this.nodes = nodes;
- }
-
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < nodes.size(); i++) {
- sb.append(nodes.get(i));
- sb.append("\n");
- }
- return sb.toString();
- }
-
- @Override
- public PiccodeValue execute() {
- PiccodeValue result = null;
- Context.top.pushStack();
- for (var stmt: nodes) {
- result = stmt.execute();
- }
- Context.top.dropStackFrame();
- return result;
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/DotOperationAst.java b/src/main/java/org/piccode/ast/DotOperationAst.java
deleted file mode 100644
index 28ae4e6..0000000
--- a/src/main/java/org/piccode/ast/DotOperationAst.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.rt.Context;
-import org.piccode.rt.PiccodeArray;
-import org.piccode.rt.PiccodeException;
-import org.piccode.rt.PiccodeModule;
-import org.piccode.rt.PiccodeNumber;
-import org.piccode.rt.PiccodeObject;
-import org.piccode.rt.PiccodeTuple;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class DotOperationAst implements Ast {
-
- public Ast lhs;
- public Ast rhs;
-
- public DotOperationAst(Ast lhs, Ast rhs) {
- this.lhs = lhs;
- this.rhs = rhs;
- }
-
- @Override
- public String toString() {
- return lhs + "." + rhs;
- }
-
- @Override
- public PiccodeValue execute() {
-
- if (lhs instanceof IdentifierAst id && Context.modules.containsKey(id.text)) {
- var mod = Context.modules.get(id.text);
-
- if (!(rhs instanceof CallAst) && !(rhs instanceof IdentifierAst)) {
- throw new PiccodeException("No node " + rhs + " found in module " + id.text);
- }
-
- return process(id, mod);
- }
-
- var left = lhs.execute();
-
- if (left instanceof PiccodeArray arr && rhs instanceof IdentifierAst id && id.text.equals("len")) {
- return new PiccodeNumber("" + arr.array().length);
- }
-
- else if (left instanceof PiccodeArray arr){
- return processArrayIndexing(arr.array(), rhs.execute());
- }
- else if (left instanceof PiccodeTuple tupl){
- return processArrayIndexing(tupl.array(), rhs.execute());
- }
-
- if (left instanceof PiccodeModule mod) {
- return process(new IdentifierAst(mod.name), mod);
- }
-
- if (!(left instanceof PiccodeObject)) {
- throw new PiccodeException("Invalid expression on the left side of `.` : " + lhs);
- }
-
- var obj = (PiccodeObject) left;
-
- String key = null;
- if (rhs instanceof IdentifierAst id) {
- key = id.text;
- } else {
- key = rhs.execute().raw().toString();
- }
-
- var value = obj.getValue(key);
- if (value == null) {
- throw new PiccodeException("Field `" + key + "` is not part of " + obj.raw());
- }
-
- return value;
- }
-
- private PiccodeValue process(IdentifierAst id, PiccodeModule mod) {
- if (rhs instanceof IdentifierAst _id) {
- for (var node : mod.nodes) {
- if (node instanceof VarDecl vd && vd.name.equals(_id.text)) {
- return node.execute();
- }
- if (node instanceof FunctionAst func && func.name.equals(_id.text)) {
- node.execute();
- return Context.top.getValue(_id.text);
- }
- if (node instanceof ModuleAst _mod && _mod.name.equals(_id.text)) {
- node.execute();
- return Context.modules.get(_id.text);
- }
- }
-
- throw new PiccodeException("No function or identifier " + _id.text + " found in module " + id.text);
- }
-
- var call = (CallAst) rhs;
-
- if (!(call.expr instanceof IdentifierAst)) {
- throw new PiccodeException("Invalid function reference in module access module " + id.text + ": " + call.expr);
- }
-
- var _id = (IdentifierAst) call.expr;
- for (var node : mod.nodes) {
- if (node instanceof VarDecl vd && vd.name.equals(_id.text)) {
- return node.execute();
- }
- if (node instanceof FunctionAst func && func.name.equals(_id.text)) {
- node.execute();
- //return Context.top.getValue(_id.text);
- return call.execute();
- }
- if (node instanceof ModuleAst _mod && _mod.name.equals(_id.text)) {
- node.execute();
- return Context.modules.get(_id.text);
- }
- }
-
- throw new PiccodeException("No function or identifier " + _id.text + " found in module " + id.text);
- }
-
- private PiccodeValue processArrayIndexing(PiccodeValue[] arr, PiccodeValue execute) {
- if (!(execute instanceof PiccodeNumber)) {
- throw new PiccodeException("Attempt to index array value with non numeric index: " + rhs + " which evaluates to " + execute + " is used as an index");
- }
-
- int index = (int) ((double) execute.raw());
- if (index < 0 || index >= arr.length) {
- throw new PiccodeException("Array index out of bounds: "+ lhs + " evaluates to an array with size" + arr.length + " which is indexed with " + execute);
- }
-
- return arr[index];
- }
- private PiccodeValue processTupleIndexing(PiccodeValue[] arr, PiccodeValue execute) {
- if (!(execute instanceof PiccodeNumber)) {
- throw new PiccodeException("Attempt to index a tuple value with non numeric index: " + rhs + " which evaluates to " + execute + " is used as an index");
- }
-
- int index = (int) ((double) execute.raw());
- if (index < 0 || index >= arr.length) {
- throw new PiccodeException("Array index out of bounds: "+ lhs + " evaluates to a tuple with size" + arr.length + " which is indexed with " + execute);
- }
-
- return arr[index];
- }
-}
diff --git a/src/main/java/org/piccode/ast/FunctionAst.java b/src/main/java/org/piccode/ast/FunctionAst.java
deleted file mode 100644
index a12b005..0000000
--- a/src/main/java/org/piccode/ast/FunctionAst.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.piccode.ast;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.piccode.rt.Context;
-import org.piccode.rt.PiccodeClosure;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class FunctionAst implements Ast {
-
- public String name;
- public List arg;
- public Ast body;
-
- public FunctionAst(String name, List arg, Ast body) {
- this.name = name;
- this.arg = arg;
- this.body = body;
- }
-
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb
- .append("function ")
- .append(name)
- .append("(");
- if (arg != null) {
- sb.append(arg);
- }
- sb.append(") = ");
- sb.append(body);
- return sb.toString();
- }
-
- @Override
- public PiccodeValue execute() {
- Map newArgs = new HashMap<>();
- var cl = new PiccodeClosure(arg, newArgs, 0, body);
- Context.addGlobal(name, cl);
- return cl;
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/IdentifierAst.java b/src/main/java/org/piccode/ast/IdentifierAst.java
deleted file mode 100644
index b860c37..0000000
--- a/src/main/java/org/piccode/ast/IdentifierAst.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.rt.Context;
-import org.piccode.rt.PiccodeException;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class IdentifierAst implements Ast {
- public String text;
-
- public IdentifierAst(String text) {
- this.text = text;
- }
-
- @Override
- public String toString() {
- return text;
- }
-
- @Override
- public PiccodeValue execute() {
- var value = Context.top.getValue(text);
- if (value == null) {
- throw new PiccodeException("Unknown variable `" + text + "`");
- }
-
- return value;
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/IfExpression.java b/src/main/java/org/piccode/ast/IfExpression.java
deleted file mode 100644
index 8df23bd..0000000
--- a/src/main/java/org/piccode/ast/IfExpression.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.rt.PiccodeBoolean;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class IfExpression implements Ast{
- public Ast cond, then, elze;
-
- public IfExpression(Ast cond, Ast then, Ast elze) {
- this.cond = cond;
- this.then = then;
- this.elze = elze;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
-
- sb.append("if ").append(cond).append(" {\n");
- sb.append(then.toString().indent(4));
- sb.append(" else {\n");
- sb.append(elze.toString().indent(4));
- sb.append("}");
-
- return sb.toString();
- }
-
- @Override
- public PiccodeValue execute() {
- var _cond = cond.execute().raw().toString();
- if (_cond.equals("true")) {
- return then.execute();
- }
-
- return elze.execute();
- }
-
- /*
-import pkg:io
-
-function fact(x=1) =
- if x <= 1 { 1 }
- else x * fact(x - 1)
-
-IO.println(1 + 2 * 2)
- */
-}
diff --git a/src/main/java/org/piccode/ast/ImportAst.java b/src/main/java/org/piccode/ast/ImportAst.java
deleted file mode 100644
index 8ac4443..0000000
--- a/src/main/java/org/piccode/ast/ImportAst.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.piccode.ast;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.net.URISyntaxException;
-import java.util.Scanner;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import org.antlr.v4.runtime.CharStreams;
-import org.antlr.v4.runtime.CommonTokenStream;
-import org.editor.errors.IDEErrorListener;
-import org.piccode.antlr4.PiccodeScriptLexer;
-import org.piccode.antlr4.PiccodeScriptParser;
-import org.piccode.rt.Context;
-import org.piccode.rt.PiccodeBoolean;
-import org.piccode.rt.PiccodeException;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class ImportAst implements Ast {
-
- public String pkg;
- public String module;
-
- public ImportAst(String pkg, String module) {
- this.pkg = pkg;
- this.module = module;
- }
-
- @Override
- public String toString() {
- return "import " + pkg + ":" + module;
- }
-
- @Override
- public PiccodeValue execute() {
- if (pkg.equals("pkg")) {
- loadModuleFromStdLib(module);
- }
-
- return new PiccodeBoolean("true");
- }
-
- private void loadModuleFromStdLib(String module) {
- var file = new File("pkg/" + module);
- if (file.isFile()) {
- throw new PiccodeException("Invalid module " + module + " in pkg");
- }
- for (var fp : file.listFiles()) {
- if (fp.getName().endsWith(".pics")) {
- var code = readFile(fp);
- if (code == null) {
- throw new PiccodeException("Invalid module " + module + " in pkg");
- }
- _import(code);
- }
- }
- }
-
- private void _import(String code) {
- var lexer = new PiccodeScriptLexer(CharStreams.fromString(code));
- var parser = new PiccodeScriptParser(new CommonTokenStream(lexer));
- lexer.removeErrorListeners();
- parser.removeErrorListeners();
-
- IDEErrorListener errorListener = new IDEErrorListener();
- lexer.addErrorListener(errorListener);
- parser.addErrorListener(errorListener);
-
- var visitor = new PiccodeVisitor();
-
- var result = visitor.visit(parser.stmts());
- Context.top.pushStack();
- Context.top.putLocal("true", new PiccodeBoolean("true"));
- Context.top.putLocal("false", new PiccodeBoolean("false"));
- result.execute();
- }
-
- private String readFile(File fp) {
- StringBuilder sb = new StringBuilder();
- Scanner sc;
- try {
- sc = new Scanner(fp);
- while (sc.hasNext()) {
- sb.append(sc.nextLine()).append("\n");
- }
- return sb.toString();
- } catch (FileNotFoundException ex) {
- return null;
- }
- }
-}
diff --git a/src/main/java/org/piccode/ast/ListConstAst.java b/src/main/java/org/piccode/ast/ListConstAst.java
deleted file mode 100644
index 991382e..0000000
--- a/src/main/java/org/piccode/ast/ListConstAst.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.piccode.ast;
-
-import java.util.ArrayList;
-import org.piccode.rt.Context;
-import org.piccode.rt.PiccodeArray;
-import org.piccode.rt.PiccodeException;
-import org.piccode.rt.PiccodeModule;
-import org.piccode.rt.PiccodeNumber;
-import org.piccode.rt.PiccodeObject;
-import org.piccode.rt.PiccodeTuple;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class ListConstAst implements Ast {
-
- public Ast lhs;
- public Ast rhs;
-
- public ListConstAst(Ast lhs, Ast rhs) {
- this.lhs = lhs;
- this.rhs = rhs;
- }
-
- @Override
- public String toString() {
- return lhs + ":" + rhs;
- }
-
- @Override
- public PiccodeValue execute() {
- var left = lhs.execute();
- var right = rhs.execute();
-
- if (left instanceof PiccodeArray larr && right instanceof PiccodeArray rarr) {
- var nodes = new ArrayList();
- nodes.addAll(larr.getList());
- nodes.addAll(rarr.getList());
- return new PiccodeArray(nodes);
- }
-
- if (left instanceof PiccodeArray larr) {
- var nodes = new ArrayList();
- nodes.addAll(larr.getList());
- nodes.addFirst(right);
- return new PiccodeArray(nodes);
- }
- if (right instanceof PiccodeArray rarr) {
- var nodes = new ArrayList();
- nodes.addAll(rarr.getList());
- nodes.addFirst(left);
- return new PiccodeArray(nodes);
- }
- var nodes = new ArrayList();
- nodes.addFirst(left);
- nodes.addFirst(right);
- return new PiccodeArray(nodes);
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/ModuleAst.java b/src/main/java/org/piccode/ast/ModuleAst.java
deleted file mode 100644
index 4519ef2..0000000
--- a/src/main/java/org/piccode/ast/ModuleAst.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.piccode.ast;
-
-import java.util.List;
-import org.piccode.rt.Context;
-import org.piccode.rt.PiccodeModule;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class ModuleAst implements Ast {
- public String name;
- public List nodes;
-
- public ModuleAst(String name, List nodes) {
- this.name = name;
- this.nodes = nodes;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("module ");
- sb.append(name).append(" {\n");
- for (var node: nodes) {
- sb.append(node.toString().indent(4));
- }
- sb.append("}");
- return sb.toString();
- }
-
- @Override
- public PiccodeValue execute() {
- if (Context.modules.containsKey(name)) {
- var mod = Context.modules.get(name);
- mod.nodes.addAll(nodes);
- return mod;
- } else {
- var module = new PiccodeModule(name, nodes);
- Context.modules.put(name, module);
- return module;
- }
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/NamedCallArg.java b/src/main/java/org/piccode/ast/NamedCallArg.java
deleted file mode 100644
index 19d40ad..0000000
--- a/src/main/java/org/piccode/ast/NamedCallArg.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class NamedCallArg implements Ast {
- public String name;
- public Ast value;
-
- public NamedCallArg(String name, Ast def_val) {
- this.name = name;
- this.value = def_val;
- }
-
- @Override
- public String toString() {
- if (value == null) {
- return name;
- }
- return name + "=" + value;
- }
-
- @Override
- public PiccodeValue execute() {
- throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/NumberAst.java b/src/main/java/org/piccode/ast/NumberAst.java
deleted file mode 100644
index 1c84784..0000000
--- a/src/main/java/org/piccode/ast/NumberAst.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.rt.PiccodeNumber;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class NumberAst implements Ast {
- public String text;
-
- public NumberAst(String text) {
- this.text = text;
- }
-
- @Override
- public String toString() {
- return text;
- }
-
- @Override
- public PiccodeValue execute() {
- return new PiccodeNumber(text);
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/ObjectAst.java b/src/main/java/org/piccode/ast/ObjectAst.java
deleted file mode 100644
index 0fce860..0000000
--- a/src/main/java/org/piccode/ast/ObjectAst.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.piccode.ast;
-
-import java.util.HashMap;
-import java.util.List;
-import org.piccode.rt.PiccodeObject;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class ObjectAst implements Ast {
- public HashMap objs;
-
- public ObjectAst(HashMap objs) {
- this.objs = objs;
- }
-
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("{");
-
- var nodes = objs.entrySet();
- var size = nodes.size();
- int i = 0;
- for (var kv: nodes) {
- var key = kv.getKey();
- var val = kv.getValue();
- sb.append(String.format("%s:%s", key, val));
- if (i < size - 1) {
- sb.append(", ");
- }
- i++;
- }
- sb.append("}");
- return sb.toString();
- }
-
- @Override
- public PiccodeValue execute() {
- HashMap obj = new HashMap<>();
-
- for (var kv: objs.entrySet()) {
- obj.put(kv.getKey(), kv.getValue().execute());
- }
-
- return new PiccodeObject(obj);
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/PiccodeVisitor.java b/src/main/java/org/piccode/ast/PiccodeVisitor.java
deleted file mode 100644
index 42a70c5..0000000
--- a/src/main/java/org/piccode/ast/PiccodeVisitor.java
+++ /dev/null
@@ -1,492 +0,0 @@
-package org.piccode.ast;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import org.antlr.v4.runtime.tree.TerminalNode;
-import org.piccode.antlr4.PiccodeScriptBaseVisitor;
-import org.piccode.antlr4.PiccodeScriptParser.*;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeVisitor extends PiccodeScriptBaseVisitor {
-
- @Override
- public Ast visitVar_decl(Var_declContext var_decl) {
- var tok = var_decl.ID().getSymbol();
- var name = tok.getText();
- var expr = visitExpr(var_decl.expr());
- var result = new VarDecl(name, expr);
- return result;
- }
-
- @Override
- public Ast visitStmts(StmtsContext ctx) {
- var stmts = new ArrayList();
- for (var stmt : ctx.stmt()) {
- stmts.add(visitStmt(stmt));
- }
- return new StatementList(stmts);
- }
-
- @Override
- public Ast visitFunc(FuncContext ctx) {
- var tok = ctx.ID().getSymbol();
- var name = tok.getText();
- var args = visitFuncArgs(ctx.func_args());
- var body = visitExpr(ctx.expr());
-
- if (args.isEmpty()) {
- return new FunctionAst(name, null, body);
- }
-
- int i = args.size();
- return new FunctionAst(name, args, body);
- }
-
- public List visitFuncArgs(Func_argsContext ctx) {
- var args = new ArrayList();
-
- if (ctx.arg_list() == null) {
- return args;
- }
-
- for (var arg : ctx.arg_list().arg()) {
- var _arg = (Arg) visitArg(arg);
- args.add(_arg);
- }
- return args;
- }
-
- @Override
- public Ast visitArg(ArgContext ctx) {
- var name = ctx.ID().getText();
- if (ctx.ASSIGN() != null) {
- var value = visitLiteral_expr(ctx.literal_expr());
- return new Arg(name, value);
- }
-
- return new Arg(name);
- }
-
- @Override
- public Ast visitLiteral_expr(Literal_exprContext ctx) {
- if (ctx.NUMBER() != null) {
- return visitNumber(ctx.NUMBER());
- }
-
- if (ctx.STRING() != null) {
- return visitString(ctx.STRING());
- }
-
- if (ctx.array() != null) {
- return visitArray(ctx.array());
- }
- if (ctx.tuple() != null) {
- return visitTuple(ctx.tuple());
- }
- if (ctx.object() != null) {
- return visitObject(ctx.object());
- }
-
- return null;
- }
-
- @Override
- public Ast visitStmt(StmtContext ctx) {
- if (ctx.expr_stmt() != null) {
- return visitExpr(ctx.expr_stmt().expr());
- }
-
- if (ctx.func() != null) {
- return visitFunc(ctx.func());
- }
-
- if (ctx.module() != null) {
- return visitModule(ctx.module());
- }
-
- if (ctx.import_module() != null) {
- return visitImport_module(ctx.import_module());
- }
-
- return null;
- }
-
- @Override
- public Ast visitImport_module(Import_moduleContext ctx) {
- var pkg = ctx.ID().getFirst().getText();
- var module = ctx.ID().getLast().getText();
-
- return new ImportAst(pkg, module);
- }
-
- @Override
- public Ast visitModule(ModuleContext ctx) {
- var name = ctx.ID().getText();
- if (ctx.module_stmts() != null) {
- var nodes = visitModuleStmts(ctx.module_stmts());
- return new ModuleAst(name, nodes);
- }
- return new ModuleAst(name, List.of());
- }
-
- public List visitModuleStmts(Module_stmtsContext ctx) {
- var list = new ArrayList();
- for (var stmt : ctx.module_stmt()) {
- list.add(visitModuleStmt(stmt));
- }
- return list;
- }
-
- private Ast visitModuleStmt(Module_stmtContext stmt) {
- if (stmt.func() != null) {
- return visitFunc(stmt.func());
- }
-
- if (stmt.var_decl() != null) {
- return visitVar_decl(stmt.var_decl());
- }
-
- if (stmt.module() != null) {
- return visitModule(stmt.module());
- }
- return null;
- }
-
- @Override
- public Ast visitWhen_expr(When_exprContext ctx) {
- var expr = visitExpr(ctx.expr());
- var cases = visitWhenCases(ctx.when_cases());
- if (ctx.else_case() != null) {
- var elze = visitExpr(ctx.else_case().expr());
- return new WhenAst(expr, cases, elze);
- }
- return new WhenAst(expr, cases, null);
- }
-
- private List visitWhenCases(When_casesContext whens) {
- var cases = new ArrayList();
- for (var _case : whens.when_case()) {
- var match = visitExprlist(_case.expr_list());
- var value = visitExpr(_case.expr());
- cases.add(new WhenCase(match, value));
- }
- return cases;
- }
-
- @Override
- public Ast visitExpr(ExprContext expr) {
- if (expr.var_decl() != null) {
- return visitVar_decl(expr.var_decl());
- }
-
- if (expr.when_expr() != null) {
- return visitWhen_expr(expr.when_expr());
- }
-
- if (expr.NUMBER() != null) {
- return visitNumber(expr.NUMBER());
- }
-
- if (expr.STRING() != null) {
- return visitString(expr.STRING());
- }
-
- if (expr.ADD() != null) {
- return visitBinOp("+", expr);
- }
-
- if (expr.SUB() != null) {
- return visitBinOp("-", expr);
- }
-
- if (expr.MUL() != null) {
- return visitBinOp("*", expr);
- }
-
- if (expr.DIV() != null) {
- return visitBinOp("/", expr);
- }
-
- if (expr.GT() != null) {
- return visitBinOp(">", expr);
- }
-
- if (expr.GE() != null) {
- return visitBinOp(">=", expr);
- }
-
- if (expr.LT() != null) {
- return visitBinOp("<", expr);
- }
-
- if (expr.LE() != null) {
- return visitBinOp("<=", expr);
- }
-
- if (expr.EQ() != null) {
- return visitBinOp("==", expr);
- }
-
- if (expr.NE() != null) {
- return visitBinOp("!=", expr);
- }
-
- if (expr.AND() != null) {
- return visitBinOp("&&", expr);
- }
-
- if (expr.OR() != null) {
- return visitBinOp("||", expr);
- }
-
- if (expr.SHL() != null) {
- return visitBinOp("<<", expr);
- }
-
- if (expr.SHR() != null) {
- return visitBinOp(">>", expr);
- }
-
- if (expr.BAND() != null) {
- return visitBinOp("&", expr);
- }
-
- if (expr.BOR() != null) {
- return visitBinOp("|", expr);
- }
-
- if (expr.unary() != null) {
- return visitUnaryExpr(expr.unary());
- }
-
- if (expr.DOT() != null) {
- return visitDotOperation(expr);
- }
-
- if (expr.COLON() != null) {
- return visitConsOperation(expr);
- }
-
- if (expr.if_expr() != null) {
- return visitIf_expr(expr.if_expr());
- }
-
- if (expr.PIPE() != null) {
- return visitPipeOp(expr);
- }
-
- if (expr.array() != null) {
- return visitArray(expr.array());
- }
-
- if (expr.tuple() != null) {
- return visitTuple(expr.tuple());
- }
-
- if (expr.object() != null) {
- return visitObject(expr.object());
- }
-
- if (expr.ID() != null) {
- return visitId(expr.ID());
- }
-
- if (expr.do_expr() != null) {
- return visitDo_expr(expr.do_expr());
- }
-
- if (expr.LPAREN() != null && expr.RPAREN() != null && expr.expr() == null) {
- return new UnitAst();
- }
-
- if (expr.LPAREN() != null && expr.RPAREN() != null && expr.expr() != null && !expr.expr().isEmpty() && expr.expr().size() == 1 && expr.call_expr_list() == null) {
- var lp = expr.getChild(0).getText();
- var rp = expr.getChild(expr.getChildCount() - 1).getText();
-
- if (lp.equals("(") && rp.equals(")")) {
- return visitExpr(expr.expr().getFirst());
- }
- return visitCall(expr.expr().getFirst(), null);
- }
-
-
- if (!expr.expr().isEmpty() && expr.call_expr_list() == null) {
- return visitCall(expr, expr.call_expr_list());
- }
-
- if (!expr.expr().isEmpty() && expr.call_expr_list() != null) {
- return visitCall(expr.expr().getFirst(), expr.call_expr_list());
- }
-
- //TODO: Remove this dirty hack and actually figure out the bug
- if (expr.getText().equals("()")) {
- return new UnitAst();
- }
-
- System.out.println("Failing at: " + expr.getText());
- return null;
- }
-
- @Override
- public Ast visitDo_expr(Do_exprContext ctx) {
- var nodes = new ArrayList();
- var exprs = ctx.expr();
-
- if (exprs.isEmpty()) return new UnitAst();
-
- for (var e: exprs) {
- var expr = visitExpr(e);
- nodes.add(expr);
- }
-
- return new DoExprAst(nodes);
- }
-
- @Override
- public Ast visitIf_expr(If_exprContext ctx) {
- var cond = visitExpr(ctx.expr(0));
- var t = visitExpr(ctx.expr(1));
- var f = visitExpr(ctx.expr(2));
-
- return new IfExpression(cond, t, f);
- }
-
- private Ast visitUnaryExpr(UnaryContext ctx) {
- if (ctx.EXCLAIM() != null) {
- return new UnaryAst("!", visitExpr(ctx.expr()));
- }
-
- if (ctx.BAND() != null) {
- return new UnaryAst("&", visitExpr(ctx.expr()));
- }
-
- if (ctx.SUB() != null) {
- return new UnaryAst("-", visitExpr(ctx.expr()));
- }
- if (ctx.TILDE()!= null) {
- return new UnaryAst("~", visitExpr(ctx.expr()));
- }
-
- return null;
- }
-
- public Ast visitCall(ExprContext expr, Call_expr_listContext exprList) {
- var value = visitExpr(expr);
- if (exprList == null) {
- return new CallAst(value, List.of());
- }
-
- var args = visitCallExprList(exprList);
- return new CallAst(value, args);
- }
-
- private List visitCallExprList(Call_expr_listContext ctx) {
- var nodes = new ArrayList();
- for (var call_expr : ctx.call_expr()) {
- nodes.add(visitCallExpr(call_expr));
- }
- return nodes;
- }
-
- public Ast visitCallExpr(Call_exprContext ctx) {
- if (ctx.ASSIGN() != null) {
- var id = ctx.ID().getText();
- var value = visitExpr(ctx.expr());
- return new NamedCallArg(id, value);
- }
-
- if (ctx.ASSIGN() == null && ctx.ID() != null) {
- return new IdentifierAst(ctx.ID().getText());
- }
-
- return visitExpr(ctx.expr());
- }
-
- @Override
- public Ast visitObject(ObjectContext ctx) {
- var kvs = visitKeyValuePairs(ctx.key_val_pairs());
- return new ObjectAst(kvs);
- }
-
- private HashMap visitKeyValuePairs(Key_val_pairsContext key_val_pairs) {
- var obj = new HashMap();
- for (var kv : key_val_pairs.key_val_pair()) {
- obj.put(kv.ID().getText(), visitExpr(kv.expr()));
- }
- return obj;
- }
-
- @Override
- public Ast visitTuple(TupleContext ctx) {
- var exprs = visitExprlist(ctx.expr_list());
- if (exprs.size() == 1) {
- return exprs.getFirst();
- }
-
- return new TupleAst(exprs);
- }
-
- @Override
- public Ast visitArray(ArrayContext ctx) {
- if (ctx.expr_list() != null) {
- return new ArrayAst(visitExprlist(ctx.expr_list()));
- }
- return new ArrayAst(List.of());
- }
-
- private List visitExprlist(Expr_listContext ctx) {
- return ctx
- .expr()
- .stream()
- .map(this::visitExpr)
- .toList();
- }
-
- private Ast visitNumber(TerminalNode NUMBER) {
- var number = new NumberAst(NUMBER.getText());
- var line = NUMBER.getSymbol().getLine();
- var col = NUMBER.getSymbol().getStartIndex();
- return number;
- }
-
- private Ast visitString(TerminalNode STRING) {
- var string = new StringAst(STRING.getText());
- var line = STRING.getSymbol().getLine();
- var col = STRING.getSymbol().getStartIndex();
- return string;
- }
-
- private Ast visitBinOp(String op, ExprContext expr) {
- var lhs = visitExpr(expr.expr().getFirst());
- var rhs = visitExpr(expr.expr().getLast());
- return new BinOpAst(lhs, op, rhs);
- }
-
- private Ast visitDotOperation(ExprContext expr) {
- var lhs = visitExpr(expr.expr().getFirst());
- var rhs = visitExpr(expr.expr().getLast());
- return new DotOperationAst(lhs, rhs);
- }
-
- private Ast visitId(TerminalNode ID) {
- String id = ID.getText();
- return new IdentifierAst(id);
- }
-
- private Ast visitPipeOp(ExprContext expr) {
- var lhs = visitExpr(expr.expr().getFirst());
- var rhs = visitExpr(expr.expr().getLast());
- return new PipeAst(lhs, rhs);
- }
-
- private Ast visitConsOperation(ExprContext expr) {
- var lhs = visitExpr(expr.expr().getFirst());
- var rhs = visitExpr(expr.expr().getLast());
- return new ListConstAst(lhs, rhs);
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/PipeAst.java b/src/main/java/org/piccode/ast/PipeAst.java
deleted file mode 100644
index 47ece31..0000000
--- a/src/main/java/org/piccode/ast/PipeAst.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.rt.PiccodeClosure;
-import org.piccode.rt.PiccodeException;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PipeAst implements Ast {
- public Ast lhs;
- public Ast rhs;
-
- public PipeAst(Ast lhs,Ast rhs) {
- this.lhs = lhs;
- this.rhs = rhs;
- }
-
- @Override
- public String toString() {
- return lhs + " |> " + rhs;
- }
-
- @Override
- public PiccodeValue execute() {
- if (!(rhs instanceof CallAst) && !(rhs instanceof IdentifierAst)) {
- throw new PiccodeException("Invalid expression at the right side of |> " + rhs.toString());
- }
-
- if (rhs instanceof IdentifierAst id) {
- var res = id.execute();
- if (res instanceof PiccodeClosure closure) {
- var left = lhs.execute();
- return closure.call(left);
- } else {
- throw new PiccodeException("Invalid expression at the right side of |> : " + id.text);
- }
- }
-
- var call = (CallAst) rhs;
- call.nodes.addFirst(lhs);
- return call.execute();
- }
-}
diff --git a/src/main/java/org/piccode/ast/StatementList.java b/src/main/java/org/piccode/ast/StatementList.java
deleted file mode 100644
index 767ebb1..0000000
--- a/src/main/java/org/piccode/ast/StatementList.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.piccode.ast;
-
-import java.util.List;
-import org.piccode.rt.PiccodeBoolean;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class StatementList implements Ast {
- public List nodes;
-
- public StatementList(List nodes) {
- this.nodes = nodes;
- }
-
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < nodes.size(); i++) {
- sb.append(nodes.get(i));
- sb.append("\n");
- }
- return sb.toString();
- }
-
- @Override
- public PiccodeValue execute() {
- for (var stmt: nodes) {
- stmt.execute();
- }
- return new PiccodeBoolean("true");
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/StringAst.java b/src/main/java/org/piccode/ast/StringAst.java
deleted file mode 100644
index 9394770..0000000
--- a/src/main/java/org/piccode/ast/StringAst.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.rt.PiccodeString;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class StringAst implements Ast {
- public String text;
-
- public StringAst(String text) {
- this.text = text.substring(1, text.length() - 1);
- }
-
- @Override
- public String toString() {
- return text;
- }
-
- @Override
- public PiccodeValue execute() {
- return new PiccodeString(unescapeString(text));
- }
- public String unescapeString(String str) {
- StringBuilder sb = new StringBuilder();
- boolean isEscaping = false;
-
- for (int i = 0; i < str.length(); i++) {
- char c = str.charAt(i);
- if (isEscaping) {
- switch (c) {
- case 'n':
- sb.append('\n');
- break;
- case 't':
- sb.append('\t');
- break;
- case 'b':
- sb.append('\b');
- break;
- case 'r':
- sb.append('\r');
- break;
- case 'f':
- sb.append('\f');
- break;
- case '\'':
- sb.append('\'');
- break;
- case '\"':
- sb.append('\"');
- break;
- case '\\':
- sb.append('\\');
- break;
- default:
- sb.append(c);
- break; // treat unknown escape as literal
- }
- isEscaping = false;
- } else if (c == '\\') {
- isEscaping = true;
- } else {
- sb.append(c);
- }
- }
-
- // In case string ends with single backslash
- if (isEscaping) {
- sb.append('\\');
- }
-
- return sb.toString();
- }
-}
diff --git a/src/main/java/org/piccode/ast/TupleAst.java b/src/main/java/org/piccode/ast/TupleAst.java
deleted file mode 100644
index d4a0bb6..0000000
--- a/src/main/java/org/piccode/ast/TupleAst.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.piccode.ast;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.piccode.rt.PiccodeTuple;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class TupleAst implements Ast {
- public List nodes;
-
- public TupleAst(List nodes) {
- this.nodes = nodes;
- }
-
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("(");
-
- for (int i = 0; i < nodes.size(); i++) {
- sb.append(nodes.get(i));
- if (i < nodes.size() - 1) {
- sb.append(", ");
- }
- }
- sb.append(")");
- return sb.toString();
- }
-
- @Override
- public PiccodeValue execute() {
- var list = new ArrayList();
- for (var node: nodes) {
- list.add(node.execute());
- }
- return new PiccodeTuple(list);
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/UnaryAst.java b/src/main/java/org/piccode/ast/UnaryAst.java
deleted file mode 100644
index 88dff66..0000000
--- a/src/main/java/org/piccode/ast/UnaryAst.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.rt.PiccodeBoolean;
-import org.piccode.rt.PiccodeException;
-import org.piccode.rt.PiccodeNumber;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class UnaryAst implements Ast{
- public String op;
- public Ast expr;
-
- public UnaryAst(String op, Ast expr) {
- this.op = op;
- this.expr = expr;
- }
-
- @Override
- public String toString() {
- return String.format("%s %s", op, expr);
- }
-
- @Override
- public PiccodeValue execute() {
- var result = expr.execute();
-
- if (op.equals("-")) {
- if (!(result instanceof PiccodeNumber)) {
- throw new PiccodeException("Cannot use `-` with a value that is not a number. expression: " + expr + " results to value " + result);
- }
- return new PiccodeNumber("-" + result.toString());
- }
-
- if (op.equals("~")) {
- if (!(result instanceof PiccodeNumber)) {
- throw new PiccodeException("Cannot use `~` with a value that is not a number. expression: " + expr + " results to value " + result);
- }
- var num = (int) (double) result.raw();
- return new PiccodeNumber("" + (~num));
- }
-
- if (op.equals("!")) {
- if (!(result instanceof PiccodeBoolean)) {
- throw new PiccodeException("Cannot use `~` with a value that is not a boolean. expression: " + expr + " results to value " + result);
- }
- var bool = (boolean) result.raw();
- return new PiccodeBoolean(String.valueOf(!bool));
- }
-
- throw new PiccodeException("Not supported yet: " + op);
- }
-
-
-}
diff --git a/src/main/java/org/piccode/ast/UnitAst.java b/src/main/java/org/piccode/ast/UnitAst.java
deleted file mode 100644
index 8d0e55e..0000000
--- a/src/main/java/org/piccode/ast/UnitAst.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.rt.PiccodeUnit;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class UnitAst implements Ast {
- @Override
- public String toString() {
- return "()";
- }
-
- @Override
- public PiccodeValue execute() {
- return new PiccodeUnit();
- }
-
-}
diff --git a/src/main/java/org/piccode/ast/VarDecl.java b/src/main/java/org/piccode/ast/VarDecl.java
deleted file mode 100644
index 03a6352..0000000
--- a/src/main/java/org/piccode/ast/VarDecl.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.piccode.ast;
-
-import org.piccode.rt.Context;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class VarDecl implements Ast {
- public String name;
- public Ast value;
-
- public VarDecl(String name, Ast value) {
- this.name = name;
- this.value = value;
- }
-
-
- @Override
- public String toString() {
- return "let " + name + " = " + value;
- }
-
- @Override
- public PiccodeValue execute() {
- var _value = value.execute();
- Context.top.putLocal(name, _value);
- return _value;
- }
-}
diff --git a/src/main/java/org/piccode/ast/WhenAst.java b/src/main/java/org/piccode/ast/WhenAst.java
deleted file mode 100644
index 61fe5f3..0000000
--- a/src/main/java/org/piccode/ast/WhenAst.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package org.piccode.ast;
-
-import java.util.List;
-
-import org.piccode.rt.*;
-import java.util.*;
-
-
-/**
- *
- * @author hexaredecimal
- */
-public class WhenAst implements Ast {
-
- public Ast cond;
- public List cases;
- public Ast else_case;
-
- public WhenAst(Ast cond, List cases, Ast else_case) {
- this.cond = cond;
- this.cases = cases;
- this.else_case = else_case;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("when ").append(cond).append(" {\n");
- for (var when_c : cases) {
- sb.append(when_c.toString().indent(4));
- }
- if (else_case != null) {
- sb.append(String.format("else %s", else_case).indent(4));
- }
- sb.append("}");
- return sb.toString();
- }
-
- @Override
- public PiccodeValue execute() {
- var cond_value = cond.execute();
-
- for (var match_case : cases) {
- var tempSymtable = new HashMap();
- if (isMatching(match_case.match, cond_value, tempSymtable)) {
- Context.top.pushStack();
- for (var entry : tempSymtable.entrySet()) {
- Context.top.putLocal(entry.getKey(), entry.getValue());
- }
- var result = match_case.value.execute();
- Context.top.dropStackFrame();
- return result;
- }
- }
-
- if (else_case == null) {
- throw new PiccodeException("Inexhaustive when expression: no pattern matched: when " + cond + " { ... }");
- }
-
- return else_case.execute();
- }
-
- private boolean isMatching(List patterns, PiccodeValue cond_value, Map temp) {
- for (Ast pattern : patterns) {
- if (matchPattern(pattern, cond_value, temp)) {
- return true;
- }
- }
- return false;
- }
-
- private boolean matchPattern(Ast pattern, PiccodeValue value, Map temp) {
- if (pattern instanceof IdentifierAst id) {
- temp.put(id.text, value);
- return true;
- }
-
- if (pattern instanceof NumberAst lit) {
- var litVal = lit.execute();
- return Objects.equals(litVal, value);
- }
-
- if (pattern instanceof StringAst lit) {
- var litVal = lit.execute();
- return Objects.equals(litVal, value);
- }
-
- if (pattern instanceof TupleAst tup && value instanceof PiccodeTuple vTup) {
- var items = tup.nodes;
- var vItems = vTup.nodes;
- if (items.size() != vItems.size()) {
- return false;
- }
-
- for (int i = 0; i < items.size(); i++) {
- if (!matchPattern(items.get(i), vItems.get(i), temp)) {
- return false;
- }
- }
- return true;
- }
- if (pattern instanceof ArrayAst listPat && value instanceof PiccodeArray listVal) {
- var patItems = listPat.nodes;
- var valItems = listVal.nodes;
- if (patItems.size() != valItems.size()) {
- return false;
- }
-
- for (int i = 0; i < patItems.size(); i++) {
- if (!matchPattern(patItems.get(i), valItems.get(i), temp)) {
- return false;
- }
- }
- return true;
- }
- if (pattern instanceof ListConstAst cons && value instanceof PiccodeArray listVal2) {
- if (listVal2.nodes.isEmpty()) {
- return false;
- }
- var head = listVal2.nodes.getFirst();
- var tail = new PiccodeArray(listVal2.nodes.subList(1, listVal2.nodes.size()));
-
- return matchPattern(cons.lhs, head, temp) && matchPattern(cons.rhs, tail, temp);
- }
- if (pattern instanceof ObjectAst objPat && value instanceof PiccodeObject objVal) {
- for (var entry : objPat.objs.entrySet()) {
- if (!objVal.obj.containsKey(entry.getKey())) {
- return false;
- }
- if (!matchPattern(entry.getValue(), objVal.obj.get(entry.getKey()), temp)) {
- return false;
- }
- }
- return true;
- }
-
- if (pattern instanceof ArrayAst && value instanceof PiccodeArray vList && vList.nodes.isEmpty()) {
- return true;
- }
- return false;
- }
-}
diff --git a/src/main/java/org/piccode/ast/WhenCase.java b/src/main/java/org/piccode/ast/WhenCase.java
deleted file mode 100644
index fb7e3ff..0000000
--- a/src/main/java/org/piccode/ast/WhenCase.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.piccode.ast;
-
-import java.util.List;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class WhenCase implements Ast{
- public List match;
- public Ast value;
-
- public WhenCase(List match, Ast value) {
- this.match = match;
- this.value = value;
- }
-
- @Override
- public String toString() {
- var m = match.toString();
- m = m.substring(1, m.length() - 1);
- return "is " + m + " -> " + value;
- }
-
- @Override
- public PiccodeValue execute() {
- throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
- }
-
-}
diff --git a/src/main/java/org/piccode/backend/Compiler.java b/src/main/java/org/piccode/backend/Compiler.java
deleted file mode 100644
index 8db9c02..0000000
--- a/src/main/java/org/piccode/backend/Compiler.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package org.piccode.backend;
-
-import java.awt.Color;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import javax.swing.JTextArea;
-import org.antlr.v4.runtime.CharStreams;
-import org.antlr.v4.runtime.CommonTokenStream;
-import org.editor.AccessFrame;
-import org.editor.errors.IDEErrorListener;
-import org.piccode.antlr4.PiccodeScriptLexer;
-import org.piccode.antlr4.PiccodeScriptParser;
-import org.piccode.ast.Ast;
-import org.piccode.ast.FunctionAst;
-import org.piccode.ast.ImportAst;
-import org.piccode.ast.ModuleAst;
-import org.piccode.ast.PiccodeVisitor;
-import org.piccode.ast.StatementList;
-import org.piccode.rt.Context;
-import org.piccode.rt.NativeFunction;
-import org.piccode.rt.PiccodeBoolean;
-import org.piccode.rt.PiccodeException;
-import org.piccode.rt.PiccodeNumber;
-import org.piccode.rt.PiccodeValue;
-import org.piccode.rt.modules.PiccodeArrayModule;
-import org.piccode.rt.modules.PiccodeColorModule;
-import org.piccode.rt.modules.PiccodeGfxModule;
-import org.piccode.rt.modules.PiccodeIOModule;
-import org.piccode.rt.modules.PiccodeMathModule;
-import org.piccode.rt.modules.PiccodeResourceModule;
-import org.piccode.rt.modules.PiccodeStringModule;
-import org.piccode.rt.modules.PiccodeTupleModule;
-
-/**
- *
- * @author hexaredecimal
- */
-public class Compiler {
-
- public static List main_loop = new ArrayList<>();
-
- public static void compile(String code, boolean render) {
-
- var lexer = new PiccodeScriptLexer(CharStreams.fromString(code));
- var parser = new PiccodeScriptParser(new CommonTokenStream(lexer));
- lexer.removeErrorListeners();
- parser.removeErrorListeners();
-
- IDEErrorListener errorListener = new IDEErrorListener();
- lexer.addErrorListener(errorListener);
- parser.addErrorListener(errorListener);
-
- var visitor = new PiccodeVisitor();
-
- AccessFrame.writeWarning("Starting Parsing");
- var result = (StatementList) visitor.visit(parser.stmts());
- Context.top.pushStack();
- Context.top.putLocal("true", new PiccodeBoolean("true"));
- Context.top.putLocal("false", new PiccodeBoolean("false"));
- addGlobalFunctions();
- AccessFrame.writeWarning("Staring execution");
- try {
- main_loop.clear();
- for (var stmt : result.nodes) {
- if (stmt instanceof FunctionAst || stmt instanceof ImportAst || stmt instanceof ModuleAst) {
- stmt.execute();
- continue;
- }
- if (render) {
- main_loop.add(stmt);
- }else {
- stmt.execute();
- }
- }
- AccessFrame.writeSuccess("Compilation successful: ");
- } catch (Exception rte) {
- rte.printStackTrace();
- AccessFrame.writeError(rte.getMessage());
- } finally {
- Context.top.dropStackFrame();
- }
- }
-
- private static void addGlobalFunctions() {
- PiccodeIOModule.addFunctions();
- PiccodeArrayModule.addFunctions();
- PiccodeStringModule.addFunctions();
- PiccodeTupleModule.addFunctions();
- PiccodeMathModule.addFunctions();
- PiccodeGfxModule.addFunctions();
- PiccodeResourceModule.addFunctions();
- PiccodeColorModule.addFunctions();
- }
-}
diff --git a/src/main/java/org/piccode/piccode/Piccode.java b/src/main/java/org/piccode/piccode/Piccode.java
index 07dd3c7..9f2b0c1 100644
--- a/src/main/java/org/piccode/piccode/Piccode.java
+++ b/src/main/java/org/piccode/piccode/Piccode.java
@@ -1,8 +1,9 @@
package org.piccode.piccode;
+import org.editor.AccessFrame;
import org.editor.EditorWindow;
import org.piccode.backend.Compiler;
-
+import org.piccode.piccodescript.ErrorAsciiKind;
/**
*
@@ -10,8 +11,11 @@
*/
public class Piccode {
- public static void main(String[] args) {
- // Compiler.compile();
- EditorWindow.the();
- }
+ public static void main(String[] args) {
+ Compiler.exitOnError = false;
+ Compiler.errorKind = ErrorAsciiKind.EMACS_COMP_STYLE;
+ Compiler.out = AccessFrame.AccessFrameOutputStream.out;
+
+ EditorWindow.the();
+ }
}
diff --git a/src/main/java/org/piccode/rt/Context.java b/src/main/java/org/piccode/rt/Context.java
deleted file mode 100644
index 47cbfea..0000000
--- a/src/main/java/org/piccode/rt/Context.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.piccode.rt;
-
-import java.util.HashMap;
-import java.util.Stack;
-
-/**
- *
- * @author hexaredecimal
- */
-public class Context {
- private static HashMap global_scope = new HashMap<>();
- private Stack> scope_stack;
-
- public static Context top = new Context();
- public static HashMap modules = new HashMap<>();
-
- public Context() {
- scope_stack = new Stack<>();
- }
-
- public static void addGlobal(String name, PiccodeValue value) {
- global_scope.put(name, value);
- }
-
- public void pushStack() {
- scope_stack.push(new HashMap<>());
- }
-
- public void dropStackFrame() {
- scope_stack.pop();
- }
-
- public void putLocal(String name, PiccodeValue value) {
- var frame = scope_stack.peek();
- frame.put(name, value);
- }
-
- public PiccodeValue getValue(String name) {
- if (scope_stack.isEmpty()) {
- return global_scope.get(name);
- }
- var frame = scope_stack.peek();
- var value = frame.get(name);
- if (value == null) {
- return global_scope.get(name);
- }
- return value;
- }
-}
diff --git a/src/main/java/org/piccode/rt/Evaluator.java b/src/main/java/org/piccode/rt/Evaluator.java
deleted file mode 100644
index 5bb61bc..0000000
--- a/src/main/java/org/piccode/rt/Evaluator.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.piccode.rt;
-
-import org.piccode.ast.Ast;
-import org.piccode.ast.ClosureAst;
-import org.piccode.ast.FunctionAst;
-import org.piccode.ast.StatementList;
-
-/**
- *
- * @author hexaredecimal
- */
-public class Evaluator {
-}
diff --git a/src/main/java/org/piccode/rt/NativeFunction.java b/src/main/java/org/piccode/rt/NativeFunction.java
deleted file mode 100644
index 4d56d7b..0000000
--- a/src/main/java/org/piccode/rt/NativeFunction.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package org.piccode.rt;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- *
- * @author hexaredecimal
- */
-
-public abstract class NativeFunction implements PiccodeValue {
-
- private final String name;
- private final List params;
- private final Map defaultArgs;
- private final Map boundArgs;
-
- public NativeFunction(String name, List params, Map defaultArgs) {
- this.name = name;
- this.params = params;
- this.defaultArgs = defaultArgs != null ? defaultArgs : new HashMap<>();
- this.boundArgs = new HashMap<>();
- }
-
- public NativeFunction(String name, List params, Map defaultArgs, Map boundArgs) {
- this.name = name;
- this.params = params;
- this.defaultArgs = defaultArgs != null ? defaultArgs : new HashMap<>();
- this.boundArgs = boundArgs != null ? new HashMap<>(boundArgs) : new HashMap<>();
- }
-
- // Curry-style apply
- public PiccodeValue call(PiccodeValue value) {
- if (boundArgs.size() >= params.size()) {
- throw new PiccodeException("Too many arguments applied");
- }
-
- String nextParam = params.get(boundArgs.size());
- Map newBound = new HashMap<>(boundArgs);
- newBound.put(nextParam, value);
- return new CurriedNativeFunction(name, params, defaultArgs, newBound, this);
- }
-
- public PiccodeValue callNamed(String name, PiccodeValue value) {
- if (!params.contains(name)) {
- throw new PiccodeException("Unknown argument: " + name);
- }
-
- Map newBound = new HashMap<>(boundArgs);
- newBound.put(name, value);
- return new CurriedNativeFunction(name, params, defaultArgs, newBound, this);
- }
-
- public PiccodeValue evaluateIfReady() {
- if (boundArgs.size() < params.size()) {
- return this; // Not enough args yet
- }
- List orderedArgs = new ArrayList<>();
- for (String param : params) {
- if (boundArgs.containsKey(param)) {
- orderedArgs.add(boundArgs.get(param));
- } else if (defaultArgs.containsKey(param)) {
- orderedArgs.add(defaultArgs.get(param));
- } else {
- throw new PiccodeException("Missing argument: " + param);
- }
- }
-
- return invoke(orderedArgs, boundArgs);
- }
-
- public class CurriedNativeFunction extends NativeFunction {
-
- private final NativeFunction target;
- public CurriedNativeFunction(String name, List params, Map defaultArgs,
- Map boundArgs, NativeFunction target) {
- super(name, params, defaultArgs, boundArgs);
- this.target = target;
- }
-
- @Override
- public PiccodeValue invoke(List args, Map namedArgs) {
- return target.invoke(args, namedArgs);
- }
-
- @Override
- public Object raw() {
- return target;
- }
- }
-
-
- @Override
- public String toString() {
- return "";
- }
-
- public abstract PiccodeValue invoke(List args, Map namedArgs);
-}
diff --git a/src/main/java/org/piccode/rt/PiccodeArray.java b/src/main/java/org/piccode/rt/PiccodeArray.java
deleted file mode 100644
index f934e38..0000000
--- a/src/main/java/org/piccode/rt/PiccodeArray.java
+++ /dev/null
@@ -1,67 +0,0 @@
-
-package org.piccode.rt;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeArray implements PiccodeValue {
- public List nodes;
-
- public PiccodeArray(List nodes) {
- this.nodes = nodes;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("[");
-
- for (int i = 0; i < nodes.size(); i++) {
- sb.append(nodes.get(i));
- if (i < nodes.size() - 1) {
- sb.append(", ");
- }
- }
- sb.append("]");
- return sb.toString();
- }
-
- public List getList() {
- return nodes;
- }
-
- public PiccodeValue[] array() {
- return nodes.toArray(PiccodeValue[]::new);
- }
-
- @Override
- public Object raw() {
- return nodes.toArray();
- }
-
- @Override
- public int hashCode() {
- int hash = 7;
- hash = 23 * hash + Objects.hashCode(this.nodes);
- return hash;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final PiccodeArray other = (PiccodeArray) obj;
- return Objects.equals(this.nodes, other.nodes);
- }
-}
diff --git a/src/main/java/org/piccode/rt/PiccodeBoolean.java b/src/main/java/org/piccode/rt/PiccodeBoolean.java
deleted file mode 100644
index c42692c..0000000
--- a/src/main/java/org/piccode/rt/PiccodeBoolean.java
+++ /dev/null
@@ -1,50 +0,0 @@
-
-package org.piccode.rt;
-
-import java.util.Objects;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeBoolean implements PiccodeValue {
- private String value;
-
- public PiccodeBoolean(String number) {
- this.value = number;
- }
-
- @Override
- public Object raw() {
- return (value.equals("true"));
- }
-
- @Override
- public String toString() {
- return value;
- }
-
- @Override
- public int hashCode() {
- int hash = 7;
- hash = 23 * hash + Objects.hashCode(this.value);
- return hash;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final PiccodeBoolean other = (PiccodeBoolean) obj;
- return Objects.equals(this.value, other.value);
- }
-
-
-}
diff --git a/src/main/java/org/piccode/rt/PiccodeClosure.java b/src/main/java/org/piccode/rt/PiccodeClosure.java
deleted file mode 100644
index 799a4ad..0000000
--- a/src/main/java/org/piccode/rt/PiccodeClosure.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package org.piccode.rt;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.piccode.ast.Arg;
-import org.piccode.ast.Ast;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeClosure implements PiccodeValue {
-
- List params; // Full list of args (with name and default val)
- Map appliedArgs; // Applied named args
- int positionalIndex; // How many positional args have been applied so far
- Ast body;
-
- public PiccodeClosure(List params, Map appliedArgs, int positionalIndex, Ast body) {
- this.params = params == null ? List.of() : params;
- this.appliedArgs = appliedArgs;
- this.positionalIndex = positionalIndex;
- this.body = body;
- }
-
- public PiccodeValue call(PiccodeValue arg) {
- if (positionalIndex >= params.size()) {
- throw new PiccodeException("Too many arguments");
- }
-
- String paramName = params.get(positionalIndex).name;
- Map newArgs = new HashMap<>(appliedArgs);
- newArgs.put(paramName, arg);
-
- return new PiccodeClosure(params, newArgs, positionalIndex + 1, body);
- }
-
- public PiccodeValue callNamed(String name, PiccodeValue arg) {
- boolean paramExists = params.stream().anyMatch(p -> p.name.equals(name));
- if (!paramExists) {
- throw new PiccodeException("Function does not have a parameter named '" + name + "'");
- }
-
- if (positionalIndex >= params.size()) {
- throw new PiccodeException("Too many arguments");
- }
-
- if (appliedArgs.containsKey(name)) {
- throw new PiccodeException("Duplicate argument: " + name);
- }
-
- Map newArgs = new HashMap<>(appliedArgs);
- newArgs.put(name, arg);
-
- return new PiccodeClosure(params, newArgs, positionalIndex + 1, body);
- }
-
- public PiccodeValue evaluateIfReady() {
- for (Arg param : params) {
- boolean isSet = appliedArgs.containsKey(param.name);
- boolean hasDefault = param.def_val != null;
- if (!isSet && !hasDefault) {
- return this; // Not ready yet — required arg still missing
- }
- }
-
- // All required args satisfied (either by user or by default), run
- Context.top.pushStack();
- for (Arg param : params) {
- PiccodeValue val = appliedArgs.getOrDefault(
- param.name,
- param.def_val != null ? param.def_val.execute() : null
- );
- Context.top.putLocal(param.name, val);
- }
-
- var result = body.execute();
- Context.top.dropStackFrame();
- return result;
- }
-
- @Override
- public Object raw() {
- return body;
- }
-
- @Override
- public String toString() {
- return "Rt.Fn/" + positionalIndex;
- }
-
-}
diff --git a/src/main/java/org/piccode/rt/PiccodeException.java b/src/main/java/org/piccode/rt/PiccodeException.java
deleted file mode 100644
index 72ebe5e..0000000
--- a/src/main/java/org/piccode/rt/PiccodeException.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.piccode.rt;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeException extends RuntimeException{
-
- public PiccodeException(String message) {
- super(message);
- }
-
-}
diff --git a/src/main/java/org/piccode/rt/PiccodeModule.java b/src/main/java/org/piccode/rt/PiccodeModule.java
deleted file mode 100644
index 9a98645..0000000
--- a/src/main/java/org/piccode/rt/PiccodeModule.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.piccode.rt;
-
-import java.util.List;
-import java.util.Objects;
-import org.piccode.ast.Ast;
-
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeModule implements PiccodeValue{
- public String name;
- public List nodes;
-
- public PiccodeModule(String name, List nodes) {
- this.name = name;
- this.nodes = nodes;
- }
-
- @Override
- public Object raw() {
- return name;
- }
-
- @Override
- public String toString() {
- return "module " + name;
- }
-
- @Override
- public int hashCode() {
- int hash = 7;
- hash = 37 * hash + Objects.hashCode(this.name);
- hash = 37 * hash + Objects.hashCode(this.nodes);
- return hash;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final PiccodeModule other = (PiccodeModule) obj;
- if (!Objects.equals(this.name, other.name)) {
- return false;
- }
- return Objects.equals(this.nodes, other.nodes);
- }
-
-}
diff --git a/src/main/java/org/piccode/rt/PiccodeNumber.java b/src/main/java/org/piccode/rt/PiccodeNumber.java
deleted file mode 100644
index 4dc67ee..0000000
--- a/src/main/java/org/piccode/rt/PiccodeNumber.java
+++ /dev/null
@@ -1,44 +0,0 @@
-
-package org.piccode.rt;
-
-import java.util.Objects;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeNumber implements PiccodeValue {
- private String number;
-
- public PiccodeNumber(String number) {
- this.number = number;
- }
-
- @Override
- public Object raw() {
- return Double.parseDouble(number);
- }
-
- @Override
- public String toString() {
- return number;
- }
-
- @Override
- public int hashCode() {
- int hash = 5;
- hash = 17 * hash + Objects.hashCode(this.number);
- return hash;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) return true;
-
- if (!(obj instanceof PiccodeNumber)) return false;
- var num = (PiccodeNumber) obj;
- return num.number.equals(this.number);
- }
-
-
-}
diff --git a/src/main/java/org/piccode/rt/PiccodeObject.java b/src/main/java/org/piccode/rt/PiccodeObject.java
deleted file mode 100644
index 2fcee38..0000000
--- a/src/main/java/org/piccode/rt/PiccodeObject.java
+++ /dev/null
@@ -1,69 +0,0 @@
-
-package org.piccode.rt;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Objects;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeObject implements PiccodeValue {
- public HashMap obj;
-
- public PiccodeObject(HashMap obj) {
- this.obj = obj;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("{");
-
- var nodes = obj.entrySet();
- var size = nodes.size();
-
- int i = 0;
- for (var node: nodes) {
- sb.append(node.getKey()).append(": ").append(node.getValue());
- if (i < size - 1) {
- sb.append(", ");
- }
- i++;
- }
- sb.append("}");
- return sb.toString();
- }
-
- public PiccodeValue getValue(String key) {
- return obj.get(key);
- }
-
- @Override
- public Object raw() {
- return obj;
- }
-
- @Override
- public int hashCode() {
- int hash = 5;
- hash = 17 * hash + Objects.hashCode(this.obj);
- return hash;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final PiccodeObject other = (PiccodeObject) obj;
- return Objects.equals(this.obj, other.obj);
- }
-}
diff --git a/src/main/java/org/piccode/rt/PiccodeString.java b/src/main/java/org/piccode/rt/PiccodeString.java
deleted file mode 100644
index 1e6c7ab..0000000
--- a/src/main/java/org/piccode/rt/PiccodeString.java
+++ /dev/null
@@ -1,48 +0,0 @@
-
-package org.piccode.rt;
-
-import java.util.Objects;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeString implements PiccodeValue {
- private String string;
-
- public PiccodeString(String str) {
- this.string = str;
- }
-
- @Override
- public Object raw() {
- return string;
- }
-
- @Override
- public String toString() {
- return string;
- }
-
- @Override
- public int hashCode() {
- int hash = 5;
- hash = 47 * hash + Objects.hashCode(this.string);
- return hash;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final PiccodeString other = (PiccodeString) obj;
- return Objects.equals(this.string, other.string);
- }
-}
diff --git a/src/main/java/org/piccode/rt/PiccodeTuple.java b/src/main/java/org/piccode/rt/PiccodeTuple.java
deleted file mode 100644
index 8f779b3..0000000
--- a/src/main/java/org/piccode/rt/PiccodeTuple.java
+++ /dev/null
@@ -1,64 +0,0 @@
-
-package org.piccode.rt;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeTuple implements PiccodeValue {
- public List nodes;
-
- public PiccodeTuple(List nodes) {
- this.nodes = nodes;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("(");
-
- for (int i = 0; i < nodes.size(); i++) {
- sb.append(nodes.get(i));
- if (i < nodes.size() - 1) {
- sb.append(", ");
- }
- }
- sb.append(")");
- return sb.toString();
- }
-
- public PiccodeValue[] array() {
- return nodes.toArray(PiccodeValue[]::new);
- }
-
- @Override
- public Object raw() {
- return nodes.toArray(PiccodeValue[]::new);
- }
-
- @Override
- public int hashCode() {
- int hash = 7;
- hash = 59 * hash + Objects.hashCode(this.nodes);
- return hash;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final PiccodeTuple other = (PiccodeTuple) obj;
- return Objects.equals(this.nodes, other.nodes);
- }
-
-}
diff --git a/src/main/java/org/piccode/rt/PiccodeUnit.java b/src/main/java/org/piccode/rt/PiccodeUnit.java
deleted file mode 100644
index e4eeed1..0000000
--- a/src/main/java/org/piccode/rt/PiccodeUnit.java
+++ /dev/null
@@ -1,20 +0,0 @@
-
-package org.piccode.rt;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeUnit implements PiccodeValue {
- @Override
- public Object raw() {
- return Void.TYPE;
- }
-
- @Override
- public String toString() {
- return "()";
- }
-
-
-}
diff --git a/src/main/java/org/piccode/rt/PiccodeValue.java b/src/main/java/org/piccode/rt/PiccodeValue.java
deleted file mode 100644
index 080f945..0000000
--- a/src/main/java/org/piccode/rt/PiccodeValue.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.piccode.rt;
-
-/**
- *
- * @author hexaredecimal
- */
-public interface PiccodeValue {
- public Object raw();
-}
diff --git a/src/main/java/org/piccode/rt/modules/NativeFunctionFactory.java b/src/main/java/org/piccode/rt/modules/NativeFunctionFactory.java
deleted file mode 100644
index 5993f62..0000000
--- a/src/main/java/org/piccode/rt/modules/NativeFunctionFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.piccode.rt.modules;
-
-import java.util.List;
-import java.util.Map;
-import java.util.function.BiConsumer;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-import org.piccode.rt.Context;
-import org.piccode.rt.NativeFunction;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class NativeFunctionFactory {
- public static NativeFunction create(String name, BiFunction, Map, PiccodeValue> fx) {
- return create(name, List.of(), fx);
- }
-
- public static NativeFunction create(String name, List args, BiFunction, Map, PiccodeValue> fx) {
- NativeFunction func= new NativeFunction(name, args, null) {
- @Override
- public PiccodeValue invoke(List args, Map namedArgs) {
- return fx.apply(args, namedArgs);
- }
-
- @Override
- public Object raw() {
- return this;
- }
- };
-
- Context.addGlobal("pic_nat_" + name, func);
- return func;
- }
-}
diff --git a/src/main/java/org/piccode/rt/modules/PiccodeArrayModule.java b/src/main/java/org/piccode/rt/modules/PiccodeArrayModule.java
deleted file mode 100644
index f0f8a44..0000000
--- a/src/main/java/org/piccode/rt/modules/PiccodeArrayModule.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.piccode.rt.modules;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.piccode.rt.PiccodeArray;
-import org.piccode.rt.PiccodeString;
-import org.piccode.rt.PiccodeValue;
-
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeArrayModule {
- public static void addFunctions() {
- NativeFunctionFactory.create("array_concat", List.of("l", "r"), (args, namedArgs) -> {
- var l= ((PiccodeArray) namedArgs.get("l")).getList();
- var r= ((PiccodeArray) namedArgs.get("r")).getList();
- var c = new ArrayList();
- l.forEach((a) -> c.add(a));
- r.forEach((a) -> c.add(a));
- return new PiccodeArray(c);
- });
-
- NativeFunctionFactory.create("array_tostring", List.of("arr"), (args, namedArgs) -> {
- var arr = ((PiccodeArray) namedArgs.get("arr")).getList();
- return new PiccodeString(arr.toString());
- });
-
- NativeFunctionFactory.create("array_join", List.of("arr", "sep"), (args, namedArgs) -> {
- var arr = ((PiccodeArray) namedArgs.get("arr")).getList();
- var sep = namedArgs.get("sep").toString();
- var strArr = arr
- .stream()
- .map((a) -> a.toString())
- .toArray(String[]::new);
-
- var join = String.join(sep, strArr);
- return new PiccodeString(join);
- });
- }
-}
diff --git a/src/main/java/org/piccode/rt/modules/PiccodeColorModule.java b/src/main/java/org/piccode/rt/modules/PiccodeColorModule.java
deleted file mode 100644
index c454b56..0000000
--- a/src/main/java/org/piccode/rt/modules/PiccodeColorModule.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.piccode.rt.modules;
-
-import java.awt.Color;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import org.piccode.rt.PiccodeArray;
-import org.piccode.rt.PiccodeNumber;
-import org.piccode.rt.PiccodeTuple;
-import org.piccode.rt.PiccodeValue;
-
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeColorModule {
- public static void addFunctions() {
-
- NativeFunctionFactory.create("createcolora", List.of("r", "g", "b", "a"), (args, namedArgs) -> {
- var r = (int) (double)namedArgs.get("r").raw();
- var g = (int) (double)namedArgs.get("g").raw();
- var b = (int) (double)namedArgs.get("b").raw();
- var a = (int) (double)namedArgs.get("a").raw();
- var color = new Color(r, g, b, a).getRGB();
- return new PiccodeNumber("" + color);
- });
-
-
- }
-}
diff --git a/src/main/java/org/piccode/rt/modules/PiccodeGfxModule.java b/src/main/java/org/piccode/rt/modules/PiccodeGfxModule.java
deleted file mode 100644
index a88df24..0000000
--- a/src/main/java/org/piccode/rt/modules/PiccodeGfxModule.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package org.piccode.rt.modules;
-
-import java.awt.Color;
-import java.util.List;
-import org.editor.CanvasFrame;
-import org.editor.icons.ImageLoader;
-import org.piccode.rt.PiccodeArray;
-import org.piccode.rt.PiccodeUnit;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeGfxModule {
-
- public static void addFunctions() {
- NativeFunctionFactory.create("drawline", List.of("x1", "y1", "x2", "y2"), (args, namedArgs) -> {
- var x1 = (int) (double) namedArgs.get("x1").raw();
- var x2 = (int) (double) namedArgs.get("x2").raw();
- var y1 = (int) (double) namedArgs.get("y1").raw();
- var y2 = (int) (double) namedArgs.get("y2").raw();
- var xoff = CanvasFrame.offsetX;
- var yoff = CanvasFrame.offsetY;
- CanvasFrame.gfx.drawLine(xoff + x1, yoff + y1, xoff + x2, yoff + y2);
- return new PiccodeUnit();
- });
-
- NativeFunctionFactory.create("drawrect", List.of("x", "y", "w", "h"), (args, namedArgs) -> {
- var x = (int) (double) namedArgs.get("x").raw();
- var y = (int) (double) namedArgs.get("y").raw();
- var w = (int) (double) namedArgs.get("w").raw();
- var h = (int) (double) namedArgs.get("h").raw();
- var xoff = CanvasFrame.offsetX;
- var yoff = CanvasFrame.offsetY;
- CanvasFrame.gfx.drawRect(xoff + x, yoff + y, w, h);
- return new PiccodeUnit();
- });
-
- NativeFunctionFactory.create("drawoval", List.of("x", "y", "w", "h"), (args, namedArgs) -> {
- var x = (int) (double) namedArgs.get("x").raw();
- var y = (int) (double) namedArgs.get("y").raw();
- var w = (int) (double) namedArgs.get("w").raw();
- var h = (int) (double) namedArgs.get("h").raw();
- var xoff = CanvasFrame.offsetX;
- var yoff = CanvasFrame.offsetY;
- CanvasFrame.gfx.drawOval(xoff + x, yoff + y, w, h);
- return new PiccodeUnit();
- });
-
- NativeFunctionFactory.create("drawstring", List.of("str", "x", "y"), (args, namedArgs) -> {
- var str = namedArgs.get("str").raw().toString();
- var x = (int) (double) namedArgs.get("x").raw();
- var y = (int) (double) namedArgs.get("y").raw();
- var xoff = CanvasFrame.offsetX;
- var yoff = CanvasFrame.offsetY;
- CanvasFrame.gfx.drawString(str, xoff + x, yoff + y);
- return new PiccodeUnit();
- });
-
- NativeFunctionFactory.create("drawpolygon", List.of("xarrr", "yarrr"), (args, namedArgs) -> {
- var xa = ((PiccodeArray) namedArgs.get("xarrr").raw()).getList();
- var ya = ((PiccodeArray) namedArgs.get("yarrr").raw()).getList();
- var xoff = CanvasFrame.offsetX;
- var yoff = CanvasFrame.offsetY;
-
- int[] xarr = new int[xa.size()];
- int[] yarr = new int[ya.size()];
-
- for (int i = 0; i < xa.size(); i++) {
- xarr[i] = (int) (double) xa.get(i).raw();
- xarr[i] += xoff;
- }
-
- for (int i = 0; i < ya.size(); i++) {
- yarr[i] = (int) (double) ya.get(i).raw();
- yarr[i] += yoff;
- }
- CanvasFrame.gfx.drawPolygon(xarr, yarr, 0);
- return new PiccodeUnit();
- });
- NativeFunctionFactory.create("drawpolyline", List.of("xarrr", "yarrr"), (args, namedArgs) -> {
- var xa = ((PiccodeArray) namedArgs.get("xarrr").raw()).getList();
- var ya = ((PiccodeArray) namedArgs.get("yarrr").raw()).getList();
- var xoff = CanvasFrame.offsetX;
- var yoff = CanvasFrame.offsetY;
-
- int[] xarr = new int[xa.size()];
- int[] yarr = new int[ya.size()];
-
- for (int i = 0; i < xa.size(); i++) {
- xarr[i] = (int) (double) xa.get(i).raw();
- xarr[i] += xoff;
- }
-
- for (int i = 0; i < ya.size(); i++) {
- yarr[i] = (int) (double) ya.get(i).raw();
- yarr[i] += yoff;
- }
- CanvasFrame.gfx.drawPolyline(xarr, yarr, 0);
- return new PiccodeUnit();
- });
-
- NativeFunctionFactory.create("drawimage", List.of("id", "x", "y", "w", "h"), (args, namedArgs) -> {
- var id= (int) (double) namedArgs.get("id").raw();
- var x= (int) (double) namedArgs.get("x").raw();
- var y= (int) (double) namedArgs.get("y").raw();
- var w= (int) (double) namedArgs.get("w").raw();
- var h= (int) (double) namedArgs.get("h").raw();
- var xoff = CanvasFrame.offsetX;
- var yoff = CanvasFrame.offsetY;
-
- var img = ImageLoader.getImage(id);
-
- CanvasFrame.gfx.drawImage(img, x + xoff, y + yoff, w, h, CanvasFrame.the());
- return new PiccodeUnit();
- });
-
-
- NativeFunctionFactory.create("color", List.of("color"), (args, namedArgs) -> {
- var rgb = (int) (double) namedArgs.get("color").raw();
- CanvasFrame.gfx.setColor(new Color(rgb));
- return new PiccodeUnit();
- });
-
-
- }
-}
diff --git a/src/main/java/org/piccode/rt/modules/PiccodeIOModule.java b/src/main/java/org/piccode/rt/modules/PiccodeIOModule.java
deleted file mode 100644
index b59b5e1..0000000
--- a/src/main/java/org/piccode/rt/modules/PiccodeIOModule.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.piccode.rt.modules;
-
-import java.util.List;
-import javax.swing.JOptionPane;
-import org.editor.AccessFrame;
-import org.piccode.rt.PiccodeNumber;
-import org.piccode.rt.PiccodeString;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeIOModule {
-
- public static void addFunctions() {
- NativeFunctionFactory.create("print", List.of("value"), (args, namedArgs) -> {
- var value = namedArgs.get("value").toString();
- AccessFrame.writeString(value);
- return new PiccodeNumber("0");
- });
-
- NativeFunctionFactory.create("read", List.of("msg"), (args, namedArgs) -> {
- var value = namedArgs.get("msg");
- var result = JOptionPane.showInputDialog(value);
- if (result == null) {
- return new PiccodeString("No input provided");
- }
- return new PiccodeString(result);
- });
-
- }
-
-}
diff --git a/src/main/java/org/piccode/rt/modules/PiccodeMathModule.java b/src/main/java/org/piccode/rt/modules/PiccodeMathModule.java
deleted file mode 100644
index 9455198..0000000
--- a/src/main/java/org/piccode/rt/modules/PiccodeMathModule.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.piccode.rt.modules;
-
-import java.util.List;
-import org.piccode.rt.PiccodeNumber;
-
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeMathModule {
- public static void addFunctions() {
-
- NativeFunctionFactory.create("sin", List.of("a"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var result = Math.sin(value);
- return new PiccodeNumber(String.format("%s", result));
- });
-
- NativeFunctionFactory.create("cos", List.of("a"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var result = Math.cos(value);
- return new PiccodeNumber(String.format("%s", result));
- });
-
- NativeFunctionFactory.create("tan", List.of("a"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var result = Math.tan(value);
- return new PiccodeNumber(String.format("%s", result));
- });
-
- NativeFunctionFactory.create("asin", List.of("a"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var result = Math.asin(value);
- return new PiccodeNumber(String.format("%s", result));
- });
-
- NativeFunctionFactory.create("acos", List.of("a"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var result = Math.acos(value);
- return new PiccodeNumber(String.format("%s", result));
- });
-
- NativeFunctionFactory.create("atan", List.of("a"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var result = Math.atan(value);
- return new PiccodeNumber(String.format("%s", result));
- });
-
-
- NativeFunctionFactory.create("abs", List.of("a"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var result = Math.abs(value);
- return new PiccodeNumber(String.format("%s", result));
- });
-
- NativeFunctionFactory.create("floor", List.of("a"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var result = Math.floor(value);
- return new PiccodeNumber(String.format("%s", result));
- });
-
- NativeFunctionFactory.create("ceil", List.of("a"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var result = Math.ceil(value);
- return new PiccodeNumber(String.format("%s", result));
- });
-
-
- NativeFunctionFactory.create("sinh", List.of("a"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var result = Math.sin(value);
- return new PiccodeNumber(String.format("%s", result));
- });
-
- NativeFunctionFactory.create("cosh", List.of("a"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var result = Math.cos(value);
- return new PiccodeNumber(String.format("%s", result));
- });
-
- NativeFunctionFactory.create("tanh", List.of("a"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var result = Math.tan(value);
- return new PiccodeNumber(String.format("%s", result));
- });
-
- NativeFunctionFactory.create("pow", List.of("a", "b"), (args, namedArgs) -> {
- var value = (double) namedArgs.get("a").raw();
- var power = (double) namedArgs.get("b").raw();
- var result = Math.pow(value, power);
- return new PiccodeNumber(String.format("%s", result));
- });
- }
-}
diff --git a/src/main/java/org/piccode/rt/modules/PiccodeResourceModule.java b/src/main/java/org/piccode/rt/modules/PiccodeResourceModule.java
deleted file mode 100644
index 6d0c322..0000000
--- a/src/main/java/org/piccode/rt/modules/PiccodeResourceModule.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.piccode.rt.modules;
-
-import java.util.List;
-import org.editor.icons.ImageLoader;
-import org.piccode.rt.PiccodeNumber;
-
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeResourceModule {
- public static void addFunctions() {
-
- NativeFunctionFactory.create("loadpaint", List.of("src"), (args, namedArgs) -> {
- var path = namedArgs.get("src").toString();
- var index = ImageLoader.loadImage(path);
-
- return new PiccodeNumber("" + index);
- });
-
-
- }
-}
diff --git a/src/main/java/org/piccode/rt/modules/PiccodeStringModule.java b/src/main/java/org/piccode/rt/modules/PiccodeStringModule.java
deleted file mode 100644
index 1e22fef..0000000
--- a/src/main/java/org/piccode/rt/modules/PiccodeStringModule.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.piccode.rt.modules;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.piccode.rt.PiccodeArray;
-import org.piccode.rt.PiccodeNumber;
-import org.piccode.rt.PiccodeString;
-import org.piccode.rt.PiccodeValue;
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeStringModule {
-
- public static void addFunctions() {
- NativeFunctionFactory.create("stringformat", List.of("fmt", "args"), (args, namedArgs) -> {
- var fmt = namedArgs.get("fmt").raw().toString();
- var arr = ((PiccodeArray) namedArgs.get("args")).array();
- var result = String.format(fmt, (Object[]) arr);
- return new PiccodeString(result);
- });
-
- NativeFunctionFactory.create("stringtrim", List.of("value"), (args, namedArgs) -> {
- var value = namedArgs.get("value").raw().toString().trim();
- return new PiccodeString(value);
- });
-
- NativeFunctionFactory.create("stringuppercase", List.of("value"), (args, namedArgs) -> {
- var value = namedArgs.get("value").raw().toString().toUpperCase();
- return new PiccodeString(value);
- });
-
- NativeFunctionFactory.create("stringlowercase", List.of("value"), (args, namedArgs) -> {
- var value = namedArgs.get("value").raw().toString().toLowerCase();
- return new PiccodeString(value);
- });
-
- NativeFunctionFactory.create("stringlength", List.of("value"), (args, namedArgs) -> {
- var value = namedArgs.get("value").raw().toString().length();
- return new PiccodeNumber(""+value);
- });
-
-
- NativeFunctionFactory.create("stringsplit", List.of("value", "delim"), (args, namedArgs) -> {
- var value = namedArgs.get("value").raw().toString();
- var delim = namedArgs.get("delim").raw().toString();
- var splits = value.split(delim);
- var nodes = new ArrayList();
- for (var split: splits) {
- nodes.add(new PiccodeString(split));
- }
- return new PiccodeArray(args);
- });
- }
-}
diff --git a/src/main/java/org/piccode/rt/modules/PiccodeTupleModule.java b/src/main/java/org/piccode/rt/modules/PiccodeTupleModule.java
deleted file mode 100644
index f2279d0..0000000
--- a/src/main/java/org/piccode/rt/modules/PiccodeTupleModule.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.piccode.rt.modules;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import org.piccode.rt.PiccodeArray;
-import org.piccode.rt.PiccodeNumber;
-import org.piccode.rt.PiccodeTuple;
-import org.piccode.rt.PiccodeValue;
-
-
-/**
- *
- * @author hexaredecimal
- */
-public class PiccodeTupleModule {
- public static void addFunctions() {
-
- NativeFunctionFactory.create("tuplesize", List.of("tuple"), (args, namedArgs) -> {
- var arr = ((PiccodeTuple) namedArgs.get("tuple")).array().length;
- return new PiccodeNumber("" + arr);
- });
-
- NativeFunctionFactory.create("tupletoarray", List.of("tuple"), (args, namedArgs) -> {
- var arr = ((PiccodeTuple) namedArgs.get("tuple")).array();
- var list = new ArrayList();
- list.addAll(Arrays.asList(arr));
- return new PiccodeArray(list);
- });
-
- }
-}
diff --git a/src/main/java/org/piccode/tokenmaker/PiccodeScriptTokenMaker.java b/src/main/java/org/piccode/tokenmaker/PiccodeScriptTokenMaker.java
index edf5226..9a7e270 100644
--- a/src/main/java/org/piccode/tokenmaker/PiccodeScriptTokenMaker.java
+++ b/src/main/java/org/piccode/tokenmaker/PiccodeScriptTokenMaker.java
@@ -10,18 +10,18 @@
import org.fife.ui.rsyntaxtextarea.AbstractTokenMaker;
import org.fife.ui.rsyntaxtextarea.TokenMap;
+
/**
*
* @author hexaredecimal
*/
public class PiccodeScriptTokenMaker extends AbstractTokenMaker {
- private static List importants = List.of("pkg", "remote", "super", "true", "false");
+ private static List importants = List.of("true", "false", "await");
@Override
public Token getTokenList(Segment text, int initialTokenType, int startOffset) {
resetTokenList();
-
// Correct way to extract the exact text from the segment
String lineText = new String(text.array, text.offset, text.count);
CharStream input = CharStreams.fromString(lineText);
@@ -42,14 +42,13 @@ public Token getTokenList(Segment text, int initialTokenType, int startOffset) {
antlrToken = lexer.nextToken();
}
-
addNullToken(); // Always end the token chain
+
return firstToken;
}
private int mapAntlrToRSyntaxType(int antlrType, String text) {
switch (antlrType) {
- case PiccodeScriptLexer.FUNCTION:
case PiccodeScriptLexer.IF:
case PiccodeScriptLexer.ELSE:
case PiccodeScriptLexer.WHEN:
@@ -58,6 +57,8 @@ private int mapAntlrToRSyntaxType(int antlrType, String text) {
case PiccodeScriptLexer.IS:
case PiccodeScriptLexer.MODULE:
case PiccodeScriptLexer.DO:
+ case PiccodeScriptLexer.USE:
+ case PiccodeScriptLexer.IN:
return Token.RESERVED_WORD;
case PiccodeScriptLexer.STRING:
return Token.LITERAL_STRING_DOUBLE_QUOTE;
@@ -89,7 +90,7 @@ private int mapAntlrToRSyntaxType(int antlrType, String text) {
@Override
public TokenMap getWordsToHighlight() {
TokenMap tokenMap = new TokenMap();
- var keywords = List.of("function", "import", "let", "when", "is", "if", "else", "module", "do");
+ var keywords = List.of("import", "let", "in", "when", "is", "if", "else", "module", "do", "use");
for (var kw : keywords) {
tokenMap.put(kw, Token.RESERVED_WORD);
}
diff --git a/src/main/resources/icons/markdown.png b/src/main/resources/icons/markdown.png
new file mode 100644
index 0000000..b0bd3f5
Binary files /dev/null and b/src/main/resources/icons/markdown.png differ
diff --git a/src/test/java/org/piccode/ast/TopLevel.java b/src/test/java/org/piccode/ast/TopLevel.java
deleted file mode 100644
index 43160d2..0000000
--- a/src/test/java/org/piccode/ast/TopLevel.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.piccode.ast;
-
-import org.antlr.v4.runtime.CharStreams;
-import org.antlr.v4.runtime.CommonTokenStream;
-import org.editor.AccessFrame;
-import org.editor.errors.IDEErrorListener;
-import org.junit.jupiter.api.Assertions;
-import static org.junit.jupiter.api.Assertions.*;
-import org.junit.jupiter.api.Test;
-import org.piccode.antlr4.PiccodeScriptLexer;
-import org.piccode.antlr4.PiccodeScriptParser;
-
-/**
- *
- * @author hexaredecimal
- */
-public class TopLevel {
- @Test
- public void function() {
- var code = "function add(x, y) = x + y";
- var ast = compile(code);
-
- assertEquals(ast.nodes.size(), 1);
- var func = ast.nodes.getFirst();
-
- assertFalse(!(func instanceof FunctionAst));
- var node = (FunctionAst) func;
- assertEquals(node.name, "add");
- assertEquals(node.arg.size(), 2);
- assertTrue(node.body instanceof BinOpAst);
- }
-
- @Test
- public void variable() {
- var code = "let foo = 1";
- var ast = compile(code);
-
- assertEquals(ast.nodes.size(), 1);
- var let = ast.nodes.getFirst();
-
- assertFalse(!(let instanceof VarDecl));
- var node = (VarDecl) let;
- assertEquals(node.name, "foo");
- assertTrue(node.value instanceof NumberAst num && num.text.equals("1"));
- }
-
- @Test
- public void module() {
- var code =
- """
- module Foo {
- function bar () = ()
- }
- """;
- var ast = compile(code);
-
- assertEquals(ast.nodes.size(), 1);
- var mod = ast.nodes.getFirst();
-
- assertFalse(!(mod instanceof ModuleAst));
- var node = (ModuleAst) mod;
- assertEquals(node.name, "Foo");
- assertEquals(node.nodes.size(), 1);
-
- var inner = node.nodes.getFirst();
- assertTrue(inner instanceof FunctionAst);
- }
-
- @Test
- public void importModule() {
- var code = "import pkg:io";
- var ast = compile(code);
- assertEquals(ast.nodes.size(), 1);
- var import_ = ast.nodes.getFirst();
- assertFalse(!(import_ instanceof ImportAst));
- var node = (ImportAst) import_;
- assertEquals(node.pkg, "pkg");
- assertEquals(node.module, "io");
- }
-
- private static StatementList compile(String code) {
- var lexer = new PiccodeScriptLexer(CharStreams.fromString(code));
- var parser = new PiccodeScriptParser(new CommonTokenStream(lexer));
- lexer.removeErrorListeners();
- parser.removeErrorListeners();
-
- IDEErrorListener errorListener = new IDEErrorListener();
- lexer.addErrorListener(errorListener);
- parser.addErrorListener(errorListener);
-
- var visitor = new PiccodeVisitor();
-
- return (StatementList) visitor.visit(parser.stmts());
- }
-}
diff --git a/src/test/java/org/piccode/rt/Runtime.java b/src/test/java/org/piccode/rt/Runtime.java
deleted file mode 100644
index d922434..0000000
--- a/src/test/java/org/piccode/rt/Runtime.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.piccode.rt;
-
-import org.antlr.v4.runtime.CharStreams;
-import org.antlr.v4.runtime.CommonTokenStream;
-import org.editor.AccessFrame;
-import org.editor.errors.IDEErrorListener;
-import org.junit.jupiter.api.Assertions;
-import static org.junit.jupiter.api.Assertions.*;
-import org.junit.jupiter.api.Test;
-import org.piccode.antlr4.PiccodeScriptLexer;
-import org.piccode.antlr4.PiccodeScriptParser;
-import org.piccode.ast.*;
-
-
-/**
- *
- * @author hexaredecimal
- */
-public class Runtime {
- @Test
- public void function() {
- var code = "function add(x, y) = x + y";
- var ast = compile(code);
-
- assertEquals(ast.nodes.size(), 1);
- var func = ast.nodes.getFirst();
-
- assertFalse(!(func instanceof FunctionAst));
- var node = func.execute();
- assertTrue(node instanceof PiccodeClosure);
- }
-
- @Test
- public void variable() {
- var code = "let foo = 1";
- var ast = compile(code);
-
- assertEquals(ast.nodes.size(), 1);
- var let = ast.nodes.getFirst();
-
- assertFalse(!(let instanceof VarDecl));
-
- Context.top.pushStack();
- var node = let.execute();
- Context.top.dropStackFrame();
- assertTrue(node instanceof PiccodeNumber num && num.toString().equals("1"));
- }
-
- @Test
- public void importModule() {
- var code = "import pkg:io";
- var ast = compile(code);
- assertEquals(ast.nodes.size(), 1);
- var import_ = ast.nodes.getFirst();
- assertFalse(!(import_ instanceof ImportAst));
- var node = import_.execute();
- assertTrue(node instanceof PiccodeBoolean bool && bool.toString().equals("true"));
- }
-
- private static StatementList compile(String code) {
- var lexer = new PiccodeScriptLexer(CharStreams.fromString(code));
- var parser = new PiccodeScriptParser(new CommonTokenStream(lexer));
- lexer.removeErrorListeners();
- parser.removeErrorListeners();
-
- IDEErrorListener errorListener = new IDEErrorListener();
- lexer.addErrorListener(errorListener);
- parser.addErrorListener(errorListener);
-
- var visitor = new PiccodeVisitor();
-
- return (StatementList) visitor.visit(parser.stmts());
- }
-
-}