首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gtksourceview包含空间的匹配有问题吗?

gtksourceview包含空间的匹配有问题吗?
EN

Stack Overflow用户
提问于 2015-02-17 13:40:30
回答 1查看 130关注 0票数 1

我正在努力改进gtksourceview中Ada的语法突出显示(目前,它非常过时且非常不完整)。我有一个问题,Ada是非常位置的,所以匹配许多结构需要匹配这些位置。我可以很容易地在nano中做到这一点。

因此,让我们考虑一个类型声明,例如:

代码语言:javascript
复制
type Trit is range 0..2;

像"type","is“和"range”这样的关键字被识别出来(最初也是这样)。但是,类型名称被视为关键字(这是一个糟糕的设计决策,因为Ada经常定义新类型,即使是整数这样的简单类型)。这样做得到的是,Standard中的类型被着色,而所有其他类型看起来像普通文本,这违背了突出显示的目的。在某些语言中,这可能是一个值得注意的问题。但是,大多数类型名称出现在两个正则表达式模式之后:

代码语言:javascript
复制
type\s+(\w|\.|_)+
:\s+(\w|\.|_)+

这可能只是一个实现问题(nano和gtksourceview似乎使用不同的regex实现)。我以为问题出在识别空格上。事实证明,将类型上下文放在关键字上下文之上会导致类型现在突出显示,但" type“关键字或":”操作符不会正确突出显示(它们突出显示为"type")。我能够在nano中覆盖它,导致正确的突出显示,但似乎无法了解gtksourceview是如何做到这一点的。

在这里,您可以看到旧的gtksourceview定义的实际效果,它不适用于具有许多自定义类型的文件。我的nano定义在动作边上进行比较;通过位置匹配是绝对可能的,并且有效。

下面是当我将类型context放在关键字context下面时会发生的事情。

下面是当我将类型context放在关键字context之上时发生的事情。

在这两种情况下,上下文都是相同的,只是一个简单的入门模式。

代码语言:javascript
复制
<context id="type" style-ref="type">
  <match>(type)\s+\w+</match>
</context>
EN

回答 1

Stack Overflow用户

发布于 2015-02-18 17:24:10

您可能希望考虑使用生成解析器,该解析器来自Language Reference Manual附录P中对Ada语法的正式描述。

遗憾的是,这并没有回答您的问题,即如何制定GtkSourceView的语法。

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

https://stackoverflow.com/questions/28555414

复制
相关文章

相似问题

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