0

我一直在阅读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字符串的位置。

为此,我需要知道获取相应令牌的位置。我知道我可以看到类型中的sbufferpcont_t,但这只是给了我一个指向原始字符串的指针。lastPos应该给我当前位置,但它只返回字符串的结尾。我如何在使用它时解析字符串,以便我可以看到我在哪里?

4

0 回答 0