summaryrefslogtreecommitdiff
path: root/src/mem/slicc/parser.py
diff options
context:
space:
mode:
authorNathan Binkert <nate@binkert.org>2010-04-02 11:20:32 -0700
committerNathan Binkert <nate@binkert.org>2010-04-02 11:20:32 -0700
commitf1c3f3044b73d890ffdfdd113b3b37ae2809d21b (patch)
tree959d71e897a8d01868c8dea8a8b225cbd1b5ce2c /src/mem/slicc/parser.py
parentbe10204729c107b41d5d7487323c732e9fa09df5 (diff)
downloadgem5-f1c3f3044b73d890ffdfdd113b3b37ae2809d21b.tar.xz
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.
Diffstat (limited to 'src/mem/slicc/parser.py')
-rw-r--r--src/mem/slicc/parser.py14
1 files changed, 11 insertions, 3 deletions
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"