adding parser code
This commit is contained in:
		
							
								
								
									
										20
									
								
								spf.py
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								spf.py
									
									
									
									
									
								
							@ -7,17 +7,20 @@ import argparse
 | 
				
			|||||||
import lark
 | 
					import lark
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SPFTransformer(lark.Transformer):
 | 
				
			||||||
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def main():
 | 
					def main():
 | 
				
			||||||
    parser = argparse.ArgumentParser()
 | 
					    arg_parser = argparse.ArgumentParser()
 | 
				
			||||||
    parser.add_argument("spf_file", help="Fichier source à interpréter")
 | 
					    arg_parser.add_argument("spf_file", help="Fichier source à interpréter")
 | 
				
			||||||
    parser.add_argument("-d", "--dump",
 | 
					    arg_parser.add_argument("-d", "--dump",
 | 
				
			||||||
                        help="affichage de la mémoire du programme",
 | 
					                        help="affichage de la mémoire du programme",
 | 
				
			||||||
                        action="store_true")
 | 
					                        action="store_true")
 | 
				
			||||||
    parser.add_argument("-t", "--trace",
 | 
					    arg_parser.add_argument("-t", "--trace",
 | 
				
			||||||
                        help="affichage de la mémoire au cours du programme",
 | 
					                        help="affichage de la mémoire au cours du programme",
 | 
				
			||||||
                        action="store_true")
 | 
					                        action="store_true")
 | 
				
			||||||
    args = parser.parse_args()
 | 
					    args = arg_parser.parse_args()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if args.dump:
 | 
					    if args.dump:
 | 
				
			||||||
        print("Dump activated (TODO)", file=sys.stderr)
 | 
					        print("Dump activated (TODO)", file=sys.stderr)
 | 
				
			||||||
@ -25,6 +28,13 @@ def main():
 | 
				
			|||||||
    if args.trace:
 | 
					    if args.trace:
 | 
				
			||||||
        print("Trace activated (TODO)", file=sys.stderr)
 | 
					        print("Trace activated (TODO)", file=sys.stderr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    with open("spf.lark") as grammar:
 | 
				
			||||||
 | 
					        spf_parser = lark.Lark(grammar, parser="lalr", transformer=SPFTransformer)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    with open(args.spf_file) as spf_input:
 | 
				
			||||||
 | 
					        program = spf_input.readall()
 | 
				
			||||||
 | 
					        spf_parser.parse(program)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    main()
 | 
					    main()
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user