Ho dati simili a YAML e ho bisogno di creare una grammatica usando Pyparsing. Come Python, la portata dei dati di Yaml è definito dalla spaziCome creare una grammatica per i seguenti dati usando Pyparsing
dati:
object : object_name
comment : this object is created first
methods:
method_name:
input:
arg1: arg_type
arg2: arg2_type
output:
methond2_name:
input:
output:
arg1 : arg_type
dopo l'analisi di cui sopra, si deve qualcosa output simile al seguente:
{'comment': 'this object is created first',
'object': 'object_name',
'methods': {'method_name': {'input': {'arg1': 'arg_type', 'arg2': 'arg2_type'},
'output': None}, 'methond2_name': {'input': None, 'output': {'arg1': 'arg_type'}}}}
[EDIT] I dati è simile a YAML ma non esattamente lo stesso. Quindi il parser Python YAML non è in grado di analizzarlo. Ho lasciato alcuni dettagli per rendere più semplici i dati di esempio
Sì, questo è troppo ampia una domanda, senza ulteriori informazioni e il codice. –
lepl ha un esempio che è quasi questo - http://www.acooke.org/lepl/offside.html#example - ma il pyparsing ha una comunità * molto * più grande per il supporto, quindi non suggerirei di cambiare a meno che non ci sia nessun modo per fare da pypars per gestire i rientri. –
Il testo sensibile agli spazi bianchi è un punto debole per il pyparsing. Questo esempio (http://pyparsing.wikispaces.com/file/view/indentedGrammarExample.py) sul wiki di pyparsing mostra un modo, ma è comunque un andare goffo. – PaulMcG