0b95b8632d
This derivation can add arbitrary new Sublime syntaxes to bat's syntax file, which is used by cheddar. Included is a Prolog syntax. It is kind of mediocre, but better than nothing. Change-Id: I6ceecbc86a5dfba5886cd27bd5114721845446a7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/348 Reviewed-by: lukegb <lukegb@tvl.fyi>
1319 lines
48 KiB
YAML
1319 lines
48 KiB
YAML
# SPDX-License-Identifier: MIT
|
|
# Generated from code at https://github.com/BenjaminSchaaf/swi-prolog-sublime-syntax
|
|
---
|
|
# http://www.sublimetext.com/docs/3/syntax.html
|
|
name: Prolog
|
|
file_extensions:
|
|
- pl
|
|
- pro
|
|
first_line_match: '^#!.*\bswipl\b'
|
|
scope: source.prolog
|
|
contexts:
|
|
atom-entity|meta:
|
|
- meta_content_scope: entity.name.predicate.prolog
|
|
- match: ''
|
|
pop: true
|
|
atom-functor|meta:
|
|
- meta_content_scope: meta.path.prolog variable.function.functor.prolog
|
|
- match: ''
|
|
pop: true
|
|
atom-string|0:
|
|
- meta_include_prototype: false
|
|
- match: '\\([abcefnrstv''\"`\n\\]|x\h\h+\\?|u\h{4}|U\h{8})'
|
|
scope: constant.character.escape.prolog
|
|
- match: ''''
|
|
pop: true
|
|
compound-term|0:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [compound-term|1, value-without-comma|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [compound-term|1, value-without-comma|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [compound-term|1, value-without-comma|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: [compound-term|1, value-without-comma|0]
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [compound-term|1, value-without-comma|0]
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [compound-term|1, value-without-comma|0]
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [compound-term|1, value-without-comma|0]
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: [compound-term|1, value-without-comma|0]
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: [compound-term|1, value-without-comma|0]
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [compound-term|1, value-without-comma|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: [compound-term|1, value-without-comma|0]
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: [compound-term|1, value-without-comma|0]
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [compound-term|1, value-without-comma|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [compound-term|1, value-without-comma|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [compound-term|1, value-without-comma|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [compound-term|1, value-without-comma|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [compound-term|1, value-without-comma|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [compound-term|1, value-without-comma|0, single-value|2]
|
|
- match: '\)'
|
|
scope: punctuation.section.parens.end.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
compound-term|1:
|
|
- match: ','
|
|
scope: punctuation.separator.sequence.prolog
|
|
push: compound-term|2
|
|
- match: '\)'
|
|
scope: punctuation.section.parens.end.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
compound-term|2:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [value-without-comma|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [value-without-comma|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [value-without-comma|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: value-without-comma|0
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: value-without-comma|0
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [value-without-comma|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: value-without-comma|0
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: value-without-comma|0
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [value-without-comma|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [value-without-comma|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [value-without-comma|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [value-without-comma|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [value-without-comma|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [value-without-comma|0, single-value|2]
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
fact|0:
|
|
- match: ':-'
|
|
scope: keyword.operator.definition.begin.prolog
|
|
set: fact|1
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [fact|2, value|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [fact|2, value|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [fact|2, value|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [fact|2, value|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [fact|2, value|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [fact|2, value|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [fact|2, value|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [fact|2, value|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [fact|2, value|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [fact|2, value|0, single-value|2]
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
fact|1:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [fact|2, value|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [fact|2, value|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [fact|2, value|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [fact|2, value|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: [fact|2, value|0]
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [fact|2, value|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [fact|2, value|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [fact|2, value|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [fact|2, value|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [fact|2, value|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [fact|2, value|0, single-value|2]
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
fact|2:
|
|
- match: '\.'
|
|
scope: keyword.operator.definition.end.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
list|0:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [list|1, value-without-comma|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [list|1, value-without-comma|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [list|1, value-without-comma|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: [list|1, value-without-comma|0]
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [list|1, value-without-comma|0]
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [list|1, value-without-comma|0]
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [list|1, value-without-comma|0]
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: [list|1, value-without-comma|0]
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: [list|1, value-without-comma|0]
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [list|1, value-without-comma|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: [list|1, value-without-comma|0]
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: [list|1, value-without-comma|0]
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [list|1, value-without-comma|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [list|1, value-without-comma|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [list|1, value-without-comma|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [list|1, value-without-comma|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [list|1, value-without-comma|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [list|1, value-without-comma|0, single-value|2]
|
|
- match: '\]'
|
|
scope: punctuation.section.brackets.end.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
list|1:
|
|
- match: ','
|
|
scope: punctuation.separator.sequence.prolog
|
|
push: list|2
|
|
- match: '\|'
|
|
scope: punctuation.separator.sequence.prolog
|
|
set: list|3
|
|
- match: '\]'
|
|
scope: punctuation.section.brackets.end.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
list|2:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [value-without-comma|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [value-without-comma|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [value-without-comma|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: value-without-comma|0
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: value-without-comma|0
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [value-without-comma|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: value-without-comma|0
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: value-without-comma|0
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [value-without-comma|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [value-without-comma|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [value-without-comma|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [value-without-comma|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [value-without-comma|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [value-without-comma|0, single-value|2]
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
list|3:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [list|4, value-without-comma|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [list|4, value-without-comma|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [list|4, value-without-comma|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: [list|4, value-without-comma|0]
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [list|4, value-without-comma|0]
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [list|4, value-without-comma|0]
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [list|4, value-without-comma|0]
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: [list|4, value-without-comma|0]
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: [list|4, value-without-comma|0]
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [list|4, value-without-comma|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: [list|4, value-without-comma|0]
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: [list|4, value-without-comma|0]
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [list|4, value-without-comma|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [list|4, value-without-comma|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [list|4, value-without-comma|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [list|4, value-without-comma|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [list|4, value-without-comma|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [list|4, value-without-comma|0, single-value|2]
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
list|4:
|
|
- match: '\]'
|
|
scope: punctuation.section.brackets.end.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
main:
|
|
- match: '^#!'
|
|
scope: comment.line.number-sign.prolog punctuation.definition.comment.number-sign.prolog
|
|
push: shebang|0
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: entity.name.predicate.prolog
|
|
push: rule|0
|
|
- match: ''''
|
|
scope: entity.name.predicate.prolog
|
|
push: [rule|0, atom-entity|meta, atom-string|0]
|
|
- match: '(?=\S)'
|
|
push: fact|0
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
nested-comment|0:
|
|
- meta_content_scope: comment.block.nested.prolog
|
|
- match: '/\*(\*(?!/))?'
|
|
scope: comment.block.nested.prolog punctuation.definition.comment.prolog
|
|
push: nested-comment|0
|
|
- match: '\*/'
|
|
scope: comment.block.nested.prolog punctuation.definition.comment.prolog
|
|
pop: true
|
|
number|0:
|
|
- match: '[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
- match: '(?=\S)'
|
|
pop: true
|
|
operator-compound-term|0:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0]
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0]
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0]
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0]
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0]
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0]
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0]
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0]
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [operator-compound-term|1, value-without-comma|0, single-value|2]
|
|
- match: '\)'
|
|
scope: punctuation.section.parans.end.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
operator-compound-term|1:
|
|
- match: ','
|
|
scope: punctuation.separator.sequence.prolog
|
|
push: operator-compound-term|2
|
|
- match: '\)'
|
|
scope: punctuation.section.parans.end.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
operator-compound-term|2:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [value-without-comma|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [value-without-comma|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [value-without-comma|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: value-without-comma|0
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: value-without-comma|0
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [value-without-comma|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: value-without-comma|0
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: value-without-comma|0
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [value-without-comma|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [value-without-comma|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [value-without-comma|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [value-without-comma|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [value-without-comma|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [value-without-comma|0, single-value|2]
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
prototype:
|
|
- match: '(%+).*\n?'
|
|
scope: comment.line.percentage.prolog
|
|
captures:
|
|
1: punctuation.definition.comment.prolog
|
|
- match: '/\*(\*(?!/))?'
|
|
scope: comment.block.nested.prolog punctuation.definition.comment.prolog
|
|
push: nested-comment|0
|
|
rule|0:
|
|
- match: '\('
|
|
scope: punctuation.section.parens.begin.prolog
|
|
set: [rule|1, compound-term|0]
|
|
- match: ':-'
|
|
scope: keyword.operator.definition.begin.prolog
|
|
set: rule|2
|
|
- match: '\.'
|
|
scope: keyword.operator.definition.end.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
rule|1:
|
|
- match: ':-'
|
|
scope: keyword.operator.definition.begin.prolog
|
|
set: rule|2
|
|
- match: '\.'
|
|
scope: keyword.operator.definition.end.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
rule|2:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [rule|3, value|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [rule|3, value|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [rule|3, value|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: [rule|3, value|0]
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [rule|3, value|0]
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [rule|3, value|0]
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [rule|3, value|0]
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: [rule|3, value|0]
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: [rule|3, value|0]
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [rule|3, value|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: [rule|3, value|0]
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: [rule|3, value|0]
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [rule|3, value|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [rule|3, value|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [rule|3, value|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [rule|3, value|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [rule|3, value|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [rule|3, value|0, single-value|2]
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
rule|3:
|
|
- match: '\.'
|
|
scope: keyword.operator.definition.end.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
set|0:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [set|1, value-without-comma|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [set|1, value-without-comma|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [set|1, value-without-comma|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: [set|1, value-without-comma|0]
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [set|1, value-without-comma|0]
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [set|1, value-without-comma|0]
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [set|1, value-without-comma|0]
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: [set|1, value-without-comma|0]
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: [set|1, value-without-comma|0]
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [set|1, value-without-comma|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: [set|1, value-without-comma|0]
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: [set|1, value-without-comma|0]
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [set|1, value-without-comma|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [set|1, value-without-comma|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [set|1, value-without-comma|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [set|1, value-without-comma|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [set|1, value-without-comma|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [set|1, value-without-comma|0, single-value|2]
|
|
- match: '\}'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
set|1:
|
|
- match: ','
|
|
scope: punctuation.separator.sequence.prolog
|
|
push: set|2
|
|
- match: '\}'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
set|2:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [value-without-comma|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [value-without-comma|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [value-without-comma|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: value-without-comma|0
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: value-without-comma|0
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: value-without-comma|0
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [value-without-comma|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: value-without-comma|0
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: value-without-comma|0
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [value-without-comma|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [value-without-comma|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [value-without-comma|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [value-without-comma|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [value-without-comma|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [value-without-comma|0, single-value|2]
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
shebang|0:
|
|
- meta_content_scope: comment.line.number-sign.prolog
|
|
- match: '$\n?'
|
|
scope: comment.line.number-sign.prolog
|
|
pop: true
|
|
single-value|0:
|
|
- match: '\('
|
|
scope: punctuation.section.parens.begin.prolog
|
|
set: compound-term|0
|
|
- match: '(?=\S)'
|
|
pop: true
|
|
single-value|1:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: single-value|0
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: operator-compound-term|0
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
pop: true
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
pop: true
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
pop: true
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
pop: true
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
pop: true
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
pop: true
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: number|0
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
pop: true
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
pop: true
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: string|0
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: list|0
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: set|0
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: single-value|1
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: single-value|1
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: single-value|2
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
single-value|2:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [single-value|3, value|0, single-value|0]
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [single-value|3, value|0, single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: [single-value|3, value|0, operator-compound-term|0]
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
set: [single-value|3, value|0]
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [single-value|3, value|0]
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [single-value|3, value|0]
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
set: [single-value|3, value|0]
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
set: [single-value|3, value|0]
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
set: [single-value|3, value|0]
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: [single-value|3, value|0, number|0]
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
set: [single-value|3, value|0]
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
set: [single-value|3, value|0]
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: [single-value|3, value|0, string|0]
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: [single-value|3, value|0, list|0]
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: [single-value|3, value|0, set|0]
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: [single-value|3, value|0, single-value|1]
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: [single-value|3, value|0, single-value|1]
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: [single-value|3, value|0, single-value|2]
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
single-value|3:
|
|
- match: '\)'
|
|
scope: punctuation.section.group.end.prolog
|
|
pop: true
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
string|0:
|
|
- meta_content_scope: meta.string.prolog string.quoted.double.prolog
|
|
- meta_include_prototype: false
|
|
- match: '\\([abcefnrstv''\"`\n\\]|x\h\h+\\?|u\h{4}|U\h{8})'
|
|
scope: constant.character.escape.prolog
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.end.prolog
|
|
pop: true
|
|
value-without-comma|0:
|
|
- match: '\bis\b|>>|\^|=\.\.|=?<|>=?|==?|\*\*?|\+|->?|/|#=|\\='
|
|
scope: keyword.operator.prolog
|
|
push: value-without-comma|1
|
|
- match: ';'
|
|
scope: keyword.operator.logical.or.prolog
|
|
push: value-without-comma|1
|
|
- match: '->'
|
|
scope: keyword.operator.logical.if.prolog
|
|
push: value-without-comma|1
|
|
- match: '(?=\S)'
|
|
pop: true
|
|
value-without-comma|1:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: single-value|0
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: operator-compound-term|0
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
pop: true
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
pop: true
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
pop: true
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
pop: true
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
pop: true
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
pop: true
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: number|0
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
pop: true
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
pop: true
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: string|0
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: list|0
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: set|0
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: single-value|1
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: single-value|1
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: single-value|2
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|
|
value|0:
|
|
- match: '\bis\b|>>|\^|=\.\.|=?<|>=?|==?|\*\*?|\+|->?|/|#=|\\='
|
|
scope: keyword.operator.prolog
|
|
push: value|1
|
|
- match: ';'
|
|
scope: keyword.operator.logical.or.prolog
|
|
push: value|1
|
|
- match: '->'
|
|
scope: keyword.operator.logical.if.prolog
|
|
push: value|1
|
|
- match: ','
|
|
scope: keyword.operator.logical.and.prolog
|
|
push: value|1
|
|
- match: '(?=\S)'
|
|
pop: true
|
|
value|1:
|
|
- match: '\b[a-z][[:alpha:]0-9_]*\b'
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: single-value|0
|
|
- match: ''''
|
|
scope: meta.path.prolog variable.function.functor.prolog
|
|
set: [single-value|0, atom-functor|meta, atom-string|0]
|
|
- match: '([~^&*\-+=|\\/<>][~^&*\-+=|\\/<>.,]*)(\()'
|
|
captures:
|
|
1: constant.character.swi-prolog.prolog
|
|
2: punctuation.section.parens.begin.prolog
|
|
set: operator-compound-term|0
|
|
- match: '!'
|
|
scope: keyword.control.cut.prolog
|
|
pop: true
|
|
- match: '(0b)[01_]+'
|
|
scope: constant.numeric.integer.binary.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
pop: true
|
|
- match: '(0x)[\h_]+'
|
|
scope: constant.numeric.integer.hexadecimal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
pop: true
|
|
- match: '(0o)[0-7_]+'
|
|
scope: constant.numeric.integer.octal.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
pop: true
|
|
- match: '([0-9]{1,2})('')[0-9a-z]+'
|
|
scope: constant.numeric.integer.prolog
|
|
captures:
|
|
1: punctuation.definition.number.base.prolog
|
|
2: punctuation.separator.base.prolog
|
|
pop: true
|
|
- match: '[0-9]+\.[0-9]+'
|
|
scope: constant.numeric.float.prolog
|
|
pop: true
|
|
- match: '[+-]?[0-9_]+'
|
|
scope: constant.numeric.integer.prolog
|
|
set: number|0
|
|
- match: '\b[A-Z][[:alpha:]0-9_]*\b|\b_[[:alpha:]0-9_]+\b'
|
|
scope: variable.parameter.prolog
|
|
pop: true
|
|
- match: '_'
|
|
scope: language.constant.underscore.prolog
|
|
pop: true
|
|
- match: '"'
|
|
scope: meta.string.prolog string.quoted.double.prolog punctuation.definition.string.begin.prolog
|
|
set: string|0
|
|
- match: '\['
|
|
scope: punctuation.section.brackets.begin.prolog
|
|
set: list|0
|
|
- match: '\{'
|
|
scope: punctuation.section.braces.begin.prolog
|
|
set: set|0
|
|
- match: '\+|-'
|
|
scope: keyword.operator.arithmetic.prolog
|
|
set: single-value|1
|
|
- match: '\\\+'
|
|
scope: keyword.control.negation.prolog
|
|
set: single-value|1
|
|
- match: '\('
|
|
scope: punctuation.section.group.begin.prolog
|
|
set: single-value|2
|
|
- match: '\S'
|
|
scope: invalid.illegal.prolog
|
|
pop: true
|