我一直在阅读sexp.h 文件参考,试图在解析类似 lisp 的序列失败时生成有用的错误,因为运算符或操作数未按预期格式化。
我目前正在使用该cparse_sexp
函数将 lisp 样式的表达式解析为一系列 s-expressionselt
对象:
pc = cparse_sexp(
(char*)expression.c_str(),
expression.length,
pc);
wherepc
是一个类型的指针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
应该给我当前位置,但它只返回字符串的结尾。我如何在使用它时解析字符串,以便我可以看到我在哪里?