summaryrefslogtreecommitdiff
path: root/src/svm/SVMParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/svm/SVMParser.java')
-rw-r--r--src/svm/SVMParser.java547
1 files changed, 547 insertions, 0 deletions
diff --git a/src/svm/SVMParser.java b/src/svm/SVMParser.java
new file mode 100644
index 0000000..8687116
--- /dev/null
+++ b/src/svm/SVMParser.java
@@ -0,0 +1,547 @@
+// Generated from /home/gabri/Desktop/clp_project/src/svm/SVM.g4 by ANTLR 4.13.1
+package svm;
+
+import java.util.HashMap;
+
+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", "CheckReturnValue"})
+public class SVMParser extends Parser {
+ static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ T__0=1, T__1=2, T__2=3, LOAD=4, STORE=5, STOREI=6, MOVE=7, ADD=8, ADDI=9,
+ SUB=10, SUBI=11, MUL=12, MULI=13, DIV=14, DIVI=15, PUSH=16, PUSHR=17,
+ POP=18, POPR=19, BRANCH=20, BRANCHEQ=21, BRANCHLESSEQ=22, JUMPSUB=23,
+ RETURNSUB=24, HALT=25, REG=26, LABEL=27, NUMBER=28, WHITESP=29, LINECOMENTS=30,
+ ERR=31;
+ public static final int
+ RULE_assembly = 0, RULE_instruction = 1;
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "assembly", "instruction"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "'('", "')'", "':'", "'load'", "'store'", "'storei'", "'move'",
+ "'add'", "'addi'", "'sub'", "'subi'", "'mul'", "'muli'", "'div'", "'divi'",
+ "'push'", "'pushr'", "'pop'", "'popr'", "'b'", "'beq'", "'bleq'", "'jsub'",
+ "'rsub'", "'halt'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, null, null, null, "LOAD", "STORE", "STOREI", "MOVE", "ADD", "ADDI",
+ "SUB", "SUBI", "MUL", "MULI", "DIV", "DIVI", "PUSH", "PUSHR", "POP",
+ "POPR", "BRANCH", "BRANCHEQ", "BRANCHLESSEQ", "JUMPSUB", "RETURNSUB",
+ "HALT", "REG", "LABEL", "NUMBER", "WHITESP", "LINECOMENTS", "ERR"
+ };
+ }
+ 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] = "<INVALID>";
+ }
+ }
+ }
+
+ @Override
+ @Deprecated
+ public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ @Override
+
+ public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+ @Override
+ public String getGrammarFileName() { return "SVM.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public SVMParser(TokenStream input) {
+ super(input);
+ _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AssemblyContext extends ParserRuleContext {
+ public List<InstructionContext> instruction() {
+ return getRuleContexts(InstructionContext.class);
+ }
+ public InstructionContext instruction(int i) {
+ return getRuleContext(InstructionContext.class,i);
+ }
+ public AssemblyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_assembly; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof SVMListener ) ((SVMListener)listener).enterAssembly(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof SVMListener ) ((SVMListener)listener).exitAssembly(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof SVMVisitor ) return ((SVMVisitor<? extends T>)visitor).visitAssembly(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final AssemblyContext assembly() throws RecognitionException {
+ AssemblyContext _localctx = new AssemblyContext(_ctx, getState());
+ enterRule(_localctx, 0, RULE_assembly);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(7);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 201326576L) != 0)) {
+ {
+ {
+ setState(4);
+ instruction();
+ }
+ }
+ setState(9);
+ _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;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InstructionContext extends ParserRuleContext {
+ public Token n;
+ public Token l;
+ public TerminalNode LOAD() { return getToken(SVMParser.LOAD, 0); }
+ public List<TerminalNode> REG() { return getTokens(SVMParser.REG); }
+ public TerminalNode REG(int i) {
+ return getToken(SVMParser.REG, i);
+ }
+ public TerminalNode NUMBER() { return getToken(SVMParser.NUMBER, 0); }
+ public TerminalNode STORE() { return getToken(SVMParser.STORE, 0); }
+ public TerminalNode STOREI() { return getToken(SVMParser.STOREI, 0); }
+ public TerminalNode MOVE() { return getToken(SVMParser.MOVE, 0); }
+ public TerminalNode ADD() { return getToken(SVMParser.ADD, 0); }
+ public TerminalNode ADDI() { return getToken(SVMParser.ADDI, 0); }
+ public TerminalNode SUB() { return getToken(SVMParser.SUB, 0); }
+ public TerminalNode SUBI() { return getToken(SVMParser.SUBI, 0); }
+ public TerminalNode MUL() { return getToken(SVMParser.MUL, 0); }
+ public TerminalNode MULI() { return getToken(SVMParser.MULI, 0); }
+ public TerminalNode DIV() { return getToken(SVMParser.DIV, 0); }
+ public TerminalNode DIVI() { return getToken(SVMParser.DIVI, 0); }
+ public TerminalNode PUSH() { return getToken(SVMParser.PUSH, 0); }
+ public TerminalNode PUSHR() { return getToken(SVMParser.PUSHR, 0); }
+ public TerminalNode POP() { return getToken(SVMParser.POP, 0); }
+ public TerminalNode POPR() { return getToken(SVMParser.POPR, 0); }
+ public TerminalNode BRANCH() { return getToken(SVMParser.BRANCH, 0); }
+ public TerminalNode LABEL() { return getToken(SVMParser.LABEL, 0); }
+ public TerminalNode BRANCHEQ() { return getToken(SVMParser.BRANCHEQ, 0); }
+ public TerminalNode BRANCHLESSEQ() { return getToken(SVMParser.BRANCHLESSEQ, 0); }
+ public TerminalNode JUMPSUB() { return getToken(SVMParser.JUMPSUB, 0); }
+ public TerminalNode RETURNSUB() { return getToken(SVMParser.RETURNSUB, 0); }
+ public TerminalNode HALT() { return getToken(SVMParser.HALT, 0); }
+ public InstructionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_instruction; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof SVMListener ) ((SVMListener)listener).enterInstruction(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof SVMListener ) ((SVMListener)listener).exitInstruction(this);
+ }
+ @Override
+ public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+ if ( visitor instanceof SVMVisitor ) return ((SVMVisitor<? extends T>)visitor).visitInstruction(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final InstructionContext instruction() throws RecognitionException {
+ InstructionContext _localctx = new InstructionContext(_ctx, getState());
+ enterRule(_localctx, 2, RULE_instruction);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(79);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case LOAD:
+ {
+ setState(10);
+ match(LOAD);
+ setState(11);
+ match(REG);
+ setState(12);
+ match(NUMBER);
+ setState(13);
+ match(T__0);
+ setState(14);
+ match(REG);
+ setState(15);
+ match(T__1);
+ }
+ break;
+ case STORE:
+ {
+ setState(16);
+ match(STORE);
+ setState(17);
+ match(REG);
+ setState(18);
+ match(NUMBER);
+ setState(19);
+ match(T__0);
+ setState(20);
+ match(REG);
+ setState(21);
+ match(T__1);
+ }
+ break;
+ case STOREI:
+ {
+ setState(22);
+ match(STOREI);
+ setState(23);
+ match(REG);
+ setState(24);
+ match(NUMBER);
+ }
+ break;
+ case MOVE:
+ {
+ setState(25);
+ match(MOVE);
+ setState(26);
+ match(REG);
+ setState(27);
+ match(REG);
+ }
+ break;
+ case ADD:
+ {
+ setState(28);
+ match(ADD);
+ setState(29);
+ match(REG);
+ setState(30);
+ match(REG);
+ }
+ break;
+ case ADDI:
+ {
+ setState(31);
+ match(ADDI);
+ setState(32);
+ match(REG);
+ setState(33);
+ match(NUMBER);
+ }
+ break;
+ case SUB:
+ {
+ setState(34);
+ match(SUB);
+ setState(35);
+ match(REG);
+ setState(36);
+ match(REG);
+ }
+ break;
+ case SUBI:
+ {
+ setState(37);
+ match(SUBI);
+ setState(38);
+ match(REG);
+ setState(39);
+ match(NUMBER);
+ }
+ break;
+ case MUL:
+ {
+ setState(40);
+ match(MUL);
+ setState(41);
+ match(REG);
+ setState(42);
+ match(REG);
+ }
+ break;
+ case MULI:
+ {
+ setState(43);
+ match(MULI);
+ setState(44);
+ match(REG);
+ setState(45);
+ match(NUMBER);
+ }
+ break;
+ case DIV:
+ {
+ setState(46);
+ match(DIV);
+ setState(47);
+ match(REG);
+ setState(48);
+ match(REG);
+ }
+ break;
+ case DIVI:
+ {
+ setState(49);
+ match(DIVI);
+ setState(50);
+ match(REG);
+ setState(51);
+ match(NUMBER);
+ }
+ break;
+ case PUSH:
+ {
+ setState(52);
+ match(PUSH);
+ setState(55);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case NUMBER:
+ {
+ setState(53);
+ ((InstructionContext)_localctx).n = match(NUMBER);
+ }
+ break;
+ case LABEL:
+ {
+ setState(54);
+ ((InstructionContext)_localctx).l = match(LABEL);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ break;
+ case PUSHR:
+ {
+ setState(57);
+ match(PUSHR);
+ setState(58);
+ match(REG);
+ }
+ break;
+ case POP:
+ {
+ setState(59);
+ match(POP);
+ }
+ break;
+ case POPR:
+ {
+ setState(60);
+ match(POPR);
+ setState(61);
+ match(REG);
+ }
+ break;
+ case BRANCH:
+ {
+ setState(62);
+ match(BRANCH);
+ setState(63);
+ match(LABEL);
+ }
+ break;
+ case BRANCHEQ:
+ {
+ setState(64);
+ match(BRANCHEQ);
+ setState(65);
+ match(REG);
+ setState(66);
+ match(REG);
+ setState(67);
+ match(LABEL);
+ }
+ break;
+ case BRANCHLESSEQ:
+ {
+ setState(68);
+ match(BRANCHLESSEQ);
+ setState(69);
+ match(REG);
+ setState(70);
+ match(REG);
+ setState(71);
+ match(LABEL);
+ }
+ break;
+ case JUMPSUB:
+ {
+ setState(72);
+ match(JUMPSUB);
+ setState(73);
+ match(LABEL);
+ }
+ break;
+ case RETURNSUB:
+ {
+ setState(74);
+ match(RETURNSUB);
+ setState(75);
+ match(REG);
+ }
+ break;
+ case LABEL:
+ {
+ setState(76);
+ ((InstructionContext)_localctx).l = match(LABEL);
+ setState(77);
+ match(T__2);
+ }
+ break;
+ case HALT:
+ {
+ setState(78);
+ match(HALT);
+ }
+ 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 final String _serializedATN =
+ "\u0004\u0001\u001fR\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0001"+
+ "\u0000\u0005\u0000\u0006\b\u0000\n\u0000\f\u0000\t\t\u0000\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0003\u00018\b\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0003\u0001P\b\u0001\u0001\u0001\u0000\u0000"+
+ "\u0002\u0000\u0002\u0000\u0000g\u0000\u0007\u0001\u0000\u0000\u0000\u0002"+
+ "O\u0001\u0000\u0000\u0000\u0004\u0006\u0003\u0002\u0001\u0000\u0005\u0004"+
+ "\u0001\u0000\u0000\u0000\u0006\t\u0001\u0000\u0000\u0000\u0007\u0005\u0001"+
+ "\u0000\u0000\u0000\u0007\b\u0001\u0000\u0000\u0000\b\u0001\u0001\u0000"+
+ "\u0000\u0000\t\u0007\u0001\u0000\u0000\u0000\n\u000b\u0005\u0004\u0000"+
+ "\u0000\u000b\f\u0005\u001a\u0000\u0000\f\r\u0005\u001c\u0000\u0000\r\u000e"+
+ "\u0005\u0001\u0000\u0000\u000e\u000f\u0005\u001a\u0000\u0000\u000fP\u0005"+
+ "\u0002\u0000\u0000\u0010\u0011\u0005\u0005\u0000\u0000\u0011\u0012\u0005"+
+ "\u001a\u0000\u0000\u0012\u0013\u0005\u001c\u0000\u0000\u0013\u0014\u0005"+
+ "\u0001\u0000\u0000\u0014\u0015\u0005\u001a\u0000\u0000\u0015P\u0005\u0002"+
+ "\u0000\u0000\u0016\u0017\u0005\u0006\u0000\u0000\u0017\u0018\u0005\u001a"+
+ "\u0000\u0000\u0018P\u0005\u001c\u0000\u0000\u0019\u001a\u0005\u0007\u0000"+
+ "\u0000\u001a\u001b\u0005\u001a\u0000\u0000\u001bP\u0005\u001a\u0000\u0000"+
+ "\u001c\u001d\u0005\b\u0000\u0000\u001d\u001e\u0005\u001a\u0000\u0000\u001e"+
+ "P\u0005\u001a\u0000\u0000\u001f \u0005\t\u0000\u0000 !\u0005\u001a\u0000"+
+ "\u0000!P\u0005\u001c\u0000\u0000\"#\u0005\n\u0000\u0000#$\u0005\u001a"+
+ "\u0000\u0000$P\u0005\u001a\u0000\u0000%&\u0005\u000b\u0000\u0000&\'\u0005"+
+ "\u001a\u0000\u0000\'P\u0005\u001c\u0000\u0000()\u0005\f\u0000\u0000)*"+
+ "\u0005\u001a\u0000\u0000*P\u0005\u001a\u0000\u0000+,\u0005\r\u0000\u0000"+
+ ",-\u0005\u001a\u0000\u0000-P\u0005\u001c\u0000\u0000./\u0005\u000e\u0000"+
+ "\u0000/0\u0005\u001a\u0000\u00000P\u0005\u001a\u0000\u000012\u0005\u000f"+
+ "\u0000\u000023\u0005\u001a\u0000\u00003P\u0005\u001c\u0000\u000047\u0005"+
+ "\u0010\u0000\u000058\u0005\u001c\u0000\u000068\u0005\u001b\u0000\u0000"+
+ "75\u0001\u0000\u0000\u000076\u0001\u0000\u0000\u00008P\u0001\u0000\u0000"+
+ "\u00009:\u0005\u0011\u0000\u0000:P\u0005\u001a\u0000\u0000;P\u0005\u0012"+
+ "\u0000\u0000<=\u0005\u0013\u0000\u0000=P\u0005\u001a\u0000\u0000>?\u0005"+
+ "\u0014\u0000\u0000?P\u0005\u001b\u0000\u0000@A\u0005\u0015\u0000\u0000"+
+ "AB\u0005\u001a\u0000\u0000BC\u0005\u001a\u0000\u0000CP\u0005\u001b\u0000"+
+ "\u0000DE\u0005\u0016\u0000\u0000EF\u0005\u001a\u0000\u0000FG\u0005\u001a"+
+ "\u0000\u0000GP\u0005\u001b\u0000\u0000HI\u0005\u0017\u0000\u0000IP\u0005"+
+ "\u001b\u0000\u0000JK\u0005\u0018\u0000\u0000KP\u0005\u001a\u0000\u0000"+
+ "LM\u0005\u001b\u0000\u0000MP\u0005\u0003\u0000\u0000NP\u0005\u0019\u0000"+
+ "\u0000O\n\u0001\u0000\u0000\u0000O\u0010\u0001\u0000\u0000\u0000O\u0016"+
+ "\u0001\u0000\u0000\u0000O\u0019\u0001\u0000\u0000\u0000O\u001c\u0001\u0000"+
+ "\u0000\u0000O\u001f\u0001\u0000\u0000\u0000O\"\u0001\u0000\u0000\u0000"+
+ "O%\u0001\u0000\u0000\u0000O(\u0001\u0000\u0000\u0000O+\u0001\u0000\u0000"+
+ "\u0000O.\u0001\u0000\u0000\u0000O1\u0001\u0000\u0000\u0000O4\u0001\u0000"+
+ "\u0000\u0000O9\u0001\u0000\u0000\u0000O;\u0001\u0000\u0000\u0000O<\u0001"+
+ "\u0000\u0000\u0000O>\u0001\u0000\u0000\u0000O@\u0001\u0000\u0000\u0000"+
+ "OD\u0001\u0000\u0000\u0000OH\u0001\u0000\u0000\u0000OJ\u0001\u0000\u0000"+
+ "\u0000OL\u0001\u0000\u0000\u0000ON\u0001\u0000\u0000\u0000P\u0003\u0001"+
+ "\u0000\u0000\u0000\u0003\u00077O";
+ 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