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

WebAssembly 文本语法

作者: bathos ST3

wast(WebAssembly 文本格式)Sublime 语法定义

详情

安装

  • 总数 2K
  • Win 719
  • Mac 512
  • Linux 458
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日 6月22日
Windows 0 0 0 1 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1
Mac 0 1 0 0 0 0 0 1 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 1 0 0
Linux 0 0 0 0 0 2 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 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0

README

源代码
raw.​githubusercontent.​com

wast-sublime-syntax

WAST,是WebAssembly的文本格式,这是一个非常低级但易于人类读写和编写的基于堆栈的语言。它是一个s-表达式树,虽然通常指令也可以线性编写。

这是一个 WAST 的 Sublime 语法 定义。它需要 Sublime Text 3 或更高版本。

高亮示例

使用 Monokai、Propeller、Welded 和 Excelsior(来自 ES Sublime)主题分别

目前我还没有包括任何自定义主题。我可能会稍后添加一个可以按深度高亮 s-表达式的主题,因为我认为这将是一个有趣的实验。

符号

如果给出了名称,函数、全局变量和类型将出现在局部符号列表中,但如果它们是无名的(即只通过索引引用),则不会出现。

导出将出现在局部和全局符号列表中。

其他元功能

已经定义了注释,但目前还没有定义缩进。我还没有完全确定它应该是什么样子—在野外似乎有非常不同的 s-表达式格式化方法,而我还没有足够的上下文来确定选择哪一个。(欢迎反馈或 PR。)

作用域

以下提供了这些作用域。大部分都遵循 TextMate 约定,但在某些情况下增加了额外的精确度,并且在某些内容上,为了帮助提高与现有色彩方案的兼容性,会轻微滥用不太适用但常见的范围。特别是,我使用了 storage.type.constant 来强制某些本身不全是“常量”的东西具有不同的着色。

  • comment.block.wast
  • comment.line.wast
  • 常量.字符.转义.字节.wast
  • 常量.字符.转义.字符.wast
  • 常量.数值.浮点.wast
  • 常量.数值.整数.wast
  • 实体.名称.导出.wast
  • 实体.名称.函数.wast
  • 实体.名称.内存.wast
  • 实体.名称.模块.导入.wast
  • 实体.名称.模块.wast
  • 实体.名称.语句.wast
  • 实体.名称.表.wast
  • 实体.名称.类型.wast
  • 无效.非法.wast
  • 关键字.控制.条件.wast
  • 关键字.控制.流.wast
  • 关键字.声明.偏移.wast
  • 关键字.操作符.赋值.wast
  • 关键字.操作符.词.wast
  • 关键字.其他.导出.wast
  • 关键字.其他.导入.wast
  • 关键字.其他.模块.wast
  • 关键字.其他.偏移.wast
  • 关键字.其他.起始.wast
  • 元信息.块.条件.wast
  • 元信息.块.循环.wast
  • 元信息.块.wast
  • 元信息.函数调用.wast
  • 元信息.组.限制.wast
  • 元信息.调用.wast
  • 元信息.表达式.数据.wast
  • 元信息.表达式.元素.wast
  • 元信息.表达式.导出描述.wast
  • 元信息.表达式.导出.wast
  • 元信息.表达式.wast
  • 元信息.表达式.函数.wast
  • 元信息.表达式.函数类型.wast
  • 元信息.表达式.全局.wast
  • 元信息.表达式.全局类型.wast
  • 元信息.表达式.导入.wast
  • 元信息.表达式.指令.wast
  • 元信息.表达式.局部.wast
  • 元信息.表达式.内存.wast
  • 元信息.表达式.模块.wast
  • 元信息.表达式.偏移.wast
  • 元信息.表达式.参数.wast
  • 元信息.表达式.结果.wast
  • 元信息.表达式.起始.begin.wast
  • 元信息.表达式.表.wast
  • 元信息.表达式.类型.wast
  • 元信息.表达式.类型使用.wast
  • 标点.定义.块.开始.wast
  • 标点.定义.块.条件.开始.wast
  • 标点.定义.块.条件.结束.wast
  • 标点.定义.块.结束.wast
  • 标点.定义.块.循环.开始.wast
  • 标点.定义.块.循环.结束.wast
  • 标点.定义.注释.开始.wast
  • 标点.定义.注释.结束.wast
  • 标点.定义.数据.开始.wast
  • 标点.定义.数据.结束.wast
  • 标点.定义.元素.开始.wast
  • 标点.定义.元素.结束.wast
  • 标点.定义.导出.开始.wast
  • 标点.定义.导出.结束.wast
  • 标点.定义.导出描述.开始.wast
  • 标点.定义.导出描述.结束.wast
  • 标点.定义.表达式.开始.wast
  • 标点.定义.表达式.结束.wast
  • 标点.定义.函数.开始.wast
  • 标点.定义.函数.结束.wast
  • 标点.定义.函数类型.开始.wast
  • 标点.定义.函数类型.结束.wast
  • 标点.定义.全局.开始.wast
  • 标点.定义.全局.结束.wast
  • 标点.定义.全局类型.开始.wast
  • 标点.定义.全局类型.结束.wast
  • 标点.定义.导入.开始.wast
  • 标点.定义.导入.结束.wast
  • 标点.定义.指令.开始.wast
  • 标点.定义.指令.结束.wast
  • 标点.定义.局部.开始.wast
  • 标点.定义.局部.结束.wast
  • 标点.定义.内存.开始.wast
  • 标点.定义.内存.结束.wast
  • 标点.定义.模块.开始.wast
  • 标点.定义.模块.结束.wast
  • 标点.定义.偏移.开始.wast
  • 标点.定义.偏移.结束.wast
  • 标点.定义.参数.开始.wast
  • 标点.定义.参数.结束.wast
  • 标点.定义.结果.开始.wast
  • 标点.定义.结果.结束.wast
  • 标点.定义.起始.开始.wast
  • 标点.定义.起始.结束.wast
  • 标点.定义.字符串.开始.wast
  • 标点.定义.字符串.结束.wast
  • 标点.定义.表.开始.wast
  • 标点.定义.表.结束.wast
  • 标点.定义.类型.开始.wast
  • 标点.定义.类型.结束.wast
  • 标点.定义.类型使用.开始.wast
  • 标点.定义.类型使用.结束.wast
  • 源.wast
  • 存储.修饰符.可变.wast
  • 存储.修饰符.结果.wast
  • 存储.修饰符.类型.wast
  • 存储.修饰符.wast
  • 存储.类型.常量.wast
  • 存储.类型.数据.wast
  • 存储.类型.元素.wast
  • 存储.类型.函数.wast
  • 存储.类型.全局.wast
  • 存储.类型.局部.wast
  • 存储.类型.内存.wast
  • 存储.类型.参数.wast
  • 存储.类型.表.wast
  • 存储.类型.类型.wast
  • 字符串.引号.双.wast
  • 支持函数.内存.wast
  • 支持函数.数值.wast
  • 支持函数.变量.wast
  • 支持.类型.wast
  • 变量.其他.索引.wast
  • 变量.其他.读写.wast
  • 变量.其他.wast
  • 变量.参数.wast

限制

与大多数语言一样,Sublime Syntax和Text Mate语法定义可以在词法级别正确地模拟WAST,但换行符的无视阻止了某些构造的理想范围。

然而,在这种情况下,由此引起的问题并不多——实际上只有一个。每当“(”后面跟着一个关键字时,如果在它们之间有换行符或多行注释,这种语法定义将无法正确匹配该s表达式。由于在那个位置确实有换行符或注释会显得不寻常/难以阅读,我没有包括任何特殊的恢复逻辑,只有这个警告。

应用了一些高级句法约束,例如只允许一个启动字段,但许多其他良好形成性的约束并没有应用,即使在技术上可以用Sublime Syntax表达的情况下也是如此。