Sono interessato a sapere se esiste uno strumento che ti consente di inserire esempi di documenti validi e ti consente quindi di generalizzare da quello a un parser riutilizzabile.
Posso immaginarlo, ma ogni volta che comincio a imparare i parser arriva alla granularità di qualcosa come lex e yacc e sembra più complicato di quanto dovrebbe essere il mio istinto.
Quindi mi chiedo se
- a) è fondamentalmente così complicato e ho bisogno di vederlo o
- b) c'è un modo per creare DSL ad-hoc per attività relativamente semplici che potrei imparare su
Aggiornamento: un semplice esempio di un dsl "ad hoc" che mi piacerebbe fare rapidamente.
Invece dell'XML
<foo>
<item>bar</item>
<item>bat</item>
</foo>
Potrei volere qualcosa come:
foo
bar
bat
-
Le linee
- contengono elementi di dati
- il rientro produce relazioni padre-figlio
Il mio strumento immaginario mi consente di trasmettere le informazioni di cui sopra.
Quindi, nel mio strumento immaginario, potrei evidenziare "foo" in alto e fare clic con il tasto destro, a quel punto mi richiederebbe di limitare i valori a una lista di scelta ....
Quindi potrei estendere il primo a:
foo
bar(5)
bat
- in una riga, '(' e ')' circondano un elemento secondario
Quanto sopra potrebbe essere qualificato con un valore booleano che specifica la ricorsione oppure no, se impostato su true allora bar (lala (4)) potrebbe funzionare ...
Questo è il tipo di pensiero che generalmente ho che mi ha portato a porre la domanda. È possibile che ora l'ho qualificato, la risposta cambia, in tal caso mi scuso in anticipo.