testing lib with json
This commit is contained in:
		
							
								
								
									
										3
									
								
								other/json/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								other/json/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | # Json parser | ||||||
|  |  | ||||||
|  | Ce projet est basé sur le tutoriel de lark et me permet de prendre la main avec cet outil | ||||||
							
								
								
									
										19
									
								
								other/json/json.lark
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								other/json/json.lark
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | ?value: dict | ||||||
|  | 	 | list | ||||||
|  | 	 | string | ||||||
|  | 	 | SIGNED_NUMBER	-> number | ||||||
|  | 	 | "true"			-> true | ||||||
|  | 	 | "false" 			-> false | ||||||
|  | 	 | "null"			-> null  | ||||||
|  |  | ||||||
|  | list: "[" [value ("," value)*] "]" | ||||||
|  |  | ||||||
|  | dict: "{" [pair ("," pair)*] "}" | ||||||
|  | pair: string ":" value | ||||||
|  |  | ||||||
|  | string: ESCAPED_STRING | ||||||
|  | %import common.ESCAPED_STRING | ||||||
|  | %import common.SIGNED_NUMBER | ||||||
|  |  | ||||||
|  | %import common.WS | ||||||
|  | %ignore WS | ||||||
							
								
								
									
										29
									
								
								other/json/json.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								other/json/json.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | |||||||
|  | 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) | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user