From a3177645773b8eb4b835050c395554d3e2b4664a Mon Sep 17 00:00:00 2001 From: Tony Gutierrez Date: Mon, 20 Jul 2015 09:15:18 -0500 Subject: ruby: slicc: have a static MachineType This patch is imported from reviewboard patch 2551 by Nilay. This patch moves from a dynamically defined MachineType to a statically defined one. The need for this patch was felt since a dynamically defined type prevents us from having types for which no machine definition may exist. The following changes have been made: i. each machine definition now uses a type from the MachineType enumeration instead of any random identifier. This required changing the grammar and the *.sm files. ii. MachineType enumeration defined statically in RubySlicc_Exports.sm. * * * normal protocol fixes for nilay's parser machine type fix --- src/mem/slicc/ast/MachineAST.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'src/mem/slicc/ast/MachineAST.py') diff --git a/src/mem/slicc/ast/MachineAST.py b/src/mem/slicc/ast/MachineAST.py index 4487b094e..c67d0e695 100644 --- a/src/mem/slicc/ast/MachineAST.py +++ b/src/mem/slicc/ast/MachineAST.py @@ -29,10 +29,10 @@ from slicc.ast.DeclAST import DeclAST from slicc.symbols import StateMachine, Type class MachineAST(DeclAST): - def __init__(self, slicc, ident, pairs_ast, config_parameters, decls): + def __init__(self, slicc, mtype, pairs_ast, config_parameters, decls): super(MachineAST, self).__init__(slicc, pairs_ast) - self.ident = ident + self.ident = mtype.value self.pairs_ast = pairs_ast self.config_parameters = config_parameters self.decls = decls @@ -72,11 +72,5 @@ class MachineAST(DeclAST): def findMachines(self): mtype = self.ident machine_type = self.symtab.find("MachineType", Type) - pairs = self.pairs_ast.pairs - - pairs["Primary"] = True - if not machine_type.addEnum(mtype, pairs): + if not machine_type.checkEnum(mtype): self.error("Duplicate machine name: %s:%s" % (machine_type, mtype)) - - # Generate code for all the internal decls - self.decls.findMachines() -- cgit v1.2.3