Fix Some Code

main CI_BUILD_168
ColdWindScholar 2023-09-02 07:54:21 +08:00
parent 41d36ce3fa
commit ef4b79a9a7
2 changed files with 83 additions and 1 deletions

View File

@ -2,7 +2,7 @@
theme = dark
path =
update_url = https://raw.github.com/zjadzhd/MIO-KITCHEN/main/
version = 2.6.3
version = 2.6.4
barlevel = 0.98
key = MIO-PUBLIC-BETA-KEY
oobe = 4

82
msh_parse.py Normal file
View File

@ -0,0 +1,82 @@
from lark import Lark, Transformer, v_args
import operator
from lark.exceptions import VisitError, UnexpectedCharacters, UnexpectedEOF
grammar = r'''
?start: expr
ident: CNAME
int: SIGNED_INT
float: SIGNED_FLOAT
str: ESCAPED_STRING
?number: int | float
?arg: expr | str
?expr: number
| ident -> get
| ident "=" expr -> set
| ident "(" [arg ("," arg)*] ")" -> call
| "(" expr ")"
| expr "+" expr -> add
| expr "-" expr -> sub
| expr "*" expr -> mul
| expr "/" expr -> div
%import common.SIGNED_INT
%import common.SIGNED_FLOAT
%import common.WS
%import common.CNAME
%import common.ESCAPED_STRING
%ignore WS
'''
@v_args(inline=True)
class Msh_Parse(Transformer):
vars = {}
ident = str
int = int
float = float
add = operator.add
str = lambda _, s: s[1:-1]
def call(self, n, *v):
try:
return getattr(self, n)(*v)
except:
return None
def echo(self, *v):
print(*v)
def min(self, *v):
return min(*v)
def set(self, n, v):
self.vars[n] = v
return v
def get(self, n):
try:
return self.vars[n]
except KeyError:
raise UnboundLocalError(f"{n} Var Not Found")
parser = Lark(grammar)
transformer = Msh_Parse()
while 1:
try:
s = input(">")
except EOFError:
print("LOL")
continue
except KeyboardInterrupt:
exit()
try:
tree = parser.parse(s)
print(transformer.transform(tree))
except (UnexpectedCharacters, UnexpectedEOF, VisitError) as e:
try:
print(e.orig_exc)
except:
print(e)
continue