@@ -53,17 +53,19 @@ for i, sToken in enumerate(lToken): if sToken.startswith("{") and sToken.endswith("}") and sToken in dDEF: lToken[i] = dDEF[sToken] if ( (sToken.startswith("[") and sToken.endswith("]")) or (sToken.startswith("([") and sToken.endswith("])")) ): bSelectedGroup = sToken.startswith("(") and sToken.endswith(")") + if bSelectedGroup: + sToken = sToken[1:-1] # multiple token if not lTokenRules: - lTokenRules = [ sToken[1:-1].split("|") ] + lTokenRules = [ [s] for s in sToken[1:-1].split("|") ] else: lNewTemp = [] for aRule in lTokenRules: - lElem = sToken[1:-1].split("|") if not bSelectedGroup else sToken[2:-2].split("|") + lElem = sToken[1:-1].split("|") sElem1 = lElem.pop(0) if bSelectedGroup: sElem1 = "(" + sElem1 + ")" for sElem in lElem: if bSelectedGroup: @@ -79,11 +81,10 @@ lTokenRules = [[sToken]] else: for aRule in lTokenRules: aRule.append(sToken) for aRule in lTokenRules: - print("Rule\n", aRule) yield aRule def createRule (iLine, sRuleName, sTokenLine, sActions, nPriority): # print(iLine, "//", sRuleName, "//", sTokenLine, "//", sActions, "//", nPriority)