【发布时间】:2021-02-10 17:43:01
【问题描述】:
我为 Sublime Text 3 创建了一个 .sublime-syntax 语法定义,用于我自己的编程语言 (Arturo)。
这是来自corresponding repository的完整语法:
%YAML 1.2
---
file_extensions:
- art
scope: source.arturo
contexts:
########################
# MAIN
########################
main:
## COMMENTS
# She-bang line
- match: '#!'
scope: punctuation.definition.comment.arturo
push: line_comment
# Single-line comments
- match: ;
scope: punctuation.definition.comment.arturo
push: line_comment
### STRINGS
# Double-quoted string literals
- match: '"'
scope: string.quoted.double.arturo
push: double_quoted_string
# FullLine strings
- match: «
scope: keyword.operator.arturo
push: fullline_string
# Curly strings
- match: '{'
scope: text.plain.arturo
push: curly_string
# Triple-dash strings
- match: '---'
scope: string.quoted.double.arturo
push: triple_dash_string
### LITERALS
# numbers
- match: '[0-9]+(\.[0-9]+)?'
scope: text.plain.arturo
# characters
- match: '`.`'
scope: string.quoted.double.arturo
# boolean
- match: 'true|false'
scope: constant.language.arturo
# boolean
- match: 'null'
scope: constant.language.arturo
### SYMBOLS
# syntactic sugar
- match: '(->|=>|\|)'
scope: markup.heading.arturo punctuation.definition.heading.arturo
# operators
- match: '@|#|\+|\||\*|\$|\-|\%|\/|\.\.|\^|~|=|<|>|\\|\-\-\-'
scope: keyword.operator.arturo
### LABELS
# label
- match: '([\w]+\b\??:)'
scope: entity.name.arturo
########################
# SUBSCOPES
########################
line_comment:
- meta_scope: comment.line.arturo
- match: $
pop: true
double_quoted_string:
- meta_include_prototype: false
- meta_scope: string.quoted.double.arturo
- match: '\\.'
scope: constant.character.escape.arturo
- match: '\|'
scope: markup.heading.arturo punctuation.definition.heading.arturo
push:
- clear_scopes: true
- meta_scope: source.arturo
- match: '\|'
scope: markup.heading.arturo punctuation.definition.heading.arturo
pop: true
- include: 'main'
- match: '"'
scope: string.quoted.double.arturo
pop: true
- include: escaped
fullline_string:
- meta_scope: markup.heading.arturo
- match: $
pop: true
curly_string:
- meta_include_prototype: false
- meta_scope: text.plain.arturo
- match: '\\.'
scope: constant.character.escape.arturo
- match: '\|'
scope: markup.heading.arturo punctuation.definition.heading.arturo
push:
- clear_scopes: true
- meta_scope: source.arturo
- match: '\|'
scope: markup.heading.arturo punctuation.definition.heading.arturo
pop: true
- include: 'main'
- match: '!html'
scope: markup.heading.arturo punctuation.definition.heading.arturo
push: Packages/HTML/HTML.sublime-syntax
with_prototype:
- match: '\|'
scope: markup.heading.arturo punctuation.definition.heading.arturo
push:
- clear_scopes: true
- meta_scope: source.arturo
- match: '\|'
scope: markup.heading.arturo punctuation.definition.heading.arturo
pop: true
- include: 'main'
- match: 'html!'
scope: markup.heading.arturo punctuation.definition.heading.arturo
pop: true
- match: '!latex'
scope: markup.heading.arturo punctuation.definition.heading.arturo
push: Packages/LaTeX/TeX.sublime-syntax
with_prototype:
- match: '\|'
scope: markup.heading.arturo punctuation.definition.heading.arturo
push:
- clear_scopes: true
- meta_scope: source.arturo
- match: '\|'
scope: markup.heading.arturo punctuation.definition.heading.arturo
pop: true
- include: 'main'
- match: 'latex!'
scope: markup.heading.arturo punctuation.definition.heading.arturo
pop: true
- match: '}'
scope: text.plain.arturo
pop: true
- include: escaped
triple_dash_string:
- meta_include_prototype: false
- meta_scope: string.quoted.double.arturo
- match: '\\.'
scope: constant.character.escape.arturo
- match: '\|'
scope: markup.heading.arturo punctuation.definition.heading.arturo
push:
- clear_scopes: true
- meta_scope: source.arturo
- match: '\|'
scope: markup.heading.arturo punctuation.definition.heading.arturo
pop: true
- include: 'main'
- match: '---'
scope: string.quoted.double.arturo
pop: true
- include: escaped
我现在正在尝试将其转换为与 VSCode(和 Atom-)兼容的语法定义,但尽管已经阅读了文档的大部分内容,但我仍然感到困惑。
- 首先,可以做到吗? (不牺牲功能)
- 如何? (是否有任何自动化工具可以做到这一点?是否在任何地方记录了更改?)
【问题讨论】:
标签: visual-studio-code yaml sublimetext3 atom-editor