在Xtext中哪里可以找到类似C语法的灵感?
Where to find a similar to C grammar as inspiration in Xtext?
我正在为 SHARC 处理器开发名为 CrossCore Embedded Studio 的 DSP 工具链。 IDE 除了汇编语言支持非常差之外,实现得很好。
我不确定Analog Devices是否会在不久的将来给予更好的支持。
我的意思是,目前没有代码折叠、没有轮廓和非常简约的代码着色支持。我想快速实现更高效的东西,我正在寻找一种在 Eclipse Luna 中实现新语言定义的方法。
我找到的是xtext。所以我按照 5 分钟和 15 分钟的教程阅读了一些相关文章。
我现在准备好实施我的语言了。因为这种汇编语言从 c 继承了非常相似的方面( 即 预处理器指令、C/C++ 注释、算术运算和分号结尾),我正在积极地寻找Xtext 的 C 语法示例。
很遗憾,我还没有找到任何东西。可悲的是,我发现由于 C 预处理器和 C 等多个语言层,C 或 C++ 无法在 Xtext 中轻松描述。我不会承认失败,我认为我可以实现一些足够的东西,因为我只需要近似的语法着色,一些代码折叠和大纲支持。
Where can I find helpful examples to implement such language?
这里是 SHARC 汇编语言的样子:
#include <foo.h>
#include "foo.h"
#ifdef BAR
.segment/dm slow;
#else
.segment/dm fast;
#endif
label:
r1 = r2; /* Another comment */
r3 = dm( _symbol + 0 );
r5 = r3 + 1; // A comment
jump(db);
nop;
r8 = pass r8;
another_label:
{ // Not currently recognized by the assembly, but useful for readabily, I would like to enable code folding here...
r2 = 3;
}
final_label.end: nop;
.endseg;
虽然我没有使用 Xtext 的长轨迹,但我建议您搜索与您尝试完成的语法相似的语法,而不是将其限制为 Xtext。据我所知,Xtext 建立在 Antlr 之上,它是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件(来自 its website). Now, there are several contributions to the Antlr project in terms of grammars examples, and you can find them here.
在该存储库中,您可以找到 C grammar written in Antlr,这应该是学习 Xtext 语法的良好起点;变化不大。
我正在为 SHARC 处理器开发名为 CrossCore Embedded Studio 的 DSP 工具链。 IDE 除了汇编语言支持非常差之外,实现得很好。
我不确定Analog Devices是否会在不久的将来给予更好的支持。
我的意思是,目前没有代码折叠、没有轮廓和非常简约的代码着色支持。我想快速实现更高效的东西,我正在寻找一种在 Eclipse Luna 中实现新语言定义的方法。
我找到的是xtext。所以我按照 5 分钟和 15 分钟的教程阅读了一些相关文章。
我现在准备好实施我的语言了。因为这种汇编语言从 c 继承了非常相似的方面( 即 预处理器指令、C/C++ 注释、算术运算和分号结尾),我正在积极地寻找Xtext 的 C 语法示例。
很遗憾,我还没有找到任何东西。可悲的是,我发现由于 C 预处理器和 C 等多个语言层,C 或 C++ 无法在 Xtext 中轻松描述。我不会承认失败,我认为我可以实现一些足够的东西,因为我只需要近似的语法着色,一些代码折叠和大纲支持。
Where can I find helpful examples to implement such language?
这里是 SHARC 汇编语言的样子:
#include <foo.h>
#include "foo.h"
#ifdef BAR
.segment/dm slow;
#else
.segment/dm fast;
#endif
label:
r1 = r2; /* Another comment */
r3 = dm( _symbol + 0 );
r5 = r3 + 1; // A comment
jump(db);
nop;
r8 = pass r8;
another_label:
{ // Not currently recognized by the assembly, but useful for readabily, I would like to enable code folding here...
r2 = 3;
}
final_label.end: nop;
.endseg;
虽然我没有使用 Xtext 的长轨迹,但我建议您搜索与您尝试完成的语法相似的语法,而不是将其限制为 Xtext。据我所知,Xtext 建立在 Antlr 之上,它是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件(来自 its website). Now, there are several contributions to the Antlr project in terms of grammars examples, and you can find them here.
在该存储库中,您可以找到 C grammar written in Antlr,这应该是学习 Xtext 语法的良好起点;变化不大。