move demo code for lexer
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 1 Apr 2020 15:30:31 +0000 (16:30 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 1 Apr 2020 15:30:31 +0000 (16:30 +0100)
src/soc/decoder/power_pseudo.py
src/soc/decoder/pseudo/lexer.py

index e1cb44a11e294b3cac4afadbd7e4dd18edaabfa1..36a7022e8b9290c757b2540d431e382d7feb82f1 100644 (file)
@@ -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)
index fd504b087b84d4e2d8887e21b332132077e83b20..82578ac93132d1e0a02f1c9ddd9eb7d05747e6f9 100644 (file)
@@ -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)