Bonjour,
J'ai un cas ou a | b n'est pas identique à b | a.
Je n'ai pas souvenir qu'un ordre avait un impact sur le résultat, comme si le parser explorait l'arbre a et s'arrêtait sur une erreur sans tenter d'explorer l'arbre b (c'est le sens du |, non ?).
Voici mon code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| self.selectStmt = Forward()
real_value = Combine(Word(nums) + "." + Word(nums))
int_value = Word(nums)
numeric_value = real_value | int_value
non_enum_value = Word(alphanums+'%')
column_value = numeric_value | non_enum_value
self.selectStmt << column_value
self.test("230.2")
def test(self, str ):
print str,"->"
try:
tokens = self.selectStmt.parseString( str ,True)
print "tokens = ",tokens
except ParseException, err:
print " "*err.loc + "^\n" + err.msg
print err
print |
le résultat est :
1 2
| 230.2 ->
tokens = ['230.2'] |
Si je change l'expression "column_value" en
column_value = non_enum_value | numeric_value
le résultat devient
1 2 3
| 230.2 ->
^
Expected end of text |
Est ce normal ?
Merci
Partager