Circa una volta all'anno devo sviluppare o almeno progettare una grammatica e un parser - che appare una costante della mia vita lavorativa.Motivi per usare le alternative lex/yacc?
Ogni volta che sto affrontando questo compito, quindi circa una volta all'anno, io, piuttosto un ragazzo lex/yacc (flex/bison resp.), Considero, o riconsiderare, alternative per lex/yacc semplice, e, dopo un po ' meditando e provando, torno a lex/yacc.
perché ho un CORBA-server presso l'hub della richiesta posso chiamare da da un parser scritto in quasi tutte le lingue, quindi questa volta ho avuto uno sguardo al
- antlr4 (Java) e antlr3 (Java, ma ha RT per altre lingue),
- sablecc (Java),
- Parse :: EBNF, Parse :: Yapp e Marpa (Perl),
- e SimpleParse (Python),
Per me, il tandem antlr4 con antlrworks sembrava il candidato più promettente, ma non sono ancora convinto che il tempo speso per entrarci sarà ammortizzato alla fine.
La grammatica che devo sviluppare è simile a SQL DDL (in termini di struttura, non in termini di soggetto).
Perché una delle alternative renderebbe più semplice il mio compito rispetto all'utilizzo di lex/yacc semplice?
Penso che questa sia una domanda tipo "quale linguaggio di programmazione dovrei usare", che è improbabile che attiri il tipo di risposta oggettiva oggettiva che SO promuove. Così votato a chiudere come non costruttivo. Tuttavia, la domanda per te è: che cosa si tratta di lex/flex/yacc/bison che trovi insoddisfacente? Questo ti darà almeno un indizio su quali caratteristiche cercare. Se è solo "Mi piacerebbe provare qualcosa di nuovo", quindi lanciare una moneta :) – rici
Non è paragonabile. Se tutti i generatori generassero lo stesso parser, sarei d'accordo, ma il risultato è completamente diverso a seconda del generatore di parser. –