From f1c3f3044b73d890ffdfdd113b3b37ae2809d21b Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Fri, 2 Apr 2010 11:20:32 -0700 Subject: ruby: get "using namespace" out of headers In addition to obvious changes, this required a slight change to the slicc grammar to allow types with :: in them. Otherwise slicc barfs on std::string which we need for the headers that slicc generates. --- src/mem/slicc/parser.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/mem/slicc/parser.py') diff --git a/src/mem/slicc/parser.py b/src/mem/slicc/parser.py index ae8a9342f..1505e1d0c 100644 --- a/src/mem/slicc/parser.py +++ b/src/mem/slicc/parser.py @@ -394,8 +394,16 @@ class SLICC(Grammar): "types : empty" p[0] = [] - def p_type(self, p): - "type : ident" + def p_typestr__multi(self, p): + "typestr : typestr DOUBLE_COLON ident" + p[0] = '%s::%s' % (p[1], p[3]) + + def p_typestr__single(self, p): + "typestr : ident" + p[0] = p[1] + + def p_type__one(self, p): + "type : typestr" p[0] = ast.TypeAST(self, p[1]) def p_void(self, p): @@ -670,7 +678,7 @@ class SLICC(Grammar): def p_literal__string(self, p): "literal : STRING" - p[0] = ast.LiteralExprAST(self, p[1], "string") + p[0] = ast.LiteralExprAST(self, p[1], "std::string") def p_literal__number(self, p): "literal : NUMBER" -- cgit v1.2.3