【问题标题】:Convert .sublime-syntax (YAML) to VSCode-compatible syntax将 .sublime-syntax (YAML) 转换为 VSCode 兼容的语法
【发布时间】: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


    【解决方案1】:

    在此处查看documentation

    他们建议this tool 将 YAML 转换为 JSON

    【讨论】:

      猜你喜欢
      • 2015-08-04
      • 2020-12-15
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多