Problem z parserem plików tekstowych

Problem z parserem plików tekstowych
overcq
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 402
0

Napisałem prosty parser składniowy do plików tekstowych w kodowaniu UTF-8 (text_syntax.cx).
Jest on zastosowany do parsowania pliku konfiguracyjnego serwera HTTP OUX/C+ web-srv.
Jednak parser ma pewną niedoskonałość, zaznaczam, że jest on dopiero w początkowej wersji.

Składnia pliku konfiguracyjnego jest tutaj: conf.syntax.
I w tej składni są wyrażenia takie jak:

Kopiuj
path entity
    @ text
path
    "/", path entity
path quoted
    "\"", path, "\""

W powyższym przykładzie nigdy nie zajdzie path quoted, ponieważ parser przejdzie do path i odczyta tekst razem ze znakiem cudzysłowu.
Jaką konstrukcję dodać, może zamiast @ text, by to rozwiązać? Jak to jest rozwiązane w innych parserach? Szukałem na przykładzie bison, ale nie znalazłem.
Zaznaczam, że to nie są teoretyczne rozważania, ponieważ parser już funkcjonuje praktycznie w podanym projekcie (oczywiście bez działającego path quoted).

overcq
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 402
0

Oprócz yacc/lex jest jeszcze ANTLR. Jednak oba dokonują najpierw podziału na leksemy, a w moim parserze tego nie robię i stąd te problemy.
W celu rozwiązania tego problemu dodałem wyrażenia regularne i obsługę poprawności danych jako semantykę, a nie w czasie parsowania.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.