я хочу разобрать что-то вроде этого в моем лексере:
( begin expression )
где выражения также заключены в квадратные скобки. не важно, что находится в выражении, я просто хочу иметь все, что между (begin
и совпадающим )
в качестве токена. пример:
(begin
(define x (+ 1 2)))
поэтому текст токена должен быть
(define x (+ 1 2)))
что-то типа
PROGRAM : LPAREN BEGIN .* RPAREN;
(очевидно) не работает, потому что, как только он видит ")", он думает, что правило закончилось, но для этого мне нужна соответствующая скобка.
Как я могу это сделать?