Ninja内置xText

时间:2012-05-10 14:52:04

标签: xtext

我正在尝试使用xtext为ninja build定义语法。

我无法回答三个棘手的问题。

  • 按标签缩进:

如何处理缩进。忍者构建文件中的规则可能有多个变量定义,前面的制表符间距(类似于make文件)。当语言具有SL注释时,这会成为问题,忽略空格并通过制表符缩进(python,make,...)

cflags = -g
rule cc
  command = gcc $cflags -c $in -o $out
  • 交叉引用保留的变量名称集:

存在一组保留变量。自动完成应该能够引用保留变量和用户定义的变量集。

command = gcc $cflags -c $in -o $out
  • 自动填充未与WS分离的交叉引用变量名称

org.eclipse.xtext.common.Terminals隐藏了WS令牌。 ID令牌由空格分隔。但是在忍者脚本(类似于make文件)中,解析应该使用最长的匹配变量名来完成。

some_var = some_value
command  = $some_var.h

任何想法都表示赞赏。感谢。

1 个答案:

答案 0 :(得分:1)

查看Xtext 2.8.0版本:https://www.eclipse.org/Xtext/releasenotes.html

Whitespace-Aware Languages部分声明:

  

Xtext 2.8支持使用空格指定的语言   结构,例如使用缩进来分隔代码块,如   蟒蛇。这是通过语法中定义的合成标记完成的:

terminal BEGIN: 'synthetic:BEGIN';
terminal END: 'synthetic:END';
     

这些令牌可以像语法规则中的其他终端一样使用:

WhitespaceAwareBlock:
    BEGIN
        ...
    END;
     

Eclipse示例中提供的新示例语言Home Automation(文件→新建→示例→Xtext示例)演示了此概念。它允许以下代码:

Rule 'Report error' when Heater.error then
    var String report
    do
        Thread.sleep(500)
        report = HeaterDiagnostic.readError
    while (report == null)
    println(report)
     

更多详细信息可在文档中找到。