From de02df0f1837d0d132f70665fdeb2b39407971ef Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Tue, 31 Mar 2020 14:03:05 +0100 Subject: [PATCH] add sigdecoder --- src/soc/decoder/power_pseudo.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/soc/decoder/power_pseudo.py b/src/soc/decoder/power_pseudo.py index 0be0b2a6..d6436b16 100644 --- a/src/soc/decoder/power_pseudo.py +++ b/src/soc/decoder/power_pseudo.py @@ -14,6 +14,9 @@ from copy import copy from ply import lex, yacc import astor +from soc.decoder.power_fieldsn import create_sigdecode + + # I use the Python AST #from compiler import ast import ast @@ -809,6 +812,8 @@ class GardenSnakeParser(PowerParser): self.parser = yacc.yacc(module=self, start="file_input_end", debug=False, write_tables=False) + self.sd = create_sigdecode() + def parse(self, code): self.lexer.input(code) result = self.parser.parse(lexer = self.lexer, debug=False) @@ -898,7 +903,8 @@ print ("forms", sd.df.forms) for f in sd.df.FormX: print (f) -_compile = GardenSnakeCompiler().compile +gsc = GardenSnakeCompiler() +_compile = gsc.compile tree = _compile(code, mode="single", filename="string") import ast @@ -913,8 +919,6 @@ print (source) #sys.exit(0) -from soc.decoder.power_fieldsn import create_sigdecode - # Set up the GardenSnake run-time environment def print_(*args): print ("args", args) @@ -928,8 +932,7 @@ d["print"] = print_ d["concat"] = listconcat form = 'X' -sd = create_sigdecode() -getform = getattr(sd.df, "Form%s" % form) +getform = getattr(gsc.parser.sd.df, "Form%s" % form) print (getform) for k, f in sd.df.instrs[form].items(): d[k] = getattr(getform, k) -- 2.30.2