# 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