30 lines
570 B
Python
30 lines
570 B
Python
|
import lark
|
||
|
import pprint
|
||
|
|
||
|
class JsonTransformer(lark.Transformer):
|
||
|
def string(self, el):
|
||
|
(el,) = el
|
||
|
return el[1:-1]
|
||
|
|
||
|
def number(self, el):
|
||
|
(el, ) = el
|
||
|
return float(el)
|
||
|
|
||
|
|
||
|
list = list
|
||
|
dict = dict
|
||
|
pair = tuple
|
||
|
|
||
|
null = lambda self, _: None
|
||
|
true = lambda self, _: True
|
||
|
false = lambda self, _: False
|
||
|
|
||
|
json = '{"key": ["item0", "item1", 3.14, true]}'
|
||
|
|
||
|
with open("json.lark") as f:
|
||
|
json_parser = lark.Lark(f, start="value", parser="lalr", transformer=JsonTransformer())
|
||
|
|
||
|
t = json_parser.parse(json)
|
||
|
print(t)
|
||
|
|