def __init__(self, line): Definition.__init__( self, line, '([a-zA-Z_][a-zA-Z0-9_]*)(|\\[.+\\])/([^ ]+)Ref(?:|/([!m]+))$') self.refname = self.matches.group(1) arrdef = self.matches.group(2) self.objname = self.matches.group(3) try: objdef = PhysicsObject.get(self.objname) except KeyError: raise Definition.NoMatch() if objdef.is_singlet(): raise RuntimeError('Cannot create reference to single object ' + objdef.name) modifier = self.matches.group(4) if modifier is None: mod = '' else: mod = '/' + modifier # create a branch for the index with name {name}_ Branch.__init__( self, '{name}_{arrdef}/S{mod} = -1'.format(name=self.refname, arrdef=arrdef, mod=mod))