简单多语言语法的GF在线编辑器
介绍
传统上,GF公司语法在文本编辑器中创建,并在GF外壳。文本编辑器对GF语法,因此为GF新手用户提供的指导很少。此外语法作者必须自己下载并安装GF软件计算机。相比之下简单多语言语法的GF在线编辑器可在线使用,使入门更容易。所有这些需要的是一个相当现代的web浏览器。甚至Android和iOS设备可以使用。
编辑还通过显示框架语法文件和提示如何填写部件。当新部件添加到语法,它会立即检查错误。
通过单击嵌入的编辑符号可以访问编辑操作在语法显示中:+=添加项目,×=删除项目,%=编辑项目。当鼠标悬停在项目上时会显示这些内容。在触摸设备上,悬停是在某些情况下,通过轻敲进行模拟,但底部也有一个按钮显示为“在触摸设备上启用编辑”,显示所有编辑符号。
尽管它的名字叫什么,但编辑器的核心运行在网络上浏览器,因此一旦打开网页,您就可以继续编辑即使你是语法脱机语法编译和测试以及一些错误检查由GF服务器完成,脱机时不可用。
当前状态
目前,编辑器只支持GF语法的一小部分符号。对抽象语法进行了适当的错误检查,但尚未对具体语法进行错误检查语法。
使用此编辑器创建的语法始终包含一个用于抽象语法,每个具体语法对应一个文件。
抽象语法
支持的抽象语法对应于无上下文语法(无依赖类型)。抽象语法的定义限于
- 继承的抽象语法列表,
- 列表类别名称,猫1; ... ;猫n个,
- 列表功能表单的有趣:猫1-> ... ->猫n个,
- 和a开始类别.
可用的编辑操作:
- 可以添加和删除继承的抽象语法。
- 可以添加、删除和重命名类别。重命名类别时,它在函数类型中的出现将相应更新。
- 可以添加、删除和编辑功能。更新了具体语法以反映变化。
- 可以使用拖放对函数进行重新排序。
错误检查:
- 拒绝语法错误的函数定义。
- 语义问题,如重复定义或引用未定义的类别将突出显示。
具体语法
目前,一种语言的具体语法L(左)仅限于
- 继承具体语法G公司我L(左)对于每个G公司我由抽象语法继承。
- 打开资源文法库模块的选择
语法
L(左),范例
L(左),词典
L(左),象征的
L(左)和额外
L(左), - 线性化类型对于抽象语法中的类别,
- 线性化对于抽象语法中的函数,
- 参数类型定义,P(P)=C类1| ... |C类n个,
- 和操作定义,操作=快递,操作:类型=快递,
可用的编辑操作:
- 可以在打开的资源语法列表中添加和删除模块库模块。
- 线性化类型和线性化的LHS由以下公式确定抽象语法,不需要手动输入。RHS可以进行编辑。
- 可以添加、删除和编辑参数类型。
- 可以添加、删除和编辑操作定义。
- 定义可以重新排序(使用拖放)。
也,
- 当语法中添加新的具体语法时当前创建了开放的具体语法,因为复制和修改通常比从头开始创建新东西容易。(如果抽象语法当前处于打开状态,则新的conrete语法将一开始是空的。)
- 在添加新的具体语法时,通常会选择支持的列表中的语言。确定语言代码和文件名自动。但你也可以选择其他从列表中选择并更改为语言添加具体语法的语言代码那不在清单上。
错误检查:
- 检查具体语法中的RHS输入语法时,由编辑器进行语法正确性检查。(TODO:目前不检查参数类型的语法。)
- 重复的定义将高亮显示。检查其他语义错误会延迟到语法编译完成。
语法视图
编辑器支持三种查看语法的方法:
- 列视图:这是一个传统的视图,您可以在其中看到一个完整的语法模块时间。即抽象语法或语法。
- 矩阵视图:这是对语法的概述,其中列对应抽象和具体的语法模块,行对应语法中的类别和功能。
- 行视图:这个视图显示了抽象语法和所有具体语法的相应线性化函数。
编译和测试语法
按下时编译按钮,语法将被编译使用GF,编辑未检测到的任何错误都将被报告。按下迷你吧和测验打开语法进行测试之前的按钮分别在迷你吧或翻译测验中。
语法云
虽然编辑器通常在浏览器中本地存储语法,但它也是可以在云中存储语法。语法可以存储在云中仅用于备份,或使它们可以从多个设备访问。本地语法和云之间没有自动同步。相反,用户应该按
将语法上传到云端,然后按
从云端下载语法。在这两种情况下,完整的语法复制,目标位置的旧版本将被覆盖。删除语法时,本地副本和云中副本已删除。
每个设备最初都被分配给自己的唯一云。因此,每个设备都可以有自己的语法集,这在其他设备上是不可用的。它是还可以合并云并在之间共享一组通用语法多个设备:将语法上传到云中时,此语法的链接云出现了。从其他设备访问此链接将导致要合并的两个设备。之后,从一个可以在其他设备上下载设备。任何数量的设备都可以加入以这种方式使用相同的语法云。
注释虽然可以在多个设备,无法合并来自多个设备的并发编辑设备。如果相同的语法上传到来自多个设备的云,最后一次上传获胜。因此,电流该实现适合于单个用户在不同的设备,但不建议在多个用户之间共享语法。
阿尔索笔记每个语法都被赋予了唯一的身份第一次创建时。重命名语法不会更改其标识。这意味着名称更改与其他更改一样在设备之间传播。
公共文法
【2012年10月:这是一个实验特征那个将来可能会被不兼容的语法共享机制取代。]
语法云还包括一个公共语法列表。可以通过按发布按钮显示在列表中的语法旁边你的语法。
这个发布按钮创建复制你的语法。如果您继续编辑语法,更改将仅限于本地。您可以按发布按钮再次更新公共副本。
您可以通过按×公共列表中语法旁边的按钮。你可以不删除其他用户发布的语法。
当您打开由其他用户发布的公共语法时复制属于语法被添加到语法列表中。任何更改都将在你自己的语法副本。如果你出版你的语法,它会单独出现在公共语法列表中。你不能覆盖其他用户发布的语法,即使它们具有相同的名称。
TODO:不建议发布继承自其他语法的语法。无法指明几个同名语法中的哪一个是被继承。
TODO:应该有一种方法来识别谁发布了语法和什么时候。也许发布按钮应该仅限于注册用户。。。
基于实例的语法写作
我们在2011年对此进行了试验。它目前不包括在内,但它可能会在未来版本中返回。。。未来的工作
这个原型给出了基于web的GF语法编辑器的工作原理。虽然此编辑器是用JavaScript实现的,并在web浏览器中运行,我们不希望创建在web浏览器,但让编辑器与运行GF的服务器通信。通过使用适当的API开发GF服务器,它应该可以扩展编辑器以支持更大的GF片段,进行适当的错误检查,并使现有的GF shell功能更加强大可从编辑器直接访问。
当前的语法云服务非常原始。特别是,它不是适合多个用户协作开发语法。
相关文件
上次修改时间:2012年10月9日星期二16:52:47 CEST
真实航向