2009-08-10 25 views
20

C'è un buon generatore di parser (si pensi a lex/yacc o antlr) per .NET? Qualcuno che ha una licenza che non spaventi gli avvocati? Lotto di LGPL ma sto lavorando su componenti embedded e alcune organizzazioni non sono a mio agio con me che assumono una dipendenza LGPL.Buon generatore di parser (si pensi a lex/yacc o antlr) per .NET? Costruisci solo il tempo?

Ho sentito che Oslo può fornire questa funzionalità ma non sono sicuro se si tratta di una dipendenza del tempo di costruzione o anche di una dipendenza di runtime. Qualcuno può chiarire cosa fornirà Oslo?

UPDATE
Quello che mi piacerebbe davvero è un generatore di parser che è un tempo di costruzione solo dipendenza. Sembra che ANTLR abbia un componente runtime.

+0

Opensorce generatori a C# lingua: YaccConstructor, GLL, C#, Apache 2.0, http://yaccconstructor.github.io/YaccConstructor/gll.html NLT, GLR, C#, MIT, http: // sourceforge. net/progetti/naivelangtools/ GLRSharp, GLR, C# v4, MIT, https://github.com/jcoder58/GLRSharp GPPG, LALR (1), C#, BSD sablecc, LALR (1),, LGPL ANTLR , Java, BSD Lapg, LALR (1), Java, GPL jay, LALR (1), Java, BSD Hime, LR (1), LALR (1), LGPL LLLPG, LL (k), LGPL, C# Grammatica, LL (k), Java csharpcc, C#, LL (k), BSD Coco/R, GPL Irony Eto.Parser – user1709408

+0

http://softwarerecs.stackexchange.com/questions/24630/which-parser-generator-to-use-on-mono – user1709408

risposta

8

Hmmm già citato Antlr quindi non sono sicuro perché non si considera che ...

Antlr genera C# (http://www.antlr.org/wiki/display/ANTLR3/Antlr%2B3%2BCSharp%2BTarget) e ha una licenza BSD (http://www.antlr.org/license.html) che sembra avere ben poche restrizioni.


Ironia (http://irony.codeplex.com/) ha un certo numero di download e di una (facile sugli occhi) licenza MIT. Sembra avere il codice sorgente completo, quindi potrebbe essere possibile "inserirlo" direttamente nella tua app.

+0

Sto ricevendo la recensione dal nostro legale squadra ora ... in questo momento sto considerando ANTLR e jayc (usato nel progetto mono). –

3

ANTLR ha un componente runtime, ma è sempre possibile prendere le poche classi che utilizza e includerle nel progetto, a quel punto non è più necessario fare riferimento all'assembly runtime. È concesso in licenza secondo la licenza BSD - clausola 3 per il target C# 3 e 4 clausola per il target C# 2.

9

Ho appena scoperto che F # viene fornito con un'implementazione di yacc e lex. Sembra che sarò in grado di sfruttare questo generatore di parser per le mie esigenze .NET.

campione

F# Samples

il parsing mostra come utilizzare il fsyacc e gli strumenti per costruire fslex parser e lexer per l'uso con F #. (Modalità: Compilato, Gira su: qualsiasi CLI, tra Mono)

post del blog correlati:

4

Personalmente sono piuttosto un fan del GOLD Parser Generator. Non genera direttamente alcun codice, ti dà solo le tabelle di stato DFA e LALR e ti consente di scrivere il tuo motore parser in base alle tue esigenze.

Questo modo di strutturare le cose non è adatto a tutti o ad ogni situazione (si perde un po 'di flessibilità dal momento che la lingua deve rispettare le restrizioni LALR), quindi non reclamarlo come "la strada giusta", ma mi è piaciuto separazione dell'algoritmo di analisi dalle regole di analisi (e significa che tutti i requisiti di runtime sono interamente e facilmente sotto il vostro controllo).

Naturalmente non si deve scrivere il proprio motore di – ci sono tre engines written in C# elencati sul sito per esempio. Non so quali licenze utilizzino quei motori, ma scrivere il tuo motore è francamente banale se trovi le licenze sgradevoli.GOLD include documentazione che fornisce una descrizione completa di un algoritmo di lavoro, che è (come ci si aspetterebbe se si comprenda l'analisi LALR), un semplice sistema a stati. Il programma GOLD stesso è gratuito, naturalmente.

GOLD include anche un IDE per scrivere la grammatica della lingua, che può essere molto utile.

+0

Mister John, usando GOlD Parser, posso ottenere facilmente un parser Oracle Oracle in C# ?? Thx – Kiquenet