我已经为Sublime Text 3创建了一个与我自己的编程语言(Arturo)相关的
以下是对应存储库中的整个语法:corresponding repository。
.sublime-syntax
语法定义。以下是对应存储库中的整个语法: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)兼容的语法定义,但尽管已经阅读了大部分文档,我仍然感到困惑。
- 首先,能否实现?(不损失功能的情况下)
- 如何操作?(是否有自动化工具可用?更改是否有记录?)