Example #1
0
    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))