2009-09-10 8 views

Antwort

0

Warum geben antlr nicht ein zu gehen - es sieht aus wie eine Grammatik für ecmascript gemacht hat:

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

Antlr anscheinend bekam eine C# Laufzeit als auch, obwohl ich es nur verwendet, um von Java.

2

Ich denke, Sie müssten es selbst bauen, aber es gibt Hinweise auf dem Weg.

Die vollständige JavaScript-Grammatik sollte irgendwo verfügbar sein; Eine schnelle Suche zeigte mir eine JavaScript LL(1) Grammar. (Es gibt auch ein BNF-Schema für JavaScript unter RPA Toolkit: Parse JavaScript.)

Da Sie nur nach einem Parser fragen, gehe ich davon aus, dass Sie bereits einen Lexer haben.

Das Drehen dieser Grammatik in eine Yacc-Datei sieht wirklich nicht so schrecklich aus. Als Beispiel gibt es eine C grammar for Yacc.

+1

Hast du das wirklich * getan *? Einen * Working * Parser zu erstellen ist schwieriger als eine echte Sprache. Die Leute scheinen zu denken, dass es einfach ist, eine Grammatik zusammen zu schlagen und los geht's. Viel Glück damit. (Ja, ich habe das für mehrere volle Sprachen getan). –

0

Müssen Sie es wirklich von Grund auf neu implementieren? Einige Bibliotheken wie Jint würden die gleiche Aufgabe erledigen, schneller und sicherer. Jint ist ein Javascript-Interpreter in .NET - hat meine eigene Zustimmung bekommen.

0

Ich schreibe meine Parser mit COCO/R für C# http://ssw.jku.at/coco/, weil es einfach funktioniert ohne Konfiguration benötigen. Aber es ist nicht Source-Level-kompatibel mit Yacc, Flex, Bison, etc. Allerdings ist seine Syntax einfacher. Außerdem unterstützt COCO/R einige .NET-Sprachen, die sich von C# unterscheiden. ANTLR funktioniert für C# hat mehr Funktionen, benötigt aber mehr Zeit beim Lesen der Dokumentation und bei der Werkzeugeinstellung.