将 .sublime-syntax(YAML)转换为适用于VSCode的语法

3
我已经为Sublime Text 3创建了一个与我自己的编程语言(Arturo)相关的.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)兼容的语法定义,但尽管已经阅读了大部分文档,我仍然感到困惑。

  • 首先,能否实现?(不损失功能的情况下)
  • 如何操作?(是否有自动化工具可用?更改是否有记录?)

我知道你提出这个问题已经将近两年了,但是你找到答案了吗?不说谎 - 我最感兴趣的是一个自动化工具,但即使是算法描述也会非常有帮助。我可以自己实现它。 - Marcin Jóźwikowski
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接