Я пытаюсь сделать парсер в ракетке, используя хвастовство.У меня была намного большая идея, но я не могу заставить мой парсер работать.В настоящее время мой файл "parser.rkt" имеет следующее простое правило:
#lang brag
entry-date : @digit{1,2} "-" @digit{1,2} "-" @digit{4}
digit : "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "0"
Когда я тестирую свой парсер, я получаю корректный вывод:
(parse-to-datum "01-02-1920")
>'(entry-date "0" "1" "-" "0" "2" "-" "1" "9" "2" "0")
Однако, когда я пытаюсьзапустив его, я получаю эту ошибку:
#lang reader "accounting_reader.rkt"
01-02-1920
> *entry-date: unbound identifier in: entry-date
Это мой токенизатор в моем файле считывателя:
(require brag/support)
(define (make-tokenizer port)
(define (next-token)
(define ac-lexer
(lexer
[(char-set "-1234567890") lexeme]
[any-char (next-token)]))
(ac-lexer port))
next-token)
Есть идеи, почему он не хочет работать?