2009-09-10 9 views

risposta

0

perché non dare ANTLR un andare - sembra che esso ha una grammatica fatta per ECMAScript:

http://www.antlr.org/grammar/list

Antlr a quanto pare ha un C# runtime pure, anche se ho usato solo da Java.

2

Penso che dovresti costruirlo da solo, ma ci sono indizi lungo la strada.

La grammatica JavaScript completa dovrebbe essere disponibile da qualche parte; una rapida ricerca mi ha mostrato un JavaScript LL(1) Grammar. (C'è anche uno schema BNF per JavaScript a RPA Toolkit: Parse JavaScript.)

Dato che stai chiedendo solo un parser, assumerò che tu abbia già un lexer.

Girare la grammatica in un file Yacc non sembra davvero così terribile. Ad esempio, c'è un C grammar for Yacc.

+1

Avete effettivamente * fatto * questo? Costruire un parser * working * è più difficile di quanto non appaia per un vero linguaggio. La gente sembra pensare che sia facile dare uno schiaffo alla grammatica e partire. Buona fortuna. (Sì, ho fatto questo, per diverse lingue complete). –

0

Hai davvero bisogno di implementarlo da zero? Alcune librerie come Jint farebbero lo stesso lavoro, più veloce e più sicuro. Jint è un interprete javascript in .NET - ha ottenuto la mia approvazione.

0

Scrivo i miei parser con COCO/R per C# http://ssw.jku.at/coco/ perché funziona senza necessità di configurazione. Ma, non è compatibile a livello sorgente con Yacc, Flex, Bison, ecc. Tuttavia, la sua sintassi è più semplice. Inoltre COCO/R supporta alcuni linguaggi .NET diversi da C#. ANTLR funziona per C# ha più funzioni ma richiede più tempo per la lettura della documentazione e l'impostazione degli strumenti.

Problemi correlati