docs: def p_path(self, p):
          """path : path UNION path
                  | path SEQ path
                  | path STAR
                  | temp_formula TEST
                  | propositional"""
  
          if len(p)==2:
              p[0] = RegExpPropositional(p[1])
          elif len(p)==3:
              if p[2]==Symbols.PATH_TEST.value:
                  p[0] = RegExpTest(p[1])
              elif p[2] == Symbols.PATH_STAR.value:
                  p[0] = RegExpStar(p[1])
              else:
                  raise ValueError
          elif len(p)==4:
              if p[2]==Symbols.PATH_UNION.value:
                  p[0] = RegExpUnion([p[1], p[3]])
              elif p[2] == Symbols.PATH_SEQUENCE.value:
                  p[0] = RegExpSequence([p[1], p[3]])
              else:
                  raise ValueError
          else:
              raise ValueError