2009-09-10 11 views

Odpowiedz

0

Dlaczego nie dać antlr odchodzenie - wygląda na to, że ma gramatyki wykonany dla ECMAScript:

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

antlr widocznie dostał C# czas pracy, a także, choć mam tylko używali go z Java.

2

Myślę, że musiałbyś zbudować to sam, ale po drodze są wskazówki.

Pełna gramatyka JavaScript powinna być dostępna gdzieś; szybkie wyszukiwanie pokazało mi JavaScript LL(1) Grammar. (Istnieje również schemat BNF dla JavaScript pod RPA Toolkit: Parse JavaScript.)

Ponieważ pytasz tylko o parser, zakładam, że masz już lexer.

Włączenie tej gramatyki do pliku Yacc naprawdę nie wygląda tak okropnie. Na przykład istnieje C grammar for Yacc.

+1

Czy rzeczywiście * wykonałeś * to? Budowanie * pracy * parsera jest trudniejsze, niż szuka prawdziwego języka. Wydaje się, że ludzie myślą, że łatwo jest policzkować gramatykę i odejść. Powodzenia z tym. (Tak, zrobiłem to, dla kilku pełnych języków). –

0

Czy naprawdę potrzebujesz go zaimplementować od podstaw? Niektóre biblioteki, takie jak Jint, wykonają tę samą pracę, szybciej i bezpieczniej. Jint to interpreter javascript w .NET - uzyskałem moją własną zgodę.

0

Piszę moje parsery z COCO/R dla C# http://ssw.jku.at/coco/, ponieważ po prostu działa bez potrzeby konfiguracji. Ale nie jest kompatybilny z wersją źródłową z Yacc, Flex, Bison itp. Jednak jego składnia jest prostsza. Ponadto COCO/R obsługuje kilka języków .NET innych niż C#. ANTLR działa dla C# ma więcej funkcji, ale potrzebuje więcej czasu na czytanie dokumentacji i ustawianie narzędzi.