1
0
Fork 0

allow the literal "go" to be omitted.

This commit is contained in:
Kevin Matz 2019-08-05 10:24:04 -04:00
parent 7d9e97a11e
commit e45576944c
5 changed files with 132 additions and 125 deletions

View File

@ -39,11 +39,11 @@ statement : command ( ';' command )* NEWLINE?
;
command
: 'go' ( coords | name value | name ) #Go
| 'pause' number #Pause
: 'pause' number #Pause
| 'wait' number? #Wait
| 'pass' #Pass
| 'whereami' #WhereAmI
| 'go'? ( coords | name value | name ) #Go
;
coords : '{' value? ( seperator value? )* '}' ;

View File

@ -12,8 +12,8 @@ def serializedATN():
buf.write("\u0084\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7")
buf.write("\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")
buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\3\2")
buf.write("\3\2\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3")
buf.write("\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7")
buf.write("\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\5\3")
buf.write("\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\7")
buf.write("\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n\7\nJ\n\n\f\n\16\nM\13")
buf.write("\n\3\13\6\13P\n\13\r\13\16\13Q\3\13\3\13\6\13V\n\13\r")
buf.write("\13\16\13W\5\13Z\n\13\3\f\3\f\3\f\3\r\3\r\3\16\3\16\3")
@ -27,30 +27,30 @@ def serializedATN():
buf.write("\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")
buf.write("\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")
buf.write("\2\2\2\2\27\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2")
buf.write("\2\2#\3\2\2\2\3%\3\2\2\2\5\'\3\2\2\2\7*\3\2\2\2\t\60\3")
buf.write("\2\2\2\13\65\3\2\2\2\r:\3\2\2\2\17C\3\2\2\2\21E\3\2\2")
buf.write("\2\2#\3\2\2\2\3%\3\2\2\2\5\'\3\2\2\2\7-\3\2\2\2\t\62\3")
buf.write("\2\2\2\13\67\3\2\2\2\r@\3\2\2\2\17C\3\2\2\2\21E\3\2\2")
buf.write("\2\23G\3\2\2\2\25O\3\2\2\2\27[\3\2\2\2\31^\3\2\2\2\33")
buf.write("`\3\2\2\2\35b\3\2\2\2\37e\3\2\2\2!j\3\2\2\2#\u0080\3\2")
buf.write("\2\2%&\7=\2\2&\4\3\2\2\2\'(\7i\2\2()\7q\2\2)\6\3\2\2\2")
buf.write("*+\7r\2\2+,\7c\2\2,-\7w\2\2-.\7u\2\2./\7g\2\2/\b\3\2\2")
buf.write("\2\60\61\7y\2\2\61\62\7c\2\2\62\63\7k\2\2\63\64\7v\2\2")
buf.write("\64\n\3\2\2\2\65\66\7r\2\2\66\67\7c\2\2\678\7u\2\289\7")
buf.write("u\2\29\f\3\2\2\2:;\7y\2\2;<\7j\2\2<=\7g\2\2=>\7t\2\2>")
buf.write("?\7g\2\2?@\7c\2\2@A\7o\2\2AB\7k\2\2B\16\3\2\2\2CD\7}\2")
buf.write("\2D\20\3\2\2\2EF\7\177\2\2F\22\3\2\2\2GK\t\2\2\2HJ\t\3")
buf.write("\2\2IH\3\2\2\2JM\3\2\2\2KI\3\2\2\2KL\3\2\2\2L\24\3\2\2")
buf.write("\2MK\3\2\2\2NP\5\31\r\2ON\3\2\2\2PQ\3\2\2\2QO\3\2\2\2")
buf.write("QR\3\2\2\2RY\3\2\2\2SU\7\60\2\2TV\5\31\r\2UT\3\2\2\2V")
buf.write("W\3\2\2\2WU\3\2\2\2WX\3\2\2\2XZ\3\2\2\2YS\3\2\2\2YZ\3")
buf.write("\2\2\2Z\26\3\2\2\2[\\\5\33\16\2\\]\5\33\16\2]\30\3\2\2")
buf.write("\2^_\t\4\2\2_\32\3\2\2\2`a\t\5\2\2a\34\3\2\2\2bc\7.\2")
buf.write("\2c\36\3\2\2\2df\7\17\2\2ed\3\2\2\2ef\3\2\2\2fg\3\2\2")
buf.write("\2gh\7\f\2\2h \3\2\2\2ik\t\6\2\2ji\3\2\2\2kl\3\2\2\2l")
buf.write("j\3\2\2\2lm\3\2\2\2mn\3\2\2\2no\b\21\2\2o\"\3\2\2\2pq")
buf.write("\7\61\2\2qr\7\61\2\2rv\3\2\2\2su\n\7\2\2ts\3\2\2\2ux\3")
buf.write("\2\2\2vt\3\2\2\2vw\3\2\2\2w\u0081\3\2\2\2xv\3\2\2\2y}")
buf.write("\7%\2\2z|\n\7\2\2{z\3\2\2\2|\177\3\2\2\2}{\3\2\2\2}~\3")
buf.write("\2\2\2~\u0081\3\2\2\2\177}\3\2\2\2\u0080p\3\2\2\2\u0080")
buf.write("\2\2%&\7=\2\2&\4\3\2\2\2\'(\7r\2\2()\7c\2\2)*\7w\2\2*")
buf.write("+\7u\2\2+,\7g\2\2,\6\3\2\2\2-.\7y\2\2./\7c\2\2/\60\7k")
buf.write("\2\2\60\61\7v\2\2\61\b\3\2\2\2\62\63\7r\2\2\63\64\7c\2")
buf.write("\2\64\65\7u\2\2\65\66\7u\2\2\66\n\3\2\2\2\678\7y\2\28")
buf.write("9\7j\2\29:\7g\2\2:;\7t\2\2;<\7g\2\2<=\7c\2\2=>\7o\2\2")
buf.write(">?\7k\2\2?\f\3\2\2\2@A\7i\2\2AB\7q\2\2B\16\3\2\2\2CD\7")
buf.write("}\2\2D\20\3\2\2\2EF\7\177\2\2F\22\3\2\2\2GK\t\2\2\2HJ")
buf.write("\t\3\2\2IH\3\2\2\2JM\3\2\2\2KI\3\2\2\2KL\3\2\2\2L\24\3")
buf.write("\2\2\2MK\3\2\2\2NP\5\31\r\2ON\3\2\2\2PQ\3\2\2\2QO\3\2")
buf.write("\2\2QR\3\2\2\2RY\3\2\2\2SU\7\60\2\2TV\5\31\r\2UT\3\2\2")
buf.write("\2VW\3\2\2\2WU\3\2\2\2WX\3\2\2\2XZ\3\2\2\2YS\3\2\2\2Y")
buf.write("Z\3\2\2\2Z\26\3\2\2\2[\\\5\33\16\2\\]\5\33\16\2]\30\3")
buf.write("\2\2\2^_\t\4\2\2_\32\3\2\2\2`a\t\5\2\2a\34\3\2\2\2bc\7")
buf.write(".\2\2c\36\3\2\2\2df\7\17\2\2ed\3\2\2\2ef\3\2\2\2fg\3\2")
buf.write("\2\2gh\7\f\2\2h \3\2\2\2ik\t\6\2\2ji\3\2\2\2kl\3\2\2\2")
buf.write("lj\3\2\2\2lm\3\2\2\2mn\3\2\2\2no\b\21\2\2o\"\3\2\2\2p")
buf.write("q\7\61\2\2qr\7\61\2\2rv\3\2\2\2su\n\7\2\2ts\3\2\2\2ux")
buf.write("\3\2\2\2vt\3\2\2\2vw\3\2\2\2w\u0081\3\2\2\2xv\3\2\2\2")
buf.write("y}\7%\2\2z|\n\7\2\2{z\3\2\2\2|\177\3\2\2\2}{\3\2\2\2}")
buf.write("~\3\2\2\2~\u0081\3\2\2\2\177}\3\2\2\2\u0080p\3\2\2\2\u0080")
buf.write("y\3\2\2\2\u0081\u0082\3\2\2\2\u0082\u0083\b\22\2\2\u0083")
buf.write("$\3\2\2\2\f\2KQWYelv}\u0080\3\b\2\2")
return buf.getvalue()
@ -83,7 +83,7 @@ class ArmControlLexer(Lexer):
modeNames = [ "DEFAULT_MODE" ]
literalNames = [ "<INVALID>",
"';'", "'go'", "'pause'", "'wait'", "'pass'", "'whereami'",
"';'", "'pause'", "'wait'", "'pass'", "'whereami'", "'go'",
"'{'", "'}'", "','" ]
symbolicNames = [ "<INVALID>",

View File

@ -26,15 +26,6 @@ class ArmControlListener(ParseTreeListener):
pass
# Enter a parse tree produced by ArmControlParser#Go.
def enterGo(self, ctx:ArmControlParser.GoContext):
pass
# Exit a parse tree produced by ArmControlParser#Go.
def exitGo(self, ctx:ArmControlParser.GoContext):
pass
# Enter a parse tree produced by ArmControlParser#Pause.
def enterPause(self, ctx:ArmControlParser.PauseContext):
pass
@ -71,6 +62,15 @@ class ArmControlListener(ParseTreeListener):
pass
# Enter a parse tree produced by ArmControlParser#Go.
def enterGo(self, ctx:ArmControlParser.GoContext):
pass
# Exit a parse tree produced by ArmControlParser#Go.
def exitGo(self, ctx:ArmControlParser.GoContext):
pass
# Enter a parse tree produced by ArmControlParser#coords.
def enterCoords(self, ctx:ArmControlParser.CoordsContext):
pass

View File

@ -9,34 +9,35 @@ import sys
def serializedATN():
with StringIO() as buf:
buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\21")
buf.write("X\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")
buf.write("Z\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")
buf.write("\t\b\4\t\t\t\4\n\t\n\3\2\7\2\26\n\2\f\2\16\2\31\13\2\3")
buf.write("\2\3\2\3\3\3\3\3\3\7\3 \n\3\f\3\16\3#\13\3\3\3\5\3&\n")
buf.write("\3\3\3\5\3)\n\3\3\4\3\4\3\4\3\4\3\4\3\4\5\4\61\n\4\3\4")
buf.write("\3\4\3\4\3\4\5\4\67\n\4\3\4\3\4\5\4;\n\4\3\5\3\5\5\5?")
buf.write("\n\5\3\5\3\5\5\5C\n\5\7\5E\n\5\f\5\16\5H\13\5\3\5\3\5")
buf.write("\3\6\3\6\3\7\3\7\5\7P\n\7\3\b\3\b\3\t\3\t\3\n\3\n\3\n")
buf.write("\2\2\13\2\4\6\b\n\f\16\20\22\2\2\2]\2\27\3\2\2\2\4(\3")
buf.write("\2\2\2\6:\3\2\2\2\b<\3\2\2\2\nK\3\2\2\2\fO\3\2\2\2\16")
buf.write("Q\3\2\2\2\20S\3\2\2\2\22U\3\2\2\2\24\26\5\4\3\2\25\24")
buf.write("\3\2\2\2\26\31\3\2\2\2\27\25\3\2\2\2\27\30\3\2\2\2\30")
buf.write("\32\3\2\2\2\31\27\3\2\2\2\32\33\7\2\2\3\33\3\3\2\2\2\34")
buf.write("!\5\6\4\2\35\36\7\3\2\2\36 \5\6\4\2\37\35\3\2\2\2 #\3")
buf.write("\2\2\2!\37\3\2\2\2!\"\3\2\2\2\"%\3\2\2\2#!\3\2\2\2$&\7")
buf.write("\17\2\2%$\3\2\2\2%&\3\2\2\2&)\3\2\2\2\')\7\17\2\2(\34")
buf.write("\3\2\2\2(\'\3\2\2\2)\5\3\2\2\2*\60\7\4\2\2+\61\5\b\5\2")
buf.write(",-\5\n\6\2-.\5\f\7\2.\61\3\2\2\2/\61\5\n\6\2\60+\3\2\2")
buf.write("\2\60,\3\2\2\2\60/\3\2\2\2\61;\3\2\2\2\62\63\7\5\2\2\63")
buf.write(";\5\16\b\2\64\66\7\6\2\2\65\67\5\16\b\2\66\65\3\2\2\2")
buf.write("\66\67\3\2\2\2\67;\3\2\2\28;\7\7\2\29;\7\b\2\2:*\3\2\2")
buf.write("\2:\62\3\2\2\2:\64\3\2\2\2:8\3\2\2\2:9\3\2\2\2;\7\3\2")
buf.write("\2\2<>\7\t\2\2=?\5\f\7\2>=\3\2\2\2>?\3\2\2\2?F\3\2\2\2")
buf.write("@B\5\22\n\2AC\5\f\7\2BA\3\2\2\2BC\3\2\2\2CE\3\2\2\2D@")
buf.write("\3\2\2\2EH\3\2\2\2FD\3\2\2\2FG\3\2\2\2GI\3\2\2\2HF\3\2")
buf.write("\2\2IJ\7\n\2\2J\t\3\2\2\2KL\7\13\2\2L\13\3\2\2\2MP\5\16")
buf.write("\b\2NP\5\20\t\2OM\3\2\2\2ON\3\2\2\2P\r\3\2\2\2QR\7\f\2")
buf.write("\2R\17\3\2\2\2ST\7\r\2\2T\21\3\2\2\2UV\7\16\2\2V\23\3")
buf.write("\2\2\2\r\27!%(\60\66:>BFO")
buf.write("\3\3\3\5\3)\n\3\3\4\3\4\3\4\3\4\5\4/\n\4\3\4\3\4\3\4\5")
buf.write("\4\64\n\4\3\4\3\4\3\4\3\4\3\4\5\4;\n\4\5\4=\n\4\3\5\3")
buf.write("\5\5\5A\n\5\3\5\3\5\5\5E\n\5\7\5G\n\5\f\5\16\5J\13\5\3")
buf.write("\5\3\5\3\6\3\6\3\7\3\7\5\7R\n\7\3\b\3\b\3\t\3\t\3\n\3")
buf.write("\n\3\n\2\2\13\2\4\6\b\n\f\16\20\22\2\2\2`\2\27\3\2\2\2")
buf.write("\4(\3\2\2\2\6<\3\2\2\2\b>\3\2\2\2\nM\3\2\2\2\fQ\3\2\2")
buf.write("\2\16S\3\2\2\2\20U\3\2\2\2\22W\3\2\2\2\24\26\5\4\3\2\25")
buf.write("\24\3\2\2\2\26\31\3\2\2\2\27\25\3\2\2\2\27\30\3\2\2\2")
buf.write("\30\32\3\2\2\2\31\27\3\2\2\2\32\33\7\2\2\3\33\3\3\2\2")
buf.write("\2\34!\5\6\4\2\35\36\7\3\2\2\36 \5\6\4\2\37\35\3\2\2\2")
buf.write(" #\3\2\2\2!\37\3\2\2\2!\"\3\2\2\2\"%\3\2\2\2#!\3\2\2\2")
buf.write("$&\7\17\2\2%$\3\2\2\2%&\3\2\2\2&)\3\2\2\2\')\7\17\2\2")
buf.write("(\34\3\2\2\2(\'\3\2\2\2)\5\3\2\2\2*+\7\4\2\2+=\5\16\b")
buf.write("\2,.\7\5\2\2-/\5\16\b\2.-\3\2\2\2./\3\2\2\2/=\3\2\2\2")
buf.write("\60=\7\6\2\2\61=\7\7\2\2\62\64\7\b\2\2\63\62\3\2\2\2\63")
buf.write("\64\3\2\2\2\64:\3\2\2\2\65;\5\b\5\2\66\67\5\n\6\2\678")
buf.write("\5\f\7\28;\3\2\2\29;\5\n\6\2:\65\3\2\2\2:\66\3\2\2\2:")
buf.write("9\3\2\2\2;=\3\2\2\2<*\3\2\2\2<,\3\2\2\2<\60\3\2\2\2<\61")
buf.write("\3\2\2\2<\63\3\2\2\2=\7\3\2\2\2>@\7\t\2\2?A\5\f\7\2@?")
buf.write("\3\2\2\2@A\3\2\2\2AH\3\2\2\2BD\5\22\n\2CE\5\f\7\2DC\3")
buf.write("\2\2\2DE\3\2\2\2EG\3\2\2\2FB\3\2\2\2GJ\3\2\2\2HF\3\2\2")
buf.write("\2HI\3\2\2\2IK\3\2\2\2JH\3\2\2\2KL\7\n\2\2L\t\3\2\2\2")
buf.write("MN\7\13\2\2N\13\3\2\2\2OR\5\16\b\2PR\5\20\t\2QO\3\2\2")
buf.write("\2QP\3\2\2\2R\r\3\2\2\2ST\7\f\2\2T\17\3\2\2\2UV\7\r\2")
buf.write("\2V\21\3\2\2\2WX\7\16\2\2X\23\3\2\2\2\16\27!%(.\63:<@")
buf.write("DHQ")
return buf.getvalue()
@ -50,8 +51,8 @@ class ArmControlParser ( Parser ):
sharedContextCache = PredictionContextCache()
literalNames = [ "<INVALID>", "';'", "'go'", "'pause'", "'wait'", "'pass'",
"'whereami'", "'{'", "'}'", "<INVALID>", "<INVALID>",
literalNames = [ "<INVALID>", "';'", "'pause'", "'wait'", "'pass'",
"'whereami'", "'go'", "'{'", "'}'", "<INVALID>", "<INVALID>",
"<INVALID>", "','" ]
symbolicNames = [ "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
@ -138,7 +139,7 @@ class ArmControlParser ( Parser ):
self.state = 21
self._errHandler.sync(self)
_la = self._input.LA(1)
while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << ArmControlParser.T__1) | (1 << ArmControlParser.T__2) | (1 << ArmControlParser.T__3) | (1 << ArmControlParser.T__4) | (1 << ArmControlParser.T__5) | (1 << ArmControlParser.NEWLINE))) != 0):
while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << ArmControlParser.T__1) | (1 << ArmControlParser.T__2) | (1 << ArmControlParser.T__3) | (1 << ArmControlParser.T__4) | (1 << ArmControlParser.T__5) | (1 << ArmControlParser.T__6) | (1 << ArmControlParser.NAME) | (1 << ArmControlParser.NEWLINE))) != 0):
self.state = 18
self.statement()
self.state = 23
@ -195,7 +196,7 @@ class ArmControlParser ( Parser ):
self.state = 38
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [ArmControlParser.T__1, ArmControlParser.T__2, ArmControlParser.T__3, ArmControlParser.T__4, ArmControlParser.T__5]:
if token in [ArmControlParser.T__1, ArmControlParser.T__2, ArmControlParser.T__3, ArmControlParser.T__4, ArmControlParser.T__5, ArmControlParser.T__6, ArmControlParser.NAME]:
self.enterOuterAlt(localctx, 1)
self.state = 26
self.command()
@ -355,69 +356,75 @@ class ArmControlParser ( Parser ):
self.enterRule(localctx, 4, self.RULE_command)
self._la = 0 # Token type
try:
self.state = 56
self.state = 58
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [ArmControlParser.T__1]:
localctx = ArmControlParser.GoContext(self, localctx)
localctx = ArmControlParser.PauseContext(self, localctx)
self.enterOuterAlt(localctx, 1)
self.state = 40
self.match(ArmControlParser.T__1)
self.state = 46
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,4,self._ctx)
if la_ == 1:
self.state = 41
self.coords()
pass
elif la_ == 2:
self.state = 42
self.name()
self.state = 43
self.value()
pass
elif la_ == 3:
self.state = 45
self.name()
pass
pass
elif token in [ArmControlParser.T__2]:
localctx = ArmControlParser.PauseContext(self, localctx)
self.enterOuterAlt(localctx, 2)
self.state = 48
self.match(ArmControlParser.T__2)
self.state = 49
self.state = 41
self.number()
pass
elif token in [ArmControlParser.T__3]:
elif token in [ArmControlParser.T__2]:
localctx = ArmControlParser.WaitContext(self, localctx)
self.enterOuterAlt(localctx, 3)
self.state = 50
self.match(ArmControlParser.T__3)
self.state = 52
self.enterOuterAlt(localctx, 2)
self.state = 42
self.match(ArmControlParser.T__2)
self.state = 44
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==ArmControlParser.NUMBER:
self.state = 51
self.state = 43
self.number()
pass
elif token in [ArmControlParser.T__4]:
elif token in [ArmControlParser.T__3]:
localctx = ArmControlParser.PassContext(self, localctx)
self.enterOuterAlt(localctx, 3)
self.state = 46
self.match(ArmControlParser.T__3)
pass
elif token in [ArmControlParser.T__4]:
localctx = ArmControlParser.WhereAmIContext(self, localctx)
self.enterOuterAlt(localctx, 4)
self.state = 54
self.state = 47
self.match(ArmControlParser.T__4)
pass
elif token in [ArmControlParser.T__5]:
localctx = ArmControlParser.WhereAmIContext(self, localctx)
elif token in [ArmControlParser.T__5, ArmControlParser.T__6, ArmControlParser.NAME]:
localctx = ArmControlParser.GoContext(self, localctx)
self.enterOuterAlt(localctx, 5)
self.state = 55
self.match(ArmControlParser.T__5)
self.state = 49
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==ArmControlParser.T__5:
self.state = 48
self.match(ArmControlParser.T__5)
self.state = 56
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,6,self._ctx)
if la_ == 1:
self.state = 51
self.coords()
pass
elif la_ == 2:
self.state = 52
self.name()
self.state = 53
self.value()
pass
elif la_ == 3:
self.state = 55
self.name()
pass
pass
else:
raise NoViableAltException(self)
@ -472,35 +479,35 @@ class ArmControlParser ( Parser ):
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 58
self.match(ArmControlParser.T__6)
self.state = 60
self.match(ArmControlParser.T__6)
self.state = 62
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==ArmControlParser.NUMBER or _la==ArmControlParser.HEX:
self.state = 59
self.state = 61
self.value()
self.state = 68
self.state = 70
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==ArmControlParser.SEPERATOR:
self.state = 62
self.seperator()
self.state = 64
self.seperator()
self.state = 66
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==ArmControlParser.NUMBER or _la==ArmControlParser.HEX:
self.state = 63
self.state = 65
self.value()
self.state = 70
self.state = 72
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 71
self.state = 73
self.match(ArmControlParser.T__7)
except RecognitionException as re:
localctx.exception = re
@ -540,7 +547,7 @@ class ArmControlParser ( Parser ):
self.enterRule(localctx, 8, self.RULE_name)
try:
self.enterOuterAlt(localctx, 1)
self.state = 73
self.state = 75
self.match(ArmControlParser.NAME)
except RecognitionException as re:
localctx.exception = re
@ -584,17 +591,17 @@ class ArmControlParser ( Parser ):
localctx = ArmControlParser.ValueContext(self, self._ctx, self.state)
self.enterRule(localctx, 10, self.RULE_value)
try:
self.state = 77
self.state = 79
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [ArmControlParser.NUMBER]:
self.enterOuterAlt(localctx, 1)
self.state = 75
self.state = 77
self.number()
pass
elif token in [ArmControlParser.HEX]:
self.enterOuterAlt(localctx, 2)
self.state = 76
self.state = 78
self.hexidecimal()
pass
else:
@ -638,7 +645,7 @@ class ArmControlParser ( Parser ):
self.enterRule(localctx, 12, self.RULE_number)
try:
self.enterOuterAlt(localctx, 1)
self.state = 79
self.state = 81
self.match(ArmControlParser.NUMBER)
except RecognitionException as re:
localctx.exception = re
@ -678,7 +685,7 @@ class ArmControlParser ( Parser ):
self.enterRule(localctx, 14, self.RULE_hexidecimal)
try:
self.enterOuterAlt(localctx, 1)
self.state = 81
self.state = 83
self.match(ArmControlParser.HEX)
except RecognitionException as re:
localctx.exception = re
@ -718,7 +725,7 @@ class ArmControlParser ( Parser ):
self.enterRule(localctx, 16, self.RULE_seperator)
try:
self.enterOuterAlt(localctx, 1)
self.state = 83
self.state = 85
self.match(ArmControlParser.SEPERATOR)
except RecognitionException as re:
localctx.exception = re

View File

@ -74,7 +74,7 @@ print(arm.r.angle)
### Scripting Commands
Multiple script commands given on the same line must be seperated with a semicolon (*;*).
#### go coordinates | axis_name vale | preset_name
Set target coordinates for the arm. Movement will not begin until the command statement is complete, or before a *wait* or *pause* command.
Set target coordinates for the arm. Movement will not begin until the command statement is complete, or before a *wait* or *pause* command. The word 'go' my be omitted provided the axis or preset name does not match the name of a command.
###### coordinates
Go to the coordinates given as *{value, value, value, value}*. Values must be integers. Values may be given in either decimal or hexadecimal notation. Omitted values will be accepted as *null* and will not effect the arm position.
###### axis_name value