ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

polygen

作者: Tristano Ajmone ST3

Sublime Text 3 的 Polygen 语法

标签: polygen, 语言语法

详情

安装

  • 总数: 51
  • Win 32
  • Mac 13
  • Linux 6
2021年8月6日 2021年8月5日 2021年8月4日 2021年8月3日 2021年8月2日 2021年8月1日 2021年7月31日 2021年7月30日 2021年7月29日 2021年7月28日 2021年7月27日 2021年7月26日 2021年7月25日 2021年7月24日 2021年7月23日 2021年7月22日 2021年7月21日 2021年7月20日 2021年7月19日 2021年7月18日 2021年7月17日 2021年7月16日 2021年7月15日 2021年7月14日 2021年7月13日 2021年7月12日 2021年7月11日 2021年7月10日 2021年7月9日 2021年7月8日 2021年7月7日 2021年7月6日 2021年7月5日 2021年7月4日 2021年7月3日 2021年7月2日 2021年7月1日 2021年6月30日 2021年6月29日 2021年6月28日 2021年6月27日 2021年6月26日 2021年6月25日 2021年6月24日 2021年6月23日
Windows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mac 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

说明

源代码
raw.​githubusercontent.​com

Sublime Polygen

Polygen”包为 Sublime Text 3

https://github.com/tajmone/sublime-polygen

为 Polygen 语法(*.grm)添加语法高亮,提供如符号导航功能,语法信息片段以及用于直接在编辑器中测试、检查和预处理的多种构建系统。提供两个专门的配色方案。

  • Polygen 语法:Polygen 元语言(PML)1.0
  • 构建系统:Polygen v1.0.6

目录


需求

需要 Sublime Text 3 构建 >=3149

构建系统需要在系统路径上存在 Polygen 工具才能正常工作。

安装

通过“包控制:安装包”,搜索包含“Polygen”的包,并由包控制为您安装,这样在需要时它将自动更新。

对于手动安装(不推荐),在“<data_path>/Packages/”中创建一个“Polygen”文件夹,然后在“<data_path>/Packages/Polygen/”中打开一个壳并输入

git clone https://github.com/tajmone/sublime-polygen .

不要忘记仓库URL后面的“.”!这是将仓库内容直接克隆到当前文件夹中所需的,而不创建一个“sublime-polygen”容器文件夹。

特性

语法高亮

Sublime Polygen 为 Polygen 语法提供了强大的支持,拥有漂亮的语法高亮功能,能够区分

  • 规则定义中的非终结符号
  • 产生式中的非终结符号
  • 标签
  • 点选择中的标签(分组或独立)
  • 关键字操作符
  • 概率操作符
  • 字符串
  • 字符串中的转义序列
  • 字符串中的 ASCII 转义序列
  • 字符串中的无效 ASCII 转义序列
  • 注释

上述每一项都提供了一个特定的范围,允许在自定义配色方案中实现不同的语法着色。

规则定义和生成中的非终结符号都拥有一个共同的范围,但前者有一个额外的范围,允许(可选地)为规则定义中的符号(例如,加粗)实现不同的高亮样式。类似地,标签和在点选择中的标签共享一个共同的范围,但前者有额外的范围。这些额外的范围既用于非终结符号也用于标签,是为了快速在定义规则中找到非终结符号,并通过跳过标签选择来导航标签的出现。

注意 — Polygen语法是用ST3的新.sublime-syntax文件格式定义的,该文件格式在BUILD 3103(2016-02-09)中添加。

配色方案

由于Polygen元语言(PML)的性质,该语法使用了一些自定义(相当任意)的范围名称,因此附带两个专门配色方案,旨在获得更好的语法高亮效果。

该软件包附带两个配色方案

  • “Polygen Glamour”(默认)
  • “Polygen Monokai”

这些配色方案在软件包安装时不会自动生效;启用它们由用户决定,并且可以通过编辑Polygen语法的用户设置文件来实现。

要启用配色方案,打开菜单

Preferences > Package Settings > Polygen > Settings

这将启动一个新的Sublime Text实例,在左侧面板中显示Sublime Polygen的默认设置,在右侧面板中显示文件“<data_path>/Packages/User/Polygen.sublime-settings”。根据需要编辑右侧的JSON用户设置文件(在右侧)以添加以下键值对

{
    "color_scheme": "Packages/Polygen/Polygen-Glamour.sublime-color-scheme"
}

… 其中 Polygen-Glamour.sublime-color-scheme 应该是期望方案的名称(如果您想使用Monokai方案,请将其更改为 Polygen-Monokai.sublime-color-scheme)。

在左侧面板中,您将找到注销的示例设置和指南,您可以将其复制并粘贴到右侧面板中;这些包括笔记和配色方案的预设。

注意 — 这两个配色方案都是使用ST3的新.sublime-color-scheme格式定义的,该格式在DEV BUILD 3149(2017-10-13)中添加。

Polygen Glamour

“Polygen Glamour”是默认方案。它是深色和温暖的,带有复古色板。

Polygen Glamour

{
    "color_scheme": "Packages/Polygen/Polygen-Glamour.sublime-color-scheme"
}

Polygen Monokai

“Polygen Monokai”是备选方案。它基于Wimer Hazenberg的Sublime Text原生“Monokai”方案,并适应Polygen的语法范围,以在语法元素之间提供更好的颜色平衡。

Polygen Monokai

{
    "color_scheme": "Packages/Polygen/Polygen-Monokai.sublime-color-scheme"
}

转到符号

Sublime Polygen实现了符号跳转功能,允许快速在长语法中找到非终结符号和标签。仅在文件级别对规则定义中的非终结符号和非选择标签进行了索引。

这应该反映常见的使用场景,其中用户希望快速找到非终结符号的定义规则,或生产中(但不在点选择中)的所有标签的出现。

“转到定义”和“转到引用”不受支持,因为语法被视为独立的文件,因此符号跳转功能仅限于当前文件(忽略编辑器中或项目内的其他语法)。

构建系统

Sublime Polygen提供各种构建和测试系统,用户可以通过任何“*.grm”源文件通过“工具 > 构建”和“工具 > 通过…构建”菜单(或分别通过 Ctr BCtr Shift B)访问。

Build Systems

构建功能需要对Polygen工具在系统PATH上的访问权。

默认构建系统(Ctr B)将以Polygen运行当前语法,并在Sublime Text的控制台中显示结果。

“通过…构建”菜单(或 Ctr Shift B)将提供更多选择

  • polygen
  • Polygen - 详细输出
  • Polygen - 构建到文件(`
  • Polygen - 构建到文件详细输出
  • Polygen - 检查语法
  • Polygen - 检查语法(严格模式)
  • Polygen - 显示语法信息
  • Polygen - 预处理
  • Polygen - 预处理到文件(`

除非指定了 to file,否则所有操作的输出都将打印到 ST 控制台。文件操作将 Polygen 输出定向到源语法的文件夹中的一个文件,遵循方括号内指定的名称约定。

上述构建系统表示在语法源代码工作中常用的测试操作,并且可以在不离开编辑器的情况下执行这些测试。对大型语法和长输出,可以使用这些操作的 to file 版本,并保持输出文件在 Sublime Text 中打开,以便每次构建系统执行时,编辑器中的输出文件内容都会刷新,允许在编辑器中实时测试语法的输出。

片段

Sublime-Polygen 附带两个有用的代码片段来简化常规语法任务的工作

  • 语法信息
  • 非终结符号定义

语法信息片段

Info 代码片段提供了一个快速模板,用于将描述块添加到语法中

Grammar Info Snippet

在 "*.grm" 文件中键入 “info”+Tab,你将获得

错误:不支持语言“polygen”
I ::=   "title:    \n"
      ^ "author:   \n"
      ^ "language: \n"
      ^ "status:   embryonic\n"
      ^ "topic:    \n"
      ^ "audience: \n"
      ^ "disclaim: \n"
      ^ "created:  DD/MM/YY\n"
;

光标位于 title 字段之后,然后你可以通过 Tab 键遍历到下一个字段。

I 非终结符号由 Polygen 使用以通过 -info 命令行选项提供关于语法的摘要字符串。字符串的实际格式没有严格定义,而是 Polygen 用户之间的一种惯例。"info" 代码片段基于大多数语法中发现的常见做法生成了一个预设,并提供了一个 status 的样本值以及 created 字段常用日期格式(DD/MM/YY)的占位符提醒。

你可以自由添加自己的自定义字段,并省略不需要的字段。你也可以将“Polygen/snippets/info.sublime-snippet”文件复制到“Packages/User/”中,并根据你的自定义需求进行调整。

自定义变量支持

Info 代码片段也支持默认值中有一些字段的自定义环境变量

Grammar Info Snippet Vars

支持的变量有

  • POLYGEN_AUTHOR
  • POLYGEN_LANG

当定义了这些环境变量时,它们的值将自动分别用于填充 authorlanguage 字段。

要定义这些环境变量,在 “Packages/User/” 中创建一个“Polygen_Env_Vars.tmPreferences”文件(实际文件名并不重要,只有扩展名),并按如下方式定义它们

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>name</key>
    <string>Custom Polygen env vars</string>
    <key>scope</key>
    <string>source.polygen</string>
    <key>settings</key>
    <dict>
        <key>shellVariables</key>
        <array>
            <dict>
                <key>name</key>
                <string>POLYGEN_AUTHOR</string>
                <key>value</key>
                <string>Tristano</string>
            </dict>
            <dict>
                <key>name</key>
                <string>POLYGEN_LANG</string>
                <key>value</key>
                <string>Italian</string>
            </dict>
        </array>
    </dict>
</dict>
</plist>

创建此文件后,info 代码片段将自动使用您的自定义变量填充 authorlanguage 字段。

I ::=   "title:    \n"
      ^ "author:   Tristano\n"
      ^ "language: Italian\n"
      ^ "status:   embryonic\n"
      ^ "topic:    \n"
      ^ "audience: \n"
      ^ "disclaim: \n"
      ^ "created:  DD/MM/YY\n"
;

非终结符符号定义片段

Non-Terminal 代码片段是一个方便的快捷方式,可以快速定义非终结符号或 S 起始符号。

Non-Terminal Symbol Snippet

只在 "*.grm" 文件中键入 nt 并按 TAB,Sublime-Polygen 将展开代码片段为

错误:不支持语言“polygen”
S ::=  ;

默认情况下,代码片段将生成起始非终结符号 S 的定义,这是每个语法中必需的。你可以保留 S 符号并通过按 TAB 键跳转到定义,或者在你这样做之前覆盖符号名称。

许可证

Sublime Polygen” 由 Tristano Ajmone 创建,并根据 MIT 许可证的条款发布。

MIT License

Sublime Polygen
Copyright (c) 2018 Tristano Ajmone
https://github.com/tajmone/sublime-polygen

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

贡献

通过 GitHub 提交拉取请求可以接受贡献。

功能请求和支持

如果您有功能请求、需要支持或希望报告错误,请在此处打开一个问题

© 2020