Compare commits
2 Commits
32fbcf143a
...
8c3341d09f
Author | SHA1 | Date |
---|---|---|
Lephe | 8c3341d09f | |
Lephe | 77404fa61b |
|
@ -42,7 +42,7 @@ class N(enum.IntEnum):
|
|||
|
||||
# Flow control
|
||||
REPEAT = enum.auto()
|
||||
WHILE = enum.auto()
|
||||
UNTIL = enum.auto()
|
||||
IF = enum.auto()
|
||||
|
||||
# Expressions
|
||||
|
|
|
@ -132,8 +132,8 @@ class Context:
|
|||
for i in range(count):
|
||||
self.run(n.args[1])
|
||||
|
||||
elif n.type == N.WHILE:
|
||||
while self.run(n.args[0]):
|
||||
elif n.type == N.UNTIL:
|
||||
while not self.run(n.args[0]):
|
||||
self.run(n.args[1])
|
||||
|
||||
elif n.type == N.IF:
|
||||
|
|
|
@ -33,8 +33,8 @@ class T(enum.IntEnum):
|
|||
# Flow control
|
||||
REPEAT = 0xF911
|
||||
REPEAT_END = 0xF912
|
||||
WHILE = 0xF913
|
||||
WHILE_END = 0xF914
|
||||
UNTIL = 0xF913
|
||||
UNTIL_END = 0xF914
|
||||
IF = 0xF915
|
||||
IF_END = 0xF916
|
||||
IFELSE = 0xF917
|
||||
|
@ -331,7 +331,7 @@ class TextLexer(LexerBase):
|
|||
|
||||
RE_STMTS = re.compile(
|
||||
r"NOP|FORWARD|ROTATE|ORIENT|GOTO|PENDOWN|PENUP|SETVAR|INPUT|MESSAGE|"
|
||||
r"PRINT|STYLE|WAIT|REPEAT_END|REPEAT|WHILE_END|WHILE|IF_END|ELSE|"
|
||||
r"PRINT|STYLE|WAIT|REPEAT_END|REPEAT|UNTIL_END|UNTIL|IF_END|ELSE|"
|
||||
r"IFELSE_END|IFELSE|IF",
|
||||
re.IGNORECASE)
|
||||
RE_CONST = re.compile(
|
||||
|
|
|
@ -20,7 +20,7 @@ class Parser:
|
|||
PENDOWN | PENUP | SETVAR arg argvar | INPUT argvar |
|
||||
MESSAGE arg | PRINT arg | STYLE style | WAIT arg |
|
||||
REPEAT arg program REPEAT_END |
|
||||
WHILE cond PARAM program WHILE_END |
|
||||
UNTIL cond PARAM program UNTIL_END |
|
||||
IF cond PARAM program IF_END |
|
||||
IFELSE cond PARAM program ELSE program IFELSE_END
|
||||
arg -> expr PARAM
|
||||
|
@ -112,7 +112,7 @@ class Parser:
|
|||
valid = [
|
||||
T.FORWARD, T.ROTATE, T.ORIENT, T.GOTO, T.PENDOWN, T.PENUP,
|
||||
T.SETVAR, T.INPUT, T.MESSAGE, T.PRINT, T.STYLE, T.WAIT,
|
||||
T.REPEAT, T.WHILE, T.IF, T.IFELSE,
|
||||
T.REPEAT, T.UNTIL, T.IF, T.IFELSE,
|
||||
]
|
||||
op = self.expect(*valid, optional=optional)
|
||||
|
||||
|
@ -155,14 +155,14 @@ class Parser:
|
|||
self.expect(T.EOL, optional=True)
|
||||
return Node(N.REPEAT, arg, prg)
|
||||
|
||||
if op.type == T.WHILE:
|
||||
if op.type == T.UNTIL:
|
||||
cond = self.cond()
|
||||
self.expect(T.PARAM)
|
||||
self.expect(T.EOL, optional=True)
|
||||
prg = self.program()
|
||||
self.expect(T.WHILE_END)
|
||||
self.expect(T.UNTIL_END)
|
||||
self.expect(T.EOL, optional=True)
|
||||
return Node(N.WHILE, cond, prg)
|
||||
return Node(N.UNTIL, cond, prg)
|
||||
|
||||
if op.type == T.IF:
|
||||
cond = self.cond()
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110001100E0010B30025E0+E-F9083237003700F901F9053100F901F909F901F9053000F901F90B31004000F901F91340FB053700F901F9054000F901F90832380037A740A86040A631D0A93200F901F90B40A631004000F901F914F901F9053600F901F908323800A7323000F901F9053600F901F90AF901F9083134003000F901F909F901F9083134003100F901F9053500F901F908313900A73500F901F905A73500F901F908313400A73200F901F90AF901F908313600A73100F901F909F901F908313600A73200F901F905A73500F901F9083131003500F901F9053300F901F9083134003700F901F905A73800F901F90836003300F901F9053800F901F9083134003500F901F9053200F901F9083136003100F901F90AF901F908373400A7313400F901F9053100F901F909F901F9053200F901F908373700A7313600F901F905A73200F901F908373500A7313800F901F9053200F901F90AF901F9053200F901F9113200F901F9053100F901F909F901F9053100F901F906393000F901F9053400F901F906393000F901F912F901F90AF901F9053400F901F909F901F9053200F901F905A73100F901F906393000F901F9053400F901F908383300A7313500F901F90AF901F908383600A7313800F901F906A7393000F901F9053100F901F909F901F9053200F901F906393000F901F9053200F901F9113400F901F9053200F901F906393000F901F912F901F90AF901F908383200A7313000F901F9053100F901F909F901F9053300F901F908383400A73400F901F908383500A73400F901F905A73200F901F908383200A73900F901F908373900A73600F901F9053200F901F908383000A73400F901F908383200A73600F901F90AF901F9083800A7313200F901F9073000F901F90B31004700F901F91347FB053900F901F91547A53500F901F9083600A7313200F901F916F901F9053100F901F909F901F9053000F901F906393000F901F9053100F901F906A7393000F901F91547FB023400F901F90AF901F9053100F901F906393000F901F9053100F901F909F901F9053000F901F90AF901F9053100F901F906A7393000F901F9053100F901F909F901F9053000F901F916F901F9053100F901F90AF901F906393000F901F9053100F901F906A7393000F901F9053100F901F909F901F9053300F901F90AF901F9053100F901F906A7393000F901F90B47A631004700F901F914F901F907393000F901F908353500A73500F901F909F901F908353700A73700F901F908353300A7313100F901F905A73200F901F908353700A7313300F901F905A73800F901F908353600A7323200F901F908353500A7323200F901F908353400A7323100F901F9053800F901F908353800A7313300F901F9053200F901F908353700A7313000F901F9053100F901F908353400A73900F901F908353600A73700F901F9053400F901F908353500A73200F901F908353600A73100F901F9053100F901F9083537003100F901F9053300F901F9083534003700F901F9083530003700F901F9083438003500F901F9083437003500F901F9083436003400F901F905A73300F901F9083435003100F901F9083434003000F901F908353200A73800F901F908353400A73800F901F908353100A73800F901F908343900A73600F901F908343700A73600F901F908343600A73500F901F9053100F901F908343700A73400F901F9053300F901F908343900A73300F901F908353400A73300F901F908353300A73400F901F905A73400F901F908353200A73700F901F908353400A73500F901F90AF901F9083438003500F901F905A73100F901F909F901F905A73100F901F906A7393000F901F9053200F901F90AF901F9053200F901F909F901F9053300F901F906393000F901F9053200F901F906393000F901F9053100F901F90AF901F9083535003200F901F909F901F9083533003000F901F9053300F901F9083438003200F901F90AF901F908353000A73100F901F909F901F9083530003100F901F905A73300F901F908353300A73100F901F90AF901F9083436003100F901F909F901F9083437003000F901F90AF901F9083734003200F901F9073000F901F90B30004700F901F91347FB053200F901F9053100F901F909F901F9053000F901F90AF901F9053700F901F91547A53000F901F909F901F9053000F901F916F901F90AF901F9053700F901F909F901F9053000F901F90AF901F908393000A73300F901F90631383000F901F90B47A631004700F901F914F901F9083739003100F901F9113200F901F9113200F901F9053100F901F909F901F9053100F901F90AF901F9053100F901F912F901F908383500A73100F901F90631383000F901F912F901F9083736003000F901F9113200F901F9053100F901F909F901F9053200F901F90AF901F9053500F901F912F901F908373400A73100F901F9113200F901F9053100F901F909F901F9053100F901F90AF901F905313100F901F912F901F908373400A73300F901F9113200F901F907393000F901F9053100F901F909F901F9053300F901F90AF901F908393000A73300F901F912F901F908383200A73300F901F9053100F901F909F901F9053000F901F90AF901F90B3432004200F901F90BA73135004300F901F90B30004400F901F91344FB053300F901F90842A6310043A63100F901F909F901F908420043A63200F901F90AF901F90842A6350043A63100F901F909F901F90842A6360043A63200F901F90AF901F90842A6330043A63200F901F9053100F901F909F901F9053100F901F90AF901F91544A53000F901F90B3631004200F901F90B31004300F901F916F901F91544A53100F901F90B3633004200F901F90BA73232004300F901F916F901F90B44A631004400F901F914F901F903F901F902
|
|
@ -0,0 +1 @@
|
|||
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110001100E0010B30025E0+E-F908A7363000323000F901F909F901F9053800F901F906A7393000F901F9053400F901F906A7393000F901F9053900F901F906A7393000F901F9053400F901F903F901F902
|
|
@ -1,12 +1,12 @@
|
|||
setvar 0, A
|
||||
while A <= 5
|
||||
until A=6
|
||||
setvar 0, B
|
||||
while B <= 12
|
||||
until B=13
|
||||
penup
|
||||
goto 14*B-90, 7*A-20
|
||||
pendown
|
||||
goto 15*B-90, 8*A-20
|
||||
setvar B+1, B
|
||||
while_end
|
||||
until_end
|
||||
setvar A+1, A
|
||||
while_end
|
||||
until_end
|
||||
|
|
Loading…
Reference in New Issue