首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QoreProgramLocation类识别Qore源代码中的特定位置

如何使用QoreProgramLocation类识别Qore源代码中的特定位置
EN

Stack Overflow用户
提问于 2017-05-06 13:08:42
回答 1查看 25关注 0票数 1

我需要与文件中特定位置相关的get语句(i.e.instance of AbstractStatement类)(例如foo.q:150),因此我处理父类(struct) QoreProgramLocation,它定义了两个成员filesource (后者通常为null)。还不清楚什么是区别。我怀疑当包含文件时可能会使用它来指向包含中的原始文件和真实位置。

还有offset成员。它是否适用于Qore嵌入到另一个程序(e.g.Qorus)中时使用的部分?

代码语言:javascript
复制
struct QoreProgramLocation : public QoreProgramLineLocation {
public:
   const char* file;
   const char* source;
   int offset;
...
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-07 05:58:06

这是个很好的问题。

QoreProgramLocation中,成员如下:

  • file:指解析代码时给出的标签
  • source:引用源代码的实际文件名或路径(如果标签不提供此信息)
  • offsetsource中代码的偏移量

因此,只有在同一个文件中定义了多个代码对象时,才会给出sourceoffset

如果一个文件中有一个代码对象,那么file是set,sourcenullptroffset是0,行号直接从start_lineend_line获取。

如果一个文件中有多个代码对象,那么所有成员都被赋值,在这种情况下,start_lineend_line引用代码对象中的行号,而文件中的行号是通过添加offset来计算的,给出了source中的行号偏移。

例如,在以下Qore方法的文档中:

描述本例;请注意,label将在QoreProgramLocation中设置为file

因为当没有offset时,source总是0,所以您可以通过使用:start_line + offsetend_line + offset来导出实际行号。

我希望这是清楚的!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43820849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档