From: Luke Kenneth Casson Leighton Date: Wed, 1 Apr 2020 15:30:31 +0000 (+0100) Subject: move demo code for lexer X-Git-Tag: div_pipeline~1577 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=48dfb6f732f3a8d91e7930dadd07db51039f52e3;p=soc.git move demo code for lexer --- diff --git a/src/soc/decoder/power_pseudo.py b/src/soc/decoder/power_pseudo.py index e1cb44a1..36a7022e 100644 --- a/src/soc/decoder/power_pseudo.py +++ b/src/soc/decoder/power_pseudo.py @@ -18,7 +18,6 @@ from soc.decoder.power_decoder import create_pdecode from nmigen.back.pysim import Simulator, Delay from nmigen import Module, Signal -from soc.decoder.pseudo.lexer import IndentLexer from soc.decoder.pseudo.parser import GardenSnakeCompiler ####### Test code ####### @@ -65,21 +64,6 @@ print (RA) code = cnttzd #code = bpermd -#lexer = IndentLexer(debug=1) -# Give the lexer some input -#print ("code") -#print (code) -#lexer.input(code) - -# Tokenize -while False: - tok = lexer.token() - if not tok: - break # No more input - print(tok) - -#sys.exit(0) - def tolist(num): l = [] for i in range(64): @@ -93,14 +77,13 @@ def get_reg_hex(reg): return hex(int('0b%s' % report, 2)) -gsc = GardenSnakeCompiler() class GPR(dict): def __init__(self, sd, regfile): dict.__init__(self) self.sd = sd self.regfile = regfile for i in range(32): - self[i] = [0] * 64 + self[i] = [0] * 64 # TODO: needs to be IntClass(value=0, len=64) def set_form(self, form): self.form = form @@ -119,14 +102,18 @@ class GPR(dict): return self.regfile[rnum] -gsc.regfile = {} -for i in range(32): - gsc.regfile[i] = 0 -gsc.gpr = GPR(gsc.parser.sd, gsc.regfile) +def test(): -_compile = gsc.compile + gsc = GardenSnakeCompiler() + + # XXX unused! see GPR instead + gsc.regfile = {} + for i in range(32): + gsc.regfile[i] = 0 + gsc.gpr = GPR(gsc.parser.sd, gsc.regfile) + + _compile = gsc.compile -def test(): tree = _compile(code, mode="single", filename="string") import ast tree = ast.fix_missing_locations(tree) diff --git a/src/soc/decoder/pseudo/lexer.py b/src/soc/decoder/pseudo/lexer.py index fd504b08..82578ac9 100644 --- a/src/soc/decoder/pseudo/lexer.py +++ b/src/soc/decoder/pseudo/lexer.py @@ -385,4 +385,24 @@ class IndentLexer(PowerLexer): except StopIteration: return None +if __name__ == '__main__': + + # quick test/demo + cnttzd = """ + n <- 0 + do while n < 64 + if (RS)[63-n] = 0b1 then + leave + n <- n + 1 + RA <- EXTZ64(n) + print (RA) + """ + + code = cnttzd + + lexer = IndentLexer(debug=1) + # Give the lexer some input + print ("code") + print (code) + lexer.input(code)