Google-Kythe-Annotating nodes for display 注释要显示的节点


Kythe 图中的语义节点可以代表具有复杂结构的对象,例如具有许多类型约束的多态函数。
在人类查看者的UI中表示这些节点通常很复杂。
仅显示源文本可能会忽略重要的上下文(如编译器推断的类型)。
另一方面,完全展开节点的内部表示可能会导致非常长且难以读取的字符串。
语义信息也可能丢失,就像程序员在C语言家族中使用透明的“ typedef ”一样。

模式提供了一个 code fact,当附加到KYTHE图中的任意语义节点时,指示客户端如何将该节点呈现给用户。
fact 的值是在 Common.Proto 中定义的序列化“ MarkedSource ”协议缓冲区消息。
与Kythe 图中的大多数事实不同,MarkedSource 是结构化消息,而不是普通字符串,因为客户端对其显示的详细程度和数量有不同的要求。
通过包含或排除此消息的各个部分,客户端可以根据其要求精确地格式化节点的表示。
该消息还提供了将子跨度链接到其他节点以及通过引用包含其他 nodes’code 的功能。
Kythe 索引器负责发出 MarkedSource 消息。

Experimenting with MarkedSource 尝试使用MarkedSource

Kythe 存储库包含一个用于呈现文档的示例实用程序,包括任何包含的 MarkedSource 消息。您可以使用以下内容构建它:

bazel build //kythe/cxx/doc

To run it in a mode that will accept and render a ASCII MarkedSource message, use:
要在接受并呈现ASCII MarkedSource 消息的模式下运行它,请使用:

./bazel-bin/kythe/cxx/doc/doc --common_signatures

空消息将生成以下输出(显示在双引号之间,并对HTML特殊字符进行转义):
Output

      RenderSimpleIdentifier: ""
RenderSimpleQualifiedName-ID: ""
RenderSimpleQualifiedName+ID: ""

Generating MarkedSource

MarkedSource消息描述了源代码的简化解析树。
MarkedSource消息表示的解析树不需要精确地对应于语言的表面语法,而是旨在尽可能相似,以便熟悉该语言的读者将理解所表示的结构。
每个消息都是解析树中的一个节点。
消息具有应用于自身及其子节点的种类(distinct from the

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值