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

Reply via email to