summaryrefslogtreecommitdiff
path: root/src/mem/slicc/parser.py
diff options
context:
space:
mode:
authorNathan Binkert <nate@binkert.org>2010-03-10 16:22:26 -0800
committerNathan Binkert <nate@binkert.org>2010-03-10 16:22:26 -0800
commitcf86532857ba1e199db6ff16541e7242c6225ff0 (patch)
treee107e443364bd326d791d2c19e126986cf4aa022 /src/mem/slicc/parser.py
parent1068ca85d0a29bfa71dc6a21a8d6c8888dce4bc3 (diff)
downloadgem5-cf86532857ba1e199db6ff16541e7242c6225ff0.tar.xz
slicc: have a central mechanism for creating a code_formatter.
This makes it easier to add global variables like protocol
Diffstat (limited to 'src/mem/slicc/parser.py')
-rw-r--r--src/mem/slicc/parser.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/mem/slicc/parser.py b/src/mem/slicc/parser.py
index 99b8fa5f4..ae8a9342f 100644
--- a/src/mem/slicc/parser.py
+++ b/src/mem/slicc/parser.py
@@ -30,6 +30,7 @@ import os.path
import re
import sys
+from m5.util import code_formatter
from m5.util.grammar import Grammar, TokenError, ParseError
import slicc.ast as ast
@@ -50,11 +51,17 @@ def read_slicc(sources):
yield sm_file
class SLICC(Grammar):
- def __init__(self, **kwargs):
+ def __init__(self, protocol, **kwargs):
super(SLICC, self).__init__(**kwargs)
self.decl_list_vec = []
self.current_file = None
- self.symtab = SymbolTable()
+ self.protocol = protocol
+ self.symtab = SymbolTable(self)
+
+ def codeFormatter(self, *args, **kwargs):
+ code = code_formatter(*args, **kwargs)
+ code['protocol'] = self.protocol
+ return code
def parse(self, filename):
self.current_file = filename