changeset f226c098c393 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=f226c098c393
description:
slicc: have a central mechanism for creating a code_formatter.
This makes it easier to add global variables like protocol
diffstat:
20 files changed, 59 insertions(+), 73 deletions(-)
src/mem/protocol/SConscript | 5 +++--
src/mem/slicc/ast/AST.py | 4 +---
src/mem/slicc/ast/ActionDeclAST.py | 4 +---
src/mem/slicc/ast/AssignStatementAST.py | 6 ++----
src/mem/slicc/ast/CheckStopSlotsStatementAST.py | 2 +-
src/mem/slicc/ast/ExprAST.py | 4 +---
src/mem/slicc/ast/ExprStatementAST.py | 2 --
src/mem/slicc/ast/FuncDeclAST.py | 4 +---
src/mem/slicc/ast/IfStatementAST.py | 4 +---
src/mem/slicc/ast/InPortDeclAST.py | 6 ++----
src/mem/slicc/ast/InfixOperatorExprAST.py | 6 ++----
src/mem/slicc/ast/MemberExprAST.py | 2 --
src/mem/slicc/ast/MethodCallExprAST.py | 6 ++----
src/mem/slicc/ast/OutPortDeclAST.py | 4 +---
src/mem/slicc/parser.py | 11 +++++++++--
src/mem/slicc/symbols/Func.py | 4 +---
src/mem/slicc/symbols/StateMachine.py | 22 +++++++++++-----------
src/mem/slicc/symbols/SymbolTable.py | 13 +++++++++----
src/mem/slicc/symbols/Type.py | 10 +++++-----
src/python/m5/util/code_formatter.py | 13 ++++++-------
diffs (truncated from 577 to 300 lines):
diff -r 188393fbc381 -r f226c098c393 src/mem/protocol/SConscript
--- a/src/mem/protocol/SConscript Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/protocol/SConscript Wed Mar 10 16:22:26 2010 -0800
@@ -63,8 +63,9 @@
env.Append(SCANNERS=Scanner(function=slicc_scanner,skeys=['.slicc']))
def slicc_emitter(target, source, env):
+ protocol = source[0].get_contents()
files = [s.srcnode().abspath for s in source[1:]]
- slicc = SLICC(debug=True)
+ slicc = SLICC(protocol, debug=True)
print "SLICC parsing..."
for name in slicc.load(files, verbose=True):
print " %s" % name
@@ -104,7 +105,7 @@
if not isdir(hdir):
os.mkdir(hdir)
- slicc = SLICC(debug=True)
+ slicc = SLICC(protocol, debug=True)
files = [str(s) for s in source[1:]]
slicc.load(files, verbose=False)
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/ast/AST.py
--- a/src/mem/slicc/ast/AST.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/ast/AST.py Wed Mar 10 16:22:26 2010 -0800
@@ -25,8 +25,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util import code_formatter
-
from slicc.util import PairContainer, Location
class AST(PairContainer):
@@ -54,7 +52,7 @@
def embedError(self, message, *args):
if args:
message = message % args
- code = code_formatter()
+ code = self.slicc.codeFormatter()
code('''
cerr << "Runtime Error at ${{self.location}}, Ruby Time: " <<
g_eventQueue_ptr->getTime() << ": "<< $message << ", PID: " << getpid() << endl;
char c; cerr << "press return to continue." << endl; cin.get(c); abort();
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/ast/ActionDeclAST.py
--- a/src/mem/slicc/ast/ActionDeclAST.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/ast/ActionDeclAST.py Wed Mar 10 16:22:26 2010 -0800
@@ -25,8 +25,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util import code_formatter
-
from slicc.ast.DeclAST import DeclAST
from slicc.symbols import Action, Type, Var
@@ -55,7 +53,7 @@
self.symtab.newSymbol(var)
# Do not allows returns in actions
- code = code_formatter()
+ code = self.slicc.codeFormatter()
self.statement_list.generate(code, None)
self.pairs["c_code"] = str(code)
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/ast/AssignStatementAST.py
--- a/src/mem/slicc/ast/AssignStatementAST.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/ast/AssignStatementAST.py Wed Mar 10 16:22:26 2010 -0800
@@ -25,8 +25,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util import code_formatter
-
from slicc.ast.StatementAST import StatementAST
class AssignStatementAST(StatementAST):
@@ -39,8 +37,8 @@
return "[AssignStatementAST: %r := %r]" % (self.lvalue, self.rvalue)
def generate(self, code, return_type):
- lcode = code_formatter()
- rcode = code_formatter()
+ lcode = self.slicc.codeFormatter()
+ rcode = self.slicc.codeFormatter()
ltype = self.lvalue.generate(lcode)
rtype = self.rvalue.generate(rcode)
diff -r 188393fbc381 -r f226c098c393
src/mem/slicc/ast/CheckStopSlotsStatementAST.py
--- a/src/mem/slicc/ast/CheckStopSlotsStatementAST.py Wed Mar 10 15:39:34
2010 -0800
+++ b/src/mem/slicc/ast/CheckStopSlotsStatementAST.py Wed Mar 10 16:22:26
2010 -0800
@@ -45,7 +45,7 @@
var = self.variable.var
assert var not in self.resources
- check_code = code_formatter()
+ check_code = self.slicc.codeFormatter()
if self.condStr == "((*in_msg_ptr)).m_isOnChipSearch":
check_code('''
const Response9Msg* in_msg_ptr =
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/ast/ExprAST.py
--- a/src/mem/slicc/ast/ExprAST.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/ast/ExprAST.py Wed Mar 10 16:22:26 2010 -0800
@@ -24,8 +24,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util import code_formatter
-
from slicc.ast.AST import AST
class ExprAST(AST):
@@ -37,7 +35,7 @@
pass
def inline(self, get_type=False):
- code = code_formatter(fix_newlines=False)
+ code = self.slicc.codeFormatter(fix_newlines=False)
return_type = self.generate(code)
if get_type:
return return_type, code
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/ast/ExprStatementAST.py
--- a/src/mem/slicc/ast/ExprStatementAST.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/ast/ExprStatementAST.py Wed Mar 10 16:22:26 2010 -0800
@@ -25,8 +25,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util import code_formatter
-
from slicc.ast.StatementAST import StatementAST
from slicc.symbols import Type
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/ast/FuncDeclAST.py
--- a/src/mem/slicc/ast/FuncDeclAST.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/ast/FuncDeclAST.py Wed Mar 10 16:22:26 2010 -0800
@@ -25,8 +25,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util.code_formatter import code_formatter
-
from slicc.ast.DeclAST import DeclAST
from slicc.symbols import Func, Type
@@ -70,7 +68,7 @@
types.append(type)
params.append(ident)
- body = code_formatter()
+ body = self.slicc.codeFormatter()
if self.statements is None:
self["external"] = "yes"
else:
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/ast/IfStatementAST.py
--- a/src/mem/slicc/ast/IfStatementAST.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/ast/IfStatementAST.py Wed Mar 10 16:22:26 2010 -0800
@@ -25,8 +25,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util import code_formatter
-
from slicc.ast.StatementAST import StatementAST
from slicc.symbols import Type
@@ -45,7 +43,7 @@
return "[IfStatement: %r%r%r]" % (self.cond, self.then, self.else_)
def generate(self, code, return_type):
- cond_code = code_formatter()
+ cond_code = self.slicc.codeFormatter()
cond_type = self.cond.generate(cond_code)
if cond_type != self.symtab.find("bool", Type):
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/ast/InPortDeclAST.py
--- a/src/mem/slicc/ast/InPortDeclAST.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/ast/InPortDeclAST.py Wed Mar 10 16:22:26 2010 -0800
@@ -25,8 +25,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util import code_formatter
-
from slicc.ast.DeclAST import DeclAST
from slicc.ast.TypeAST import TypeAST
from slicc.symbols import Func, Type, Var
@@ -48,7 +46,7 @@
symtab = self.symtab
void_type = symtab.find("void", Type)
- code = code_formatter()
+ code = self.slicc.codeFormatter()
queue_type = self.var_expr.generate(code)
if not queue_type.isInPort:
self.error("The inport queue's type must have the 'inport' " + \
@@ -115,7 +113,7 @@
symtab.newSymbol(func)
if self.statements is not None:
- rcode = code_formatter()
+ rcode = self.slicc.codeFormatter()
rcode.indent()
rcode.indent()
self.statements.generate(rcode, None)
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/ast/InfixOperatorExprAST.py
--- a/src/mem/slicc/ast/InfixOperatorExprAST.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/ast/InfixOperatorExprAST.py Wed Mar 10 16:22:26 2010 -0800
@@ -25,8 +25,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util import code_formatter
-
from slicc.ast.ExprAST import ExprAST
from slicc.symbols import Type
@@ -42,8 +40,8 @@
return "[InfixExpr: %r %s %r]" % (self.left, self.op, self.right)
def generate(self, code):
- lcode = code_formatter()
- rcode = code_formatter()
+ lcode = self.slicc.codeFormatter()
+ rcode = self.slicc.codeFormatter()
ltype = self.left.generate(lcode)
rtype = self.right.generate(rcode)
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/ast/MemberExprAST.py
--- a/src/mem/slicc/ast/MemberExprAST.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/ast/MemberExprAST.py Wed Mar 10 16:22:26 2010 -0800
@@ -25,8 +25,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util import code_formatter
-
from slicc.ast.ExprAST import ExprAST
class MemberExprAST(ExprAST):
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/ast/MethodCallExprAST.py
--- a/src/mem/slicc/ast/MethodCallExprAST.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/ast/MethodCallExprAST.py Wed Mar 10 16:22:26 2010 -0800
@@ -25,8 +25,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util import code_formatter
-
from slicc.ast.ExprAST import ExprAST
class MethodCallExprAST(ExprAST):
@@ -36,7 +34,7 @@
self.expr_ast_vec = expr_ast_vec
def generate(self, code):
- tmp = code_formatter()
+ tmp = self.slicc.codeFormatter()
paramTypes = []
for expr_ast in self.expr_ast_vec:
return_type = expr_ast.generate(tmp)
@@ -91,7 +89,7 @@
self.obj_expr_ast,
self.expr_ast_vec)
def generate_prefix(self, paramTypes):
- code = code_formatter()
+ code = self.slicc.codeFormatter()
# member method call
obj_type = self.obj_expr_ast.generate(code)
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/ast/OutPortDeclAST.py
--- a/src/mem/slicc/ast/OutPortDeclAST.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/ast/OutPortDeclAST.py Wed Mar 10 16:22:26 2010 -0800
@@ -25,8 +25,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from m5.util import code_formatter
-
from slicc.ast.DeclAST import DeclAST
from slicc.ast.TypeAST import TypeAST
from slicc.symbols import Var
@@ -45,7 +43,7 @@
return "[OutPortDecl: %r]" % self.ident
def generate(self):
- code = code_formatter(newlines=False)
+ code = self.slicc.codeFormatter(newlines=False)
queue_type = self.var_expr.generate(code)
if not queue_type.isOutPort:
diff -r 188393fbc381 -r f226c098c393 src/mem/slicc/parser.py
--- a/src/mem/slicc/parser.py Wed Mar 10 15:39:34 2010 -0800
+++ b/src/mem/slicc/parser.py Wed Mar 10 16:22:26 2010 -0800
@@ -30,6 +30,7 @@
import re
import sys
+from m5.util import code_formatter
from m5.util.grammar import Grammar, TokenError, ParseError
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev