Как найти позицию связанного s-выражения из исходной строки, из которой он был проанализирован?

Я читал через ссылка на файл sexp.h в попытке генерировать полезные ошибки при синтаксическом анализе подобной lisp последовательности происходит сбой, потому что оператор или операнд не были отформатированы, как ожидалось.

Я в настоящее время использую cparse_sexp функция для разбора выражения в стиле lisp в серию s-выражений elt объекты:

pc = cparse_sexp(
(char*)expression.c_str(),
expression.length,
pc);

где pc указатель типа pcont_t* а также expression является std::string, Я тогда использую это pc указатель, чтобы посмотреть на elt объекты, использующие pc->last_sexp,

Однако, если я столкнусь со значением, с которым я не знаю, как справиться, я бы хотел написать что-то вроде этого:

Error was encountered at byte `123` in the vicinity of:
(Operator Operand1 Operand2)
^

Где (Operator Operand1 Operand2) линия взята из оригинала expression строка.

Для этого мне нужно знать место, откуда был взят соответствующий токен. Я знаю, что вижу sbuffer значение в пределах pcont_t типа, но это просто дает мне указатель на исходную строку. lastPos должен дать мне текущую позицию, но он просто возвращает конец строки. Как я могу разобрать строку как Я использую это, чтобы я мог видеть, где я нахожусь?

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]