Sarebbe interessante vedere i requisiti per capire se prevedano effettivamente che l'utente possa passare qualunque oggetto python (magari da loro definito)...
comunque: 2014-03-18 9:14 GMT+01:00 Balan Victor <balan.vict...@gmail.com>: >> >> Ehm.. con la grammatica del linguaggio che vuoi parsare. >> >> Ma lascia che te lo dica... secondo me rischi di ficcarti in un mezzo >> ginepraio. Il fatto che tu abbia bisogno di questo secondo campo cosi' >> flessibile non ottimo indice che le cose saranno facili. >> >> Per il resto puoi definirti un linguaggio che fa tutto quello che ti pare, >> ma non sarebbe meglio limitarsi ad un set di check prefabbricati? > > > ho provato a fare qualcosa.... http://pastebin.com/6038GUEP# > però come parser immagino non intendevi proprio questo > Come parser è parecchio semplicistico, ma se davvero hai sempre solo <op> <space> <value> può bastare ovviamente, perdi la possibilità di usare l'intera algebra booleana se ti limiti ad una sola operazione per espressione piccoli appunti: - usa split() senza argomenti, se è possibile che <op> e <value> siano separati da più caratteri di whitespace - `True if re.match(pattern, _string) else False` non è necessario, basta `bool(re.match(pattern, _string))`... potresti scrivere str: { 'match': lambda *a: bool(re.match(*a)) } - type("a") e type(True) non restituiscono string e boolean, ma str e bool per il resto, se questa non è un'api e l'utente ci deve interagire tramite un file di configurazione/una gui... come ottieni il value da confrontare? mi spiego: dovresti parsare anche il valore fornito eval(string.split()[0]) ovviamente non è sufficiente per impedire che vengano fornite delle espressioni, invece che dei semplici valori, visto che questo filtrerebbe anche stringhe contenenti spazi dai un'occhiata al modulo ast: http://docs.python.org/3.4/library/ast.html -- xmpp: berda...@gmail.com bitmessage: BM-2cTYXfGiSTsnx3righ6aHcJSWe4MV17jDP gpg fingerprint: 3F8D53518012716C4EEF7DF67B498306B3BF75A0 (used just for signing commits) _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python