diff --git a/pkg/array/array.pics b/pkg/array/array.pics deleted file mode 100644 index 0785474..0000000 --- a/pkg/array/array.pics +++ /dev/null @@ -1,6 +0,0 @@ - -module Array { - function concat(left=[], right=[]) = pic_nat_array_concat(left, right) - function toString(arr=[]) = pic_nat_array_tostring(arr) - function join(array=[], sep=",") = pic_nat_array_join(array, sep) -} diff --git a/pkg/color/color.pics b/pkg/color/color.pics deleted file mode 100644 index 6975ab0..0000000 --- a/pkg/color/color.pics +++ /dev/null @@ -1,11 +0,0 @@ - -module Color { - - function new_a(r=255, g=255, b=255, a=255) = pic_nat_createcolora(r, g, b, a) - function new(r=255, g=255, b=255) = pic_nat_createcolora(r, g, b, 255) - - let RED = pic_nat_createcolora(255, 0, 0, 255) - let GREEN = pic_nat_createcolora(0, 255, 0, 255) - let BLUE = pic_nat_createcolora(0, 0, 255, 255) - -} diff --git a/pkg/gfx/color.pics b/pkg/gfx/color.pics deleted file mode 100644 index db68475..0000000 --- a/pkg/gfx/color.pics +++ /dev/null @@ -1,4 +0,0 @@ - - -function color(rgb=0) = pic_nat_color(rgb) - diff --git a/pkg/gfx/image.pics b/pkg/gfx/image.pics deleted file mode 100644 index 5204dcb..0000000 --- a/pkg/gfx/image.pics +++ /dev/null @@ -1,2 +0,0 @@ - -function drawImage(id=0, x=0, y=0, w=10, h=10) = pic_nat_drawimage(id, x, y, w, h) diff --git a/pkg/gfx/shapes.pics b/pkg/gfx/shapes.pics deleted file mode 100644 index 2882496..0000000 --- a/pkg/gfx/shapes.pics +++ /dev/null @@ -1,20 +0,0 @@ - - -function drawLine(x1=0,y1=0,x2=1,y2=1) = pic_nat_drawline(x1, y1, x2, y2) - -function drawRect(x=0, y=0, w=1, h=1) = pic_nat_drawrect(x, y, w, h) -function drawRectA(pos=[0,0], size=[0,0]) = pic_nat_drawrect(pos.0, pos.1, size.0, size.1) - -function drawSquare(x=0, y=0, side=0) = pic_nat_drawrect(x, y, side) -function drawSquareA(pos=[0,0], side=0) = pic_nat_drawrect(pos.0, pos.1, side) - -function drawOval(x=0, y=0, w=1, h=1) = pic_nat_drawoval(x, y, w, h) - -function drawString(str="", x=0, y=0) = pic_nat_drawstring(str, x,y) - -function drawPolygon(xarr=[], yarr=[]) = pic_nat_drawpolygon(xarr, yarr) - -function drawPolyline(xarr=[], yarr=[]) = pic_nat_drawpolyline(xarr, yarr) - - - diff --git a/pkg/io/io.pics b/pkg/io/io.pics deleted file mode 100644 index 2fc1d1f..0000000 --- a/pkg/io/io.pics +++ /dev/null @@ -1,7 +0,0 @@ - -module IO { - function print(msg="") = pic_nat_print(msg) - function println(msg="") = pic_nat_print(msg) - function read(msg="Enter text") = pic_nat_read(msg) -} - diff --git a/pkg/math/math.pics b/pkg/math/math.pics deleted file mode 100644 index 08ec6c5..0000000 --- a/pkg/math/math.pics +++ /dev/null @@ -1,33 +0,0 @@ - -module Math { - - function sin(a=0) = pic_nat_sin(a) - function cos(a=0) = pic_nat_cos(a) - function tan(a=0) = pic_nat_tan(a) - - function sinh(a=0) = pic_nat_sinh(a) - function cosh(a=0) = pic_nat_cosh(a) - function tanh(a=0) = pic_nat_tanh(a) - - function asin(a=0) = pic_nat_asin(a) - function acos(a=0) = pic_nat_acos(a) - function atan(a=0) = pic_nat_atan(a) - - function abs(a=0) = pic_nat_abs(a) - function floor(a=0) = pic_nat_floor(a) - function ceil(a=0) = pic_nat_ceil(a) - - function pow(a=0, b=0) = pic_nat_pow(a, b) - - function clamp(a=0, low=-1, high=1) = - if a < low { low } - else if a > high { high } - else { a } - - function max(a=0,b=0) = if a > b { a } else { b } - function min(a=0,b=0) = if a < b { a } else { b } -} - - - - diff --git a/pkg/res/resource.pics b/pkg/res/resource.pics deleted file mode 100644 index d7f5d06..0000000 --- a/pkg/res/resource.pics +++ /dev/null @@ -1,5 +0,0 @@ - -module Resources { - function loadPaintResource(src="") = pic_nat_loadpaint(src) -} - diff --git a/pkg/string/string.pics b/pkg/string/string.pics deleted file mode 100644 index 9aa14ea..0000000 --- a/pkg/string/string.pics +++ /dev/null @@ -1,12 +0,0 @@ - - -module String { - function format(fmt="", args=[]) = pic_nat_stringformat(fmt, args) - function trim(value="") = pic_nat_stringtrim(value) - function uppercase(value="") = pic_nat_stringuppercase(value) - function lowercase(value="") = pic_nat_stringlowercase(value) - function length(value="") = pic_nat_stringlength(value) - function split(value="", delim="") = pic_nat_stringsplit(value, delim) -} - - diff --git a/pkg/tuple/tuple.pics b/pkg/tuple/tuple.pics deleted file mode 100644 index 8930fc0..0000000 --- a/pkg/tuple/tuple.pics +++ /dev/null @@ -1,5 +0,0 @@ - -module Tuple { - function size(tup=(0, 0)) = pic_nat_tuplesize(tup) - function toArray(tup=(0, 0)) = pic_nat_tupletoarray(tup) -} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 135d92b..79a9f33 100644 --- a/pom.xml +++ b/pom.xml @@ -11,14 +11,22 @@ org.piccode.piccode.Piccode + + + jitpack.io + https://jitpack.io + + - - org.antlr - antlr4-runtime - 4.9.3 - + + org.antlr + antlr4-runtime + 4.9.3 + + + com.formdev flatlaf @@ -55,6 +63,12 @@ test + + com.github.Glimmr-Lang + PiccodeScript + -SNAPSHOT + + @@ -73,22 +87,6 @@ - - org.antlr - antlr4-maven-plugin - 4.9.3 - - - - antlr4 - - - - - src/main/java/org/piccode/antlr4 - true - - org.apache.maven.plugins diff --git a/src/main/antlr4/PiccodeScript.g4 b/src/main/antlr4/PiccodeScript.g4 deleted file mode 100644 index 3835d34..0000000 --- a/src/main/antlr4/PiccodeScript.g4 +++ /dev/null @@ -1,187 +0,0 @@ -grammar PiccodeScript; - -options { - language = Java; -} - -@header { - package org.piccode.antlr4; -} - -stmts: stmt* - | EOF; - -stmt: - import_module - | func - | module - | expr_stmt; - -import_module: - IMPORT ID COLON ID; - -module: - MODULE ID LBRACE module_stmts RBRACE; - -module_stmts: - module_stmt*; - -module_stmt: - func - | var_decl - | module; - -func: FUNCTION ID func_args ASSIGN expr ; - -func_args: '(' arg_list? ')' ; - -arg_list: arg (',' arg)* ; - -arg: ID (ASSIGN literal_expr)? ; // only allow literals in default values - - -literal_expr : - NUMBER - | STRING - |array - | tuple - | object - ; - -expr_stmt: expr; - // parser rules -expr - : expr LPAREN call_expr_list? RPAREN - | var_decl - | expr DOT expr - | expr PIPE expr - | expr OR expr - | expr AND expr - | expr EQ expr - | expr NE expr - | expr LT expr - | expr LE expr - | expr GT expr - | expr GE expr - | expr SHL expr - | expr SHR expr - | expr BOR expr - | expr BAND expr - | expr MUL expr - | expr DIV expr - | expr ADD expr - | expr SUB expr - | expr DOT expr - | expr COLON expr - | LPAREN expr? RPAREN - | unary - | if_expr - | when_expr - | do_expr - | array - | tuple - | object - | ID - | NUMBER - | STRING - ; - - -unary: - EXCLAIM expr - | SUB expr - | TILDE expr - | BAND expr; - -if_expr: - IF expr LBRACE expr RBRACE ELSE LBRACE expr RBRACE; - -when_expr: - WHEN expr LBRACE when_cases else_case? RBRACE; - -when_cases: when_case*; - -when_case: IS expr_list ARROW expr; - -else_case: ELSE ARROW expr; - -var_decl: LET ID ASSIGN expr; -tuple: LPAREN expr_list RPAREN; -array: LBRACKET expr_list? RBRACKET; -object: LBRACE key_val_pairs RBRACE; - -expr_list: expr (COMMA expr)*; -call_expr_list: call_expr (COMMA call_expr)*; - -call_expr: ID (ASSIGN expr)? - | expr; - -key_val_pair: ID COLON expr; -key_val_pairs: key_val_pair (COMMA key_val_pair)*; - -do_expr: DO LBRACE expr* RBRACE; - - // lexer rules -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: 'let'; -FUNCTION: 'function'; -WHEN: 'when'; -IMPORT: 'import'; -IS: 'is'; -IF: 'if'; -ELSE: 'else'; -MODULE: 'module'; -DO: 'do'; - -// Matches both integers and floats (e.g., 123, 45.67) -NUMBER: [0-9]+ ('.' [0-9]+)?; - -// Matches strings like "hello world" or 'hello world' -// Handles basic escaped quotes -STRING: '"' (~["\\] | '\\' .)* '"' -| '\'' (~['\\] | '\\' .)* '\''; - -DOT: '.'; - -LINE_COMMENT: '//' ~[\r\n]* -> channel(HIDDEN); -BLOCK_COMMENT: '/*' .*? '*/' -> channel(HIDDEN); - - -ID: [a-zA-Z_][a-zA-Z0-9_]* ; -WS: [ \t\r\n]+ -> channel(HIDDEN); diff --git a/src/main/java/org/editor/AccessFrame.java b/src/main/java/org/editor/AccessFrame.java index 00177e4..3c41cdd 100644 --- a/src/main/java/org/editor/AccessFrame.java +++ b/src/main/java/org/editor/AccessFrame.java @@ -23,6 +23,16 @@ import javax.swing.text.StyleConstants; import javax.swing.text.StyledDocument; +import java.io.OutputStream; +import java.io.PrintStream; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.swing.SwingUtilities; +import javax.swing.text.SimpleAttributeSet; + /** * * @author hexaredecimal @@ -30,7 +40,7 @@ public class AccessFrame extends JPanel { public static JTextPane msgs; - + public AccessFrame(int width) { super(new BorderLayout()); @@ -47,7 +57,7 @@ public static void writeError(String text) { StyledDocument doc = msgs.getStyledDocument(); Style redStyle = (Style) doc.addStyle("RedStyle", null); StyleConstants.setForeground((MutableAttributeSet) redStyle, Color.RED); - StyleConstants.setBackground((MutableAttributeSet) redStyle, new Color(255,0,0, 255/9)); + StyleConstants.setBackground((MutableAttributeSet) redStyle, new Color(255, 0, 0, 255 / 9)); var line = getPaddedLine(text); try { doc.insertString(doc.getLength(), "[ERROR]: " + line, redStyle); @@ -60,10 +70,10 @@ public static void writeWarning(String text) { StyledDocument doc = msgs.getStyledDocument(); Style orangeStyle = (Style) doc.addStyle("OrangeStyle", null); StyleConstants.setForeground((MutableAttributeSet) orangeStyle, Color.ORANGE); - StyleConstants.setBackground((MutableAttributeSet) orangeStyle, new Color(237,150,52, 255/6)); + StyleConstants.setBackground((MutableAttributeSet) orangeStyle, new Color(237, 150, 52, 255 / 6)); var line = getPaddedLine(text); try { - doc.insertString(doc.getLength(),"[WARNING]: " + line, orangeStyle); + doc.insertString(doc.getLength(), "[WARNING]: " + line, orangeStyle); } catch (BadLocationException ex) { Logger.getLogger(AccessFrame.class.getName()).log(Level.SEVERE, null, ex); } @@ -73,7 +83,7 @@ public static void writeSuccess(String text) { StyledDocument doc = msgs.getStyledDocument(); Style greenStyle = (Style) doc.addStyle("GreenStyle", null); StyleConstants.setForeground((MutableAttributeSet) greenStyle, Color.GREEN); - StyleConstants.setBackground((MutableAttributeSet) greenStyle, new Color(0,255,0, 255/14)); + StyleConstants.setBackground((MutableAttributeSet) greenStyle, new Color(0, 255, 0, 255 / 14)); var line = getPaddedLine(text); try { doc.insertString(doc.getLength(), "[SUCCESS]: " + line, greenStyle); @@ -86,7 +96,7 @@ public static void writeString(String text) { StyledDocument doc = msgs.getStyledDocument(); Style greenStyle = (Style) doc.addStyle("GreenStyle", null); StyleConstants.setForeground((MutableAttributeSet) greenStyle, Color.GREEN); - StyleConstants.setBackground((MutableAttributeSet) greenStyle, new Color(0,255,0, 255/14)); + StyleConstants.setBackground((MutableAttributeSet) greenStyle, new Color(0, 255, 0, 255 / 14)); var line = getPaddedLine(text); try { doc.insertString(doc.getLength(), "[LOG]: " + line, greenStyle); @@ -96,7 +106,7 @@ public static void writeString(String text) { } public static void writeLines(String... text) { - for (var line: text){ + for (var line : text) { writeString(line); } } @@ -117,17 +127,16 @@ private static String getPaddedLine(String text) { int paddingLength = Math.max(0, charsPerLine - base.length()); return base + " ".repeat(paddingLength) + "\n"; - */ + */ return text + "\n"; } - private Component getAccessBar() { JPanel buttonBar = new JPanel(new FlowLayout(FlowLayout.LEFT)); // Horizontal layout Action[] actions = {Actions.compileAction, Actions.renderAction, Actions.commitAction, Actions.exportAction}; - - for (var action: actions) { + + for (var action : actions) { JButton btn = new JButton(action); btn.setText(""); buttonBar.add(btn); @@ -136,4 +145,135 @@ private Component getAccessBar() { return buttonBar; } + public static class AccessFrameOutputStream extends OutputStream { + + public static final PrintStream out = new PrintStream(new AccessFrameOutputStream(), true, StandardCharsets.UTF_8); + + private final StringBuilder buffer = new StringBuilder(); + private static final Pattern ANSI_PATTERN = Pattern.compile("\u001B\\[([\\d;]*)m"); + + private AttributeSet activeStyle = defaultStyle(); // actual style to use + private boolean useDefault = true; // if true, keep using defaultStyle + + @Override + public void write(int b) { + if (b == '\n') { + flushBuffer(); + } else { + buffer.append((char) b); + } + } + + @Override + public void write(byte[] b, int off, int len) { + buffer.append(new String(b, off, len, StandardCharsets.UTF_8)); + if (buffer.toString().endsWith("\n")) { + flushBuffer(); + } + } + + @Override + public void flush() { + flushBuffer(); + } + + private void flushBuffer() { + String raw = buffer.toString(); + buffer.setLength(0); + + SwingUtilities.invokeLater(() -> { + Matcher matcher = ANSI_PATTERN.matcher(raw); + int last = 0; + + while (matcher.find()) { + if (matcher.start() > last) { + String text = raw.substring(last, matcher.start()); + append(text, activeStyle); + } + + // Update current style + String codeStr = matcher.group(1); + if (codeStr.isEmpty() || codeStr.equals("0")) { + activeStyle = defaultStyle(); + useDefault = true; + } else { + activeStyle = parseAnsiCode(codeStr); + useDefault = false; + } + + last = matcher.end(); + } + + if (last < raw.length()) { + String text = raw.substring(last); + append(text, activeStyle); + } + }); + } + + private void append(String text, AttributeSet style) { + try { + StyledDocument doc = msgs.getStyledDocument(); + doc.insertString(doc.getLength(), text, style); + msgs.setCaretPosition(doc.getLength()); + } catch (BadLocationException ex) { + Logger.getLogger(AccessFrame.class.getName()).log(Level.SEVERE, null, ex); + } + } + + private AttributeSet parseAnsiCode(String codeStr) { + SimpleAttributeSet attrs = new SimpleAttributeSet(); + + String[] codes = codeStr.split(";"); + for (String part : codes) { + int code; + try { + code = Integer.parseInt(part); + } catch (NumberFormatException e) { + continue; + } + + // Reset handled in flushBuffer, we don't return early here + if (ansiColorMap.containsKey(code)) { + StyleConstants.setForeground(attrs, ansiColorMap.get(code)); + } else { + StyleConstants.setForeground(attrs, Color.WHITE); + } + } + + // Set default background every time + StyleConstants.setBackground(attrs, Color.BLACK); + + return attrs; + } + + private static AttributeSet defaultStyle() { + SimpleAttributeSet def = new SimpleAttributeSet(); + StyleConstants.setForeground(def, Color.WHITE); + StyleConstants.setBackground(def, Color.BLACK); + return def; + } + + private static final Map ansiColorMap = new HashMap<>(); + + static { + ansiColorMap.put(30, Color.BLACK); + ansiColorMap.put(31, Color.RED); + ansiColorMap.put(32, Color.GREEN); + ansiColorMap.put(33, Color.YELLOW); + ansiColorMap.put(34, Color.BLUE); + ansiColorMap.put(35, Color.MAGENTA); + ansiColorMap.put(36, Color.CYAN); + ansiColorMap.put(37, Color.LIGHT_GRAY); + ansiColorMap.put(90, Color.DARK_GRAY); + ansiColorMap.put(91, new Color(255, 85, 85)); + ansiColorMap.put(92, new Color(80, 255, 80)); + ansiColorMap.put(93, new Color(255, 255, 85)); + ansiColorMap.put(94, new Color(85, 85, 255)); + ansiColorMap.put(95, new Color(255, 85, 255)); + ansiColorMap.put(96, new Color(85, 255, 255)); + ansiColorMap.put(97, Color.WHITE); + } + } + } diff --git a/src/main/java/org/editor/CanvasFrame.java b/src/main/java/org/editor/CanvasFrame.java index 52b4b9f..7315838 100644 --- a/src/main/java/org/editor/CanvasFrame.java +++ b/src/main/java/org/editor/CanvasFrame.java @@ -19,13 +19,20 @@ import java.awt.event.MouseMotionListener; import java.awt.geom.Line2D; import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.List; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.Timer; import javax.swing.plaf.basic.BasicGraphicsUtils; +import org.piccode.ast.Ast; import org.piccode.backend.Compiler; import org.piccode.rt.Context; +import org.piccode.rt.PiccodeException; import org.piccode.rt.PiccodeNumber; +import org.piccode.rt.PiccodeReturnException; +import org.piccode.rt.PiccodeUnit; +import org.piccode.rt.PiccodeValue; /** * @@ -59,6 +66,10 @@ public class CanvasFrame extends JPanel implements MouseListener, MouseMotionLis private static CanvasFrame _the = null; private DockKey key = new DockKey("canvas"); + public static String code = null; + public static String file = null; + public static boolean start = false; + private CanvasFrame() { super(new BorderLayout()); this.setBackground(new Color(18, 18, 18)); @@ -104,29 +115,24 @@ protected void paintComponent(Graphics g) { g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setColor(Color.BLACK); gfx = g2; - if (!Compiler.main_loop.isEmpty()) { - Context.top.pushStack(); - Context.top.putLocal("dt", new PiccodeNumber(String.format("%s", deltaTime))); - try { + if (start && file != null && code != null) { + SwingUtilities.invokeLater(() -> { AccessFrame.msgs.setText(""); - for (var stmt : Compiler.main_loop) { - stmt.execute(); - } - } catch (Exception e) { - AccessFrame.writeError("ERROR: " + e.getMessage()); - System.out.println("ERROR: " + e.getMessage()); - e.printStackTrace(); - Compiler.main_loop.clear(); - } finally { - Context.top.dropStackFrame(); - } + new Thread(() -> compileFrame()) + .start(); + }); + start = false; } drawSelection(g2); if (showHighlight) { drawCrosshair(g2); } + } + private PiccodeValue compileFrame() { + var result = Compiler.compile(file, code); + return result; } private void drawSelection(Graphics2D g2) { @@ -316,7 +322,7 @@ private void drawCrosshair(Graphics2D g2) { mouseX = snap(mouseX); mouseY = snap(mouseY); } - + g2.setColor(Color.RED); g2.drawLine(mouseX, 0, mouseX, getHeight()); // vertical g2.drawLine(0, mouseY, getWidth(), mouseY); // horizontal @@ -326,4 +332,5 @@ private void drawCrosshair(Graphics2D g2) { g2.fillOval(mouseX - radius, mouseY - radius, radius * 2, radius * 2); } } + } diff --git a/src/main/java/org/editor/CodeEditor.java b/src/main/java/org/editor/CodeEditor.java index 035e6e2..d55e319 100644 --- a/src/main/java/org/editor/CodeEditor.java +++ b/src/main/java/org/editor/CodeEditor.java @@ -131,6 +131,17 @@ public void focusLost(FocusEvent e) { this.add(sp, BorderLayout.CENTER); } + + + public void setKey(String name) { + String tip = "Source code editor"; + var icon = Icons.getIcon("code-file"); + key = new DockKey(name, name, tip, icon); + key.setCloseEnabled(true); + key.setAutoHideEnabled(true); + this.putClientProperty("dockKey", key); + } + public boolean saveFile() { if (isTmp) { return saveFileAs(); diff --git a/src/main/java/org/editor/EditorWindow.java b/src/main/java/org/editor/EditorWindow.java index 13d5d76..be507e1 100644 --- a/src/main/java/org/editor/EditorWindow.java +++ b/src/main/java/org/editor/EditorWindow.java @@ -36,9 +36,13 @@ import javax.swing.JToolBar; import javax.swing.SwingConstants; import javax.swing.UIManager; +import javax.swing.plaf.metal.MetalIconFactory; import org.editor.events.Actions; import org.editor.icons.Icons; import org.editor.menu.Menus; +import org.editor.panels.FileTreePanel; +import org.editor.panels.PluginsPanel; +import org.editor.panels.VCPanel; import org.fife.rsta.ui.CollapsibleSectionPanel; //import org.fife.rsta.ui.DocumentMap; @@ -56,7 +60,6 @@ */ public final class EditorWindow extends JFrame implements SearchListener { - private static JTabbedPane tabs = new JTabbedPane(); private static HashMap tabEditors; public static EditorWindow win = null; public static JLabel current_file = new JLabel(); @@ -83,22 +86,26 @@ public static EditorWindow the() { public EditorWindow() { super("Piccode - DashBoard"); - new CodeEditor(); - root = getRootPane(); - Icons.loadIcons(); - tabEditors = new HashMap<>(); - CodeEditor.createTemplateManager(); - initSearchDialogs(); DockingUISettings.getInstance().installUI(); customizeDock(); + UIManager.put("Tree.collapsedIcon", UIManager.getIcon("Tree.collapsedIcon")); + UIManager.put("Tree.expandedIcon", UIManager.getIcon("Tree.expandedIcon")); + try { UIManager.setLookAndFeel(new FlatLightLaf()); } catch (Exception ex) { System.err.println("Failed to initialize LaF"); } + new CodeEditor(); + root = getRootPane(); + Icons.loadIcons(); + tabEditors = new HashMap<>(); + CodeEditor.createTemplateManager(); + initSearchDialogs(); + int width = 900; int height = 600; @@ -190,14 +197,17 @@ public EditorWindow() { render_panel.add(short_cuts, BorderLayout.EAST); render_panel.add(new JScrollPane(canvas_panel), BorderLayout.CENTER); - var cool_bar = new DockablePanel(new BorderLayout(), "Quick Access"); - cool_bar.add(bar, BorderLayout.CENTER); + var file_tree = new FileTreePanel(); + var vc_panel = new VCPanel(); + var plugins = new PluginsPanel(); DockingPreferences.setDottedDesktopStyle(); getContentPane().add(desk, BorderLayout.CENTER); getContentPane().add(render_panel, BorderLayout.WEST); getContentPane().add(access_panel, BorderLayout.SOUTH); - getContentPane().add(cool_bar, BorderLayout.EAST); + getContentPane().add(file_tree, BorderLayout.EAST); + getContentPane().add(vc_panel, BorderLayout.EAST); + getContentPane().add(plugins, BorderLayout.EAST); getContentPane().add(tool_bar, BorderLayout.PAGE_START); getContentPane().add(bottom_bar, BorderLayout.PAGE_END); @@ -206,8 +216,13 @@ public EditorWindow() { getContentPane().add(access_panel, BorderLayout.EAST); desk.addDockable(dashboard); - desk.addDockable(cool_bar); - desk.setAutoHide(cool_bar, true); + desk.addDockable(file_tree); + desk.addDockable(vc_panel); + desk.addDockable(plugins); + + desk.setAutoHide(file_tree, true); + desk.setAutoHide(vc_panel, true); + desk.setAutoHide(plugins, true); desk.split(dashboard, render_panel, DockingConstants.SPLIT_RIGHT, 0.7); desk.split(render_panel, access_panel, DockingConstants.SPLIT_BOTTOM); @@ -263,7 +278,11 @@ public static void addTab(Path path, Void e) { } else { // Add to same container as first editor CodeEditor firstEditor = tabEditors.get(0); - win.desk.createTab(firstEditor, editor, 1); + try { + win.desk.createTab(firstEditor, editor, 1); + } catch (NullPointerException npe) { + win.desk.createTab(win.dashboard, editor, 2); + } } } @@ -281,7 +300,9 @@ public static CodeEditor getSelectedEditor() { return editor; } } - return tabEditors.values().toArray(CodeEditor[]::new)[0]; // fallback if nothing has focus + var values = tabEditors.values(); + if (values.isEmpty()) return null; + return values.toArray(CodeEditor[]::new)[0]; // fallback if nothing has focus } private static void addPlusTab(JTabbedPane tabs) { @@ -407,8 +428,8 @@ public static void saveAll() { } public static void setSeletedTabTitle(String title) { - int index = tabs.getSelectedIndex(); - tabs.setTitleAt(index, title); + var ed = getSelectedEditor(); + ed.setKey(title); } private JPanel makeCoolbar(int height, Action... actions) { diff --git a/src/main/java/org/editor/errors/EditorParser.java b/src/main/java/org/editor/errors/EditorParser.java index 257ed92..4f002ed 100644 --- a/src/main/java/org/editor/errors/EditorParser.java +++ b/src/main/java/org/editor/errors/EditorParser.java @@ -2,9 +2,6 @@ import javax.swing.text.BadLocationException; import javax.swing.text.Element; -import org.antlr.v4.runtime.CharStreams; -import org.antlr.v4.runtime.CommonTokenStream; -import org.editor.errors.IDEErrorListener.SyntaxErrorInfo; import org.fife.ui.rsyntaxtextarea.RSyntaxDocument; import org.fife.ui.rsyntaxtextarea.parser.AbstractParser; import org.fife.ui.rsyntaxtextarea.parser.DefaultParseResult; @@ -13,6 +10,7 @@ import org.piccode.antlr4.PiccodeScriptLexer; import org.piccode.antlr4.PiccodeScriptParser; import org.piccode.ast.PiccodeVisitor; +import org.piccode.backend.Compiler; /** * @@ -26,7 +24,10 @@ public ParseResult parse(RSyntaxDocument doc, String style) { try { String code = doc.getText(0, doc.getLength()); - + } catch (BadLocationException ex) { + System.getLogger(EditorParser.class.getName()).log(System.Logger.Level.ERROR, (String) null, ex); + } + /* var lexer = new PiccodeScriptLexer(CharStreams.fromString(code)); var tokens = new CommonTokenStream(lexer); var parser = new PiccodeScriptParser(tokens); @@ -38,8 +39,6 @@ public ParseResult parse(RSyntaxDocument doc, String style) { lexer.addErrorListener(errorListener); parser.addErrorListener(errorListener); - var visitor = new PiccodeVisitor(); - visitor.visit(parser.stmts()); // Report any collected syntax errors to the RSyntax framework for (SyntaxErrorInfo info : errorListener.getSyntaxErrorInfos()) { @@ -50,7 +49,7 @@ public ParseResult parse(RSyntaxDocument doc, String style) { } catch (BadLocationException e) { e.printStackTrace(); } - + */ return result; } diff --git a/src/main/java/org/editor/errors/IDEErrorListener.java b/src/main/java/org/editor/errors/IDEErrorListener.java deleted file mode 100644 index 9b4ac0e..0000000 --- a/src/main/java/org/editor/errors/IDEErrorListener.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.editor.errors; - -/** - * - * @author hexaredecimal - */ - -import java.util.ArrayList; -import java.util.List; -import org.antlr.v4.runtime.*; - -public class IDEErrorListener extends BaseErrorListener { - - public static class SyntaxErrorInfo { - - public final int line; - public final int charPositionInLine; - public final String message; - - public SyntaxErrorInfo(int line, int charPositionInLine, String message) { - this.line = line; - this.charPositionInLine = charPositionInLine; - this.message = message; - } - } - - private final List syntaxErrors = new ArrayList<>(); - - @Override - public void syntaxError(Recognizer recognizer, Object offendingSymbol, - int line, int charPositionInLine, - String msg, RecognitionException e) { - syntaxErrors.add(new SyntaxErrorInfo(line, charPositionInLine, msg)); - } - - public List 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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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 visitor) { - if ( visitor instanceof PiccodeScriptVisitor ) return ((PiccodeScriptVisitor)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()); - } - -}