compilation/spf.py

42 lines
1.1 KiB
Python
Raw Normal View History

2025-03-15 19:37:31 +01:00
#!/usr/bin/env python
2025-03-15 17:16:09 +01:00
# Projet de compilation Umons 2025
2025-03-15 19:37:31 +01:00
# Par Debucquoy Anthony (231687)
import argparse
import lark
import sys
2025-03-15 17:16:09 +01:00
2025-03-16 11:34:15 +01:00
class SPFTransformer(lark.Transformer):
pass
2025-03-15 17:16:09 +01:00
def main():
2025-03-16 11:34:15 +01:00
arg_parser = argparse.ArgumentParser()
arg_parser.add_argument("spf_file", help="Fichier source à interpréter")
arg_parser.add_argument("-d", "--dump",
2025-03-15 19:37:31 +01:00
help="affichage de la mémoire du programme",
action="store_true")
2025-03-16 11:34:15 +01:00
arg_parser.add_argument("-t", "--trace",
2025-03-15 19:37:31 +01:00
help="affichage de la mémoire au cours du programme",
action="store_true")
2025-03-16 11:34:15 +01:00
args = arg_parser.parse_args()
2025-03-15 19:37:31 +01:00
if args.dump:
2025-03-16 11:16:19 +01:00
print("Dump activated (TODO)", file=sys.stderr)
2025-03-15 19:37:31 +01:00
if args.trace:
2025-03-16 11:16:19 +01:00
print("Trace activated (TODO)", file=sys.stderr)
2025-03-15 19:37:31 +01:00
2025-03-16 11:34:15 +01:00
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)
2025-03-15 17:16:09 +01:00
if __name__ == "__main__":
main()