Пример #1
0
 def ele(self, name): # name of terminals are lower-cased, non-terminals are upper-cased
     last_alt = self.alts[-1]
     if name.islower():
         last_alt.append(terminal(name))
     else:
         if name not in rule.name_rule_mapping:
             raise Exception("Undefined non-terminal: " + name)
         last_alt.append(rule.name_rule_mapping[name])
     return self
Пример #2
0
 def ele(
     self, name
 ):  # name of terminals are lower-cased, non-terminals are upper-cased
     last_alt = self.alts[-1]
     if name.islower():
         last_alt.append(terminal(name))
     else:
         if name not in rule.name_rule_mapping:
             raise Exception("Undefined non-terminal: " + name)
         last_alt.append(rule.name_rule_mapping[name])
     return self
Пример #3
0
 def __kleene(self, constructor, *elements):
     eles = []
     for e in elements:
         if e.islower():
             eles.append(terminal(e))
         else:
             if e not in self.name_rule_mapping:
                 raise Exception("Undefined non-terminal: " + e)
             eles.append(rule.name_rule_mapping[e])
     ks = constructor(eles)
     last_alt = self.alts[-1]
     last_alt.append(ks)
     return self
Пример #4
0
 def __kleene(self, constructor, *elements):
     eles = []
     for e in elements:
         if e.islower():
             eles.append(terminal(e))
         else:
             if e not in self.name_rule_mapping:
                 raise Exception("Undefined non-terminal: " + e)
             eles.append(rule.name_rule_mapping[e])
     ks = constructor(eles)
     last_alt = self.alts[-1]
     last_alt.append(ks)
     return self