Pomagałem w rozszerzeniu dwudziestoletniego zastrzeżonego języka w mojej firmie. Jest to duży, pełen Turinga język. Przetłumaczenie go na inny system gramatyczny (np. Antlr) nie jest opcją (nie decyduję o tym).Czy istnieją debuggery gramatyki Yacc?
W większości przypadków rozszerzenie gramatyki przebiegło sprawnie. Ale raz na jakiś czas będę miał redukuj-zredukować lub shift-zredukować że
- jest trudne do wyeliminowania
- czasami po prostu nie ma sensu (moim słabym mózgu)
Po wielu bolesnych wpatrzeniach w pliki y.output i eksperymentalnej refaktoryzacji gramatyki, zwykle dotarłem tam, gdzie chciałem iść. Czasami musiałem robić niezadowalające kompromisy.
Czy są więc jakieś narzędzia, które mogą zasysać gramatykę yacc, co usprawnia przeglądanie, eksperymentowanie i pozwala na debugowanie zmian?
Jeśli dodaję produkcję, chciałbym zobaczyć coś więcej niż "produkcję atomową, która jest wszędzie używana" (przemyślany identyfikator) "konflikty z regułą foo" (tak, jest więcej informacji, s/r, r/r, ale myślę, że dostaję mój dryf). Byłoby miło mieć jakąś wskazówkę na temat wzajemnej gry, nie tylko zakładając czapkę myślową i próbując wyobrazić sobie stos symboli i automat stanów.
Aktualizacja: Chyba powinienem wyjaśnić. Używamy Berkeley Yacc. Testowałem używając najnowszej wersji Bison. Dla danych wyjściowych skompilowałem gramatykę z --report = itemset.
Moim celem tego postu jest poszukiwanie zewnętrznych narzędzi, które zwiększenia obiekty które statek z yacc gramatyki debugowania. Dzisiaj jest bolesny z domyślnym zestawem. Pomóż mi znaleźć lepsze interaktywne narzędzia, takie jak te, których możesz używać z Antlr.
Nie jestem pewien, co masz na myśli. W przypadku obu naszych yaccs -d oznacza "wypisz plik nagłówkowy dla makr tokenów". Właśnie dodałem więcej informacji o korzystaniu z przełącznika --report = itemset. Czy to jest coś, co masz na myśli? Generuje plik, y.output pełen wszystkich informacji o zmianie stanu. Używam go, ale liczyłem na potężniejsze, interaktywne narzędzie. –
Jerry ma rację, konflikty S/R niekoniecznie są błędami. Prawie każda gramatyka ma ich kilka. – DigitalRoss