GF Eclipse插件

约翰·卡米莱里
更新日期:2013年2月22日

根据第FP7-ICT-247914号赠款协议(欧盟第七框架计划,FP7/2007-2013MOLTO项目).

引言

为GF开发桌面IDE的目的是提供比在基于web的环境(GF网络集成开发环境). 特别是,在开发期间能够快速解决标识符交叉引用和浏览外部库,这是该项目的主要动机之一。

之所以选择将这个桌面IDE开发为Eclipse平台的插件,是因为它是GF开发人员社区中最流行的选择。对该平台的支持非常广泛,已经存在许多将Eclipse调整为特定于域的语言的工具。与零点击Web IDE方法不同,使用GF Eclipse插件需要在开发机器上进行一些手动安装和配置。

许可证

GF Eclipse插件在GNU通用公共许可证(GPL).
列出了涵盖GF其余部分的许可证在这里. Xtext和Eclipse在Eclipse公共许可证(EPL).

出版物

特征

发布历史记录

22/02/13:(1.5.2.x)用于指定包含/排除生成文件的新选项。构建期间的进度指标。

12/06/12:(1.5.1.x)支持在库源不可用时确定范围。外部库视图的性能和实施改进。

2012年4月19日:(1.5.0.x)不再需要.gf外部文件夹。经过很大改进的“外部库”视图允许您在当前范围内搜索。作用域实现中的内存使用改进。现在在打开文件时进行验证。首选项中重新添加的GF库路径字段。

04/04/12:(1.4.3.x)测试管理器的改进。添加了对启动中任意命令的支持。使许可证信息更清晰。

22/03/12:(1.4.2.x)添加了无上下文语法向导(但不支持语法)。用于将GF Nature和Builder切换在一起的上下文菜单选项。测试管理器现在解析语言和参数,并包括筛选和切换选项。

14/03/12:(1.4.1.x)GF源文件现在可以位于项目中的任何位置,不一定位于顶层。

06/03/12:(1.4.0.x)测试管理器视图。更新了发布配置。UI改进,新图标。内联上下文文档。合格标识符的正确解析。错误修复和一些重构。

07/02/12:(1.3.0.x)重写基础GF语法。

02/02/12:(1.2.5.x)大大提高了范围界定性能。新的“克隆到新语言”向导。改进了代码格式。更高效的建筑商。已删除库路径首选项。现在自动找到GF运行时。

23/01/12:(1.2.4.x)现在已经对Eclipse平台日志进行了日志记录(使用“错误日志”视图)。使用Eclipse 3.6.2进行测试。错误修复。

11/01/12:(1.2.3.x)更新为使用Xtext 2.1.0。指向外部文件的链接现已移动到新的“GF库视图”中。

2011年11月24日:(1.2.0.x),支持“Open Declaration”(F3)功能,包括外部库。

18/11/11:发布了第三个BETA(1.1.0.x),对其进行了全面检查,以利用新的编译器功能。带缓存的基于标记的范围以获得更好的性能。用于启动配置的交互式控制台(GF Shell)。

11/10/11:发布了第二个BETA(1.0.0.x),改进了对限定名、本地变量绑定、选择性继承、模块大纲和启动配置的支持。也是新的GF项目类型。

01/10/11:发布了初始BETA。

安装和更新

系统要求

  1. 日食3.6或以上。
  2. GF 3.3.3或以上。必须在插件首选项中设置GF的路径(见下文)。

使用GF资源语法库需要在系统上安装RGL二进制文件。如果您正在使用预编译二进制文件但是已经将RGL源代码单独下载到您的系统中,您可以在插件首选项中选择指定此路径(参见下文)。

首次安装插件

可用软件站点

为了满足相关性,您需要确保Eclipse设置了以下更新站点URL:

您可以从以下位置设置这些偏好安装/更新可用软件站点.

Eclipse首选项

如何找到Eclipse首选项窗口取决于Eclipse版本和/或操作系统,可以是:

安装

  1. 在Eclipse中,转到帮助安装新软件.
  2. 使用URL添加新的软件站点:http://www.grammaticalframework.org/eclipse/release/
  3. 选择GF Eclipse插件,并确保在安装期间联系所有更新站点以查找所需的软件选项被选中。
  4. 单击下一步,接受许可协议并安装。
  5. 接受软件未签名的提示警告。
  6. 出现提示时重新启动Eclipse。

设置和首选项

  1. 通过单击添加GF透视图窗口开放式视角其他并选择GF公司.
  2. 转到打开插件设置偏好语法框架(下图)。
  3. 插件将尝试自动确定GF可执行文件的路径,但这可能需要更正。
    路径应包括GF二进制文件本身的名称,例如。/home/john/.cabal/bin/gfC: \Users\John\GF\bin\GF.exe.
  4. 这个附加路径指令如果您想避免书写,可以使用设置--#-路径=。。。源文件中的指令。默认情况下,它设置为.:所有时态:前奏,但也可以为空。使用--路径标志。
  5. 如果您使用的是资源语法库的预编译版本(即您不是自己从源代码构建的),但您的系统上有可用的源代码,那么您可以在库源路径设置。这是可选的,仅用于跳转到源定义。
    您应该输入一个绝对系统路径,最多包括型钢混凝土文件夹,例如。/home/john/GF/lib/src/C: \用户\John\GF\lib\src\.
  6. 您还可以在首选项窗口中调整GFEP控制台日志的详细程度。
插件首选项窗口

插件首选项窗口

更新插件

  1. 在Eclipse中,转到帮助检查更新.
  2. 任何可用的更新都将显示在对话框中。选择它们并遵循通常的步骤。

注:您可能希望取消选中在安装期间联系所有更新站点以查找所需的软件选项,在简单地更新插件时通常不需要该选项(这会使速度慢得多)。

折旧

项目设置

尽管插件应该为您处理项目设置,但如果出现任何问题,您可以按以下方式手动更正:

项目性质

您的.项目文件应包括GF项目性质,如下所示:

<自然>org.grammaticalframework.eclipse.ui.natures.projectNatureID</nature></性质>

建设者

您的.项目文件应包括GF Builder,如下所示:

<构建规范><构建命令><name>org.grammatical framework.eclipse.ui.build。GFBuilderID</name><参数></参数></buildCommand></buildSpec>

指定生成文件

到GFEP≥1.5.2时,您现在可以在GF项目中显式地显示一组模块,这些模块应该包含在构建过程中,也可以从构建过程中排除。在包含的情况下,它通常包含您的“顶级”模块。这可以通过在project Explorer中单击项目并选择属性GF生成设置。在这里,您只需勾选GF构建器应编译的项目中的哪些模块:

特定于项目的生成设置

特定于项目的生成设置

当这样做时,GFEP将永远不会尝试编译项目中的任何其他文件。无论何时添加新的顶级模块或更改模块层次结构,请确保再次检查这些构建设置。

入门

您可以遵循一些步骤来了解插件的功能。

视频教程

快速浏览GF Eclipse插件中可用的主要功能。

如果视频没有出现在上面,您可以在https://vimeo.com/38768382

日蚀工作区项目概念

运行Eclipse时,它会要求您创建或指定工作区在您的系统上,它本质上是Eclipse将“看到”的顶级目录。您希望在Eclipse中处理的任何代码都必须驻留在此工作区中。工作区包含一个或多个项目,它们可能相互关联,也可能互不关联。通常,顶级工作空间目录下的每个文件夹都被视为单个项目,即:

工作区/项目1/文件1-1.gf文件1-2.gf项目2/第2-1小节/文件2-1-1.gf文件2-1-2.gf文件2-1.gf文件2-2.gf

如果您在Eclipse中打开一个现有文件夹作为您的工作区,那么该工作区中的文件夹不要自动成为Eclipse项目。要做到这一点,你必须遵循下面的“创建新GF项目”向导,并为你的项目提供现有文件夹的确切名称(例如。项目1项目2在上面的示例中。)

GF自然

这个GF自然是什么使常规Eclipse项目成为GF公司项目。如果你从头开始创建一个新的GF项目,那么你不需要太担心它们。如果您已经在Eclipse工作区中设置了一些项目,那么您需要将构建器与您的项目关联起来,以便所有GF的优点都能发挥作用GF建筑商你的项目。

从1.4.2开始,通过在浏览器中右击项目并单击,可以很容易地完成这项工作添加/删除GF性质如果你的项目上覆盖了GF图标,那么GF的性质和构建器就与之正确关联。

请参阅项目设置如果你想把你的.项目文件。

元数据文件夹

GFEP将在您的项目中创建以下元数据目录:

这些可以在任何时候手动移除,因为它们总是会在必要时重新生成。您可能希望忽略版本控制系统中的这些目录。

创建新的GF项目

如果您的工作区中有一个文件夹要转换为GF项目,则可以从下拉列表中选择它。然后,该文件夹将作为Eclipse项目出现在您的工作区中。

新建项目向导 新建项目向导

新建模块向导

使用GF模块向导来自文件新建其他GF模块:

新建模块向导

新建模块向导

你可以找到一些小例子在这里。下载这些文件并手动将其添加到Eclipse工作区中,以测试一些插件功能。

克隆模块向导

如果要将现有模块克隆到新语言中,现在可以通过克隆GF模块向导。这也可以作为中的上下文菜单选项使用工程资源管理器,通过<右键单击>语法框架为新语言编译:

将GF模块克隆到新语言向导

将GF模块克隆到新语言向导

这将创建并打开一个新模块,并进行相关替换。注意在这种情况下字符串常量是如何被空字符串替换的""。此向导当前仅适用于混凝土实例模块。

新克隆的文件

新克隆的文件

工作台编辑器布局

使用Eclipse自己的功能拖放编辑器选项卡以满足您的需要。

编辑器和大纲视图

编辑器和大纲视图

大纲视图

这个大纲左下角的视图提供了模块结构的概览。单击任何术语都会使光标跳到文件中的该点。

交叉引用错误和警告

注意如何更改例如,定义将在其他模块中产生警告和/或错误。

编辑器中的警告和错误

编辑器中的警告和错误

验证

编辑器内验证有时需要通过按键触发/更新。如果您仍然可以看到您认为应该正确的错误,请尝试添加空格字符以确保重新触发验证。

有时,您可能会得到一个标记有错误的整个文件,即使实际上只有一个错误导致内部构建器失败。在这种情况下,指的是问题视图可以帮助您找到原因。当对一个模块所做的更改可能会导致其后代出现错误(例如,重命名资源模块中的参数)时,此问题尤其重要。这种行为有望在未来版本中得到改进。

建设者

为了正确地进行验证,项目自动生成选项应该打开。每次保存文件(或项目中发生其他更改)时,生成器都应该被触发,从而重新编译任何已更改的GF文件。如果生成器似乎没有被触发,请尝试运行清洁的通过项目清洁。。。

代码格式

使用内置的代码格式化程序自动整理代码。在编辑器中单击鼠标右键并选择格式或使用键盘快捷键Ctrl+Shift+F组合键.

自动格式化之前 自成型后

语法突出显示

您可以根据需要更改语法颜色样式偏好语法框架语法着色

语法突出显示样式

语法突出显示样式

启动配置

从中设置启动配置运行运行配置。。。语法框架。您将看到下面的对话框,其中自动填写了一些字段。

启动配置对话框

启动配置对话框

运行启动配置,您将在Eclipse的控制台视图中看到GF编译器的输出。

GF编译器的输出

GF编译器的输出

运行方式…启动快捷方式

使用运行运行方式与GF一起编译快捷方式将采用当前选择或活动编辑器,并执行以下两项操作之一:

  1. 如果启动配置已经存在源文件名字段,然后将直接启动该配置。
  2. 否则,将显示一个新的启动配置窗口,您需要在其中查看并确认默认设置,然后再继续。

控制台

该插件提供了自己的控制台视图,名为GFEP日志,它显示基于日志级别优先权(偏好语法框架).

此外,每次语法运行新的控制台打开以显示输出。此控制台也可以用作交互式GF Shell,具体取决于交互式模式复选框运行配置.

当多个控制台窗口打开时,Eclipse并没有显示出来;单击显示所选控制台用于在打开的控制台之间切换的按钮:

显示所选控制台图标

显示所选控制台图标

如果与控制台窗口关联的进程已终止,它将显示在左上角,如下所示。然后可以使用灰色十字按钮关闭此类控制台窗口:

关闭终止的控制台图标

关闭终止的控制台图标

Eclipse控制台实现不支持命令历史记录(向上箭头)或自动完成(选项卡)。

外部库看法

此视图将自动填充当前文件引用的所有外部模块的列表。双击任何项目都可以快速打开从Eclipse项目外部导入语法的GF文件,例如GF资源语法库。

此视图还提供了一个文本框,用于在当前模块的范围内进行搜索,如下图所示。单击视图右侧的小箭头可提供区分大小写和/或基于正则表达式的搜索选项。

外部库视图

外部库视图

测试经理看法

此功能与启动配置一起使用,使在语法上运行回归测试的过程快速而简单。如中所述GF书籍(第10.5节),一般开发测试周期(独立于GFEP)如下:

  1. 创建文件测试树其中包含一组抽象语法树,您需要对其进行测试
  2. 编译语法并逐一线性化树,使用如下命令rf-lines-tree-file=test.trees | l-table | wf-file=tesk.trees.out
  3. 手动更正中的输出测试树输出并将其保存为您的金标准文件测试树.黄金.
  4. 每次更新语法时,重复步骤2,然后使用差异或其他比较工具。

这个测试经理视图遵循相同的模式,但提供了一个方便的图形界面,可以运行测试用例,也可以通过单击几下查看输出:

测试管理器视图

测试管理器视图

请注意,GFEP假定以下约定:

扩展 描述
*.树*.句子 测试输入文件:树文件(用于测试线性化)和句子文件(用于检测解析)
*.trees.out(.trees.out)*.句子.out 相应的输出文件(每次运行测试时生成)
*.trees.gold公司*.句子.gold 相应的金标准文件(从输出文件手动更正)

日志

GFEP写入Eclipse平台日志。可以通过两种方式访问:

  1. 通过打开错误日志在Eclipse中查看
  2. 直接访问文件<workspace>/.metadata/.log

您可以从以下位置设置日志详细性偏好语法框架.

常见问题和修复

没有解析标识符,我的日志包含消息“File Syntax.gf does not exist”

一般来说,这意味着您的库路径设置。

GFEP试图用GF单独编译所有文件,这不是编译语法的通常方式。因此,在查找RGL文件时,GF需要通过路径参数。

通常的方法是指定库路径设置自偏好语法框架将其设置为.:所有时态:前奏(这是默认设置)。注意,这些路径是相对于真正的RGL目录的,GF应该已经知道了。使用--路径标志。

这个库路径所有GF项目的设置都相同。如果希望对路径编译器选项,则应在源文件中使用编译器杂注,例如:

--#-路径=。:所有时态:前奏

此方法的优点是信息绑定到文件,因此您可以在GFEP之外自由编译模块,而无需将路径指定为GF的命令行选项。缺点是您需要在每个文件中指定这样的杂注(至少如果您想继续使用GFEP)。

其他奇怪行为

当事情看起来奇怪时,第一步总是通过项目清洁。。。。我只支持插件的最新版本,所以请确保您也是最新的。

如果问题仍然存在,请联系我,或者最好在GitHub问题跟踪器上提交问题(见下文)。

本体语法插件

有关Ontotext AD开发的本体语法插件的信息,请参阅在这里.

对于开发人员

项目设置

为了从源代码构建/运行GFEP,您需要在Eclipse工作区中提供Xtext库。您有两个选择:

  1. 从下载Xtext库http://www.eclipse.org/Xtext/download/并将它们添加到现有Eclipse实例中
  2. 从下载与Xtext一起打包的Eclipse版本http://xtext.itemis.com/xtext/language=en/36553/downloads(下载)

在这两种情况下,请确保获得正确的Xtext版本(请参阅下文)。设置好Xtext后,可以使用以下命令在本地克隆存储库:

git克隆git://github.com/语法框架/gf-eclipse-plugin.git

然后可以在工作区目录,通过使用文件导入。。。向导。单个项目包括:

命名空间 描述
org.grammatical框架.eclipse.ui 涵盖插件的所有UI方面。取决于org.grammatical框架.eclipse(但事实并非如此)。
org.grammatical framework.eclipse.tests网站 包含插件的单元测试。运行插件不需要。
org.grammatical framework.eclipse.本体论-语法 GF Ontology Grammar Plugin for Eclipse,由Ontotext AD单独开发。
org.grammatical框架.feature GF Eclipse插件的功能项目。出口org.grammatical框架.eclipseorg.grammaticalframework.eclipse.ui组织.
org.grammatical框架.feature.ontology-grammar GF本体语法插件的功能项目。出口org.grammatical framework.eclipse.本体论-语法.
org.grammatical framework.updatesite网站 更新导出同一类别下的两个功能项目的网站项目。

单元测试项目的额外依赖项

单元测试项目(org.grammatical framework.eclipse.tests网站)对图书馆有额外要求org.eclipseelabs.xtext.utils.unit测试,当您将项目导入Eclipse时,您可能会收到投诉。如果你想运行单元测试,你只需要担心这一点;否则,您可以忽略这些错误。您可以获取有关此库的更多信息在这里,或使用以下更新站点URL直接在Eclipse中安装:http://xtext-utils.eclipselabs.org.codespot.com/git.distribution/releases/unittesting-0.9.x/

Xtext版本

GFEP目前使用Xtext 2.1.0版本.

从源运行

一旦您设置好项目(见上文),您就可以按照以下步骤运行/调试GFEP在这里。请注意,这意味着您将运行Eclipse实例;第一次调试第二次。

构建插件包

将GFEP源打包为.jar文件文件并在单独的Eclipse安装中安装/更新GFEP,请执行以下操作:

  1. 正常开放站点.xml在中org.grammatical framework.updatesite网站使用Eclipse的站点清单编辑器(默认)进行项目。
  2. 使同步更新站点项目的功能版本。
  3. 单击全部生成以及必要的.jar文件应在项目文件夹中创建/更新文件。然后可以复制这些内容,以及站点.xml到任何本地或web目录,该目录将成为“更新站点”。

手工艺品.jar内容.jar

这是更新站点项目创建的两个元数据文件。然而,在更新站点中偶尔会出现类别不起作用的已知问题,如果删除这两个文件,问题似乎就会得到解决。可以找到更多关于这方面的信息在这里.

其他注意事项

一些人提到,在Linux下打开GFEP源代码时,他们需要安装以下内容:

sudo apt-get安装appmenu-gtksudo apt-get安装gtk2-引擎-pixbuf

评估和反馈

请尝试使用插件开发您自己的GF项目,并报告您遇到的任何问题。如能就以下方面提供反馈(积极和消极),我们将不胜感激:

  1. 安装过程中遇到的问题
  2. 错误支持GF语法结构、模块层次结构系统
  3. 性能问题(速度、资源占用)
  4. UI的一般直观性
  5. 功能愿望列表
  6. 与其他Eclipse插件的兼容性/冲突

对于所有错误报告和功能请求,请使用GitHub问题跟踪程序.

附录

模块类型

GF Eclipse插件中GF模块类型及其图标的描述。

偶像 描述 笔记
抽象模块 抽象食物={…}
混凝土模块 具体食品工程={…}
资源模块 resource ResFoods={…}
接口 接口LexFoods={…}
实例 LexFoods={…}的实例LexFoodesEng
Functor(仿真器) 不完整的具体食品I食品={…}
函数实例化 具体食品工程=食品I与(…){…}

Build命令

这是生成器运行的GF命令:

gf--v=0--tags--output-dir=.gfbuild[--path=path]文件