# Encoding: UTF-8

{fileTypes: ["lgt"],
 foldingStartMarker: 
  /(?<_1>\/\*|:-\s+(?<_2>object|protocol|category)(?=[(?<_3>]))/,
 foldingStopMarker: 
  /(?<_1>\*\/|:-\s+end_(?<_2>object|protocol|category)(?=[.]))/,
 keyEquivalent: "^~L",
 name: "Logtalk",
 patterns: 
  [{begin: /\/\*/,
    captures: {0 => {name: "punctuation.definition.comment.logtalk"}},
    end: "\\*/",
    name: "comment.block.logtalk"},
   {captures: {1 => {name: "punctuation.definition.comment.logtalk"}},
    match: /(?<_1>%).*$\n?/,
    name: "comment.line.percentage.logtalk"},
   {captures: 
     {1 => {name: "storage.type.opening.logtalk"},
      2 => {name: "punctuation.definition.storage.type.logtalk"},
      4 => {name: "entity.name.type.logtalk"}},
    match: 
     /(?<_1>(?<_2>:-)\s(?<_3>object|protocol|category|module))(?:\()(?<_4>[^(?<_5>,)]+)/},
   {captures: {1 => {name: "punctuation.definition.storage.type.logtalk"}},
    match: /(?<_1>:-)\s(?<_2>end_(?<_3>object|protocol|category))(?=[.])/,
    name: "storage.type.closing.logtalk"},
   {match: 
     /\b(?<_1>complements|extends|i(?<_2>nstantiates|mp(?<_3>orts|lements))|specializes)(?=[(?<_4>])/,
    name: "storage.type.relations.logtalk"},
   {captures: {1 => {name: "punctuation.definition.storage.modifier.logtalk"}},
    match: 
     /(?<_1>:-)\s(?<_2>e(?<_3>lse|ndif)|dynamic|synchronized|threaded)(?=[.])/,
    name: "storage.modifier.others.logtalk"},
   {captures: {1 => {name: "punctuation.definition.storage.modifier.logtalk"}},
    match: 
     /(?<_1>:-)\s(?<_2>calls|e(?<_3>lif|n(?<_4>coding|sure_loaded)|xport)|i(?<_5>f|n(?<_6>itialization|fo))|reexport|set_(?<_7>logtalk|prolog)_flag|uses)(?=[(?<_8>])/,
    name: "storage.modifier.others.logtalk"},
   {captures: {1 => {name: "punctuation.definition.storage.modifier.logtalk"}},
    match: 
     /(?<_1>:-)\s(?<_2>alias|info|d(?<_3>ynamic|iscontiguous)|m(?<_4>eta_predicate|ode|ultifile)|p(?<_5>ublic|r(?<_6>otected|ivate))|op|use(?<_7>s|_module)|synchronized)(?=[(?<_8>])/,
    name: "storage.modifier.others.logtalk"},
   {match: /(?<_1>:|::|\^\^)/,
    name: "keyword.operator.message-sending.logtalk"},
   {match: /(?<_1>[{}])/, name: "keyword.operator.external-call.logtalk"},
   {match: /(?<_1>\?|@)/, name: "keyword.operator.mode.logtalk"},
   {match: /(?<_1>@=<|@<|@>|@>=|==|\\==)/,
    name: "keyword.operator.comparison.term.logtalk"},
   {match: /(?<_1>=<|<|>|>=|=:=|=\\=)/,
    name: "keyword.operator.comparison.arithmetic.logtalk"},
   {match: /(?<_1><<|>>|\/\\|\\\/|\\)/,
    name: "keyword.operator.bitwise.logtalk"},
   {match: /\b(?<_1>mod|rem)\b(?![-!(?<_2>^~])/,
    name: "keyword.operator.evaluable.logtalk"},
   {match: /(?<_1>\*\*|\+|-|\*|\/|\/\/)/,
    name: "keyword.operator.evaluable.logtalk"},
   {match: /(?<_1>:-|!|\\+|,|;|-->|->|=|\=|\.|=\.\.|\^|\bis\b)/,
    name: "keyword.operator.misc.logtalk"},
   {match: 
     /\b(?<_1>a(?<_2>bs|tan)|c(?<_3>eiling|os)|exp|flo(?<_4>at(?<_5>_(?<_6>integer|fractional)_part)?|or)|log|mod|r(?<_7>em|ound)|s(?<_8>i(?<_9>n|gn)|qrt)|truncate)(?=[(?<_10>])/,
    name: "support.function.evaluable.logtalk"},
   {match: /\b(?<_1>true|fail|repeat)\b(?![-!(?<_2>^~])/,
    name: "support.function.control.logtalk"},
   {match: /\b(?<_1>ca(?<_2>ll|tch)|throw|once)(?=[(?<_3>])/,
    name: "support.function.control.logtalk"},
   {match: 
     /\b(?<_1>(?<_2>get|p(?<_3>eek|ut))_(?<_4>c(?<_5>har|ode)|byte)|nl)(?=[(?<_6>])/,
    name: "support.function.chars-and-bytes-io.logtalk"},
   {match: /\bnl\b/, name: "support.function.chars-and-bytes-io.logtalk"},
   {match: 
     /\b(?<_1>atom_(?<_2>length|c(?<_3>hars|o(?<_4>ncat|des)))|sub_atom|char_code|number_c(?<_5>har|ode)s)(?=[(?<_6>])/,
    name: "support.function.atom-term-processing.logtalk"},
   {match: 
     /\b(?<_1>var|atom(?<_2>ic)?|integer|float|compound|n(?<_3>onvar|umber))(?=[(?<_4>])/,
    name: "support.function.term-testing.logtalk"},
   {match: 
     /\b(?<_1>read(?<_2>_term)?|write(?<_3>q|_(?<_4>canonical|term))?|(?<_5>current_)?(?<_6>char_conversion|op))(?=[(?<_7>])/,
    name: "support.function.term-io.logtalk"},
   {match: /\b(?<_1>arg|copy_term|functor)(?=[(?<_2>])/,
    name: "support.function.term-creation-and-decomposition.logtalk"},
   {match: /\b(?<_1>unify_with_occurs_check)(?=[(?<_2>])/,
    name: "support.function.term-unification.logtalk"},
   {match: 
     /\b(?<_1>(?<_2>se|curren)t_(?<_3>in|out)put|open|close|flush_output|stream_property|at_end_of_stream|set_stream_position)(?=[(?<_4>])/,
    name: "support.function.stream-selection-and-control.logtalk"},
   {match: /\b(?<_1>flush_output|at_end_of_stream)\b/,
    name: "support.function.stream-selection-and-control.logtalk"},
   {match: /\b(?<_1>(?<_2>se|curren)t_prolog_flag)(?=[(?<_3>])/,
    name: "support.function.prolog-flags.logtalk"},
   {match: 
     /\b(?<_1>logtalk_(?<_2>compile|l(?<_3>ibrary_path|oad)))(?=[(?<_4>])/,
    name: "support.function.compiling-and-loading.logtalk"},
   {match: /\b(?<_1>(?<_2>abolish|define)_events|current_event)(?=[(?<_3>])/,
    name: "support.function.event-handling.logtalk"},
   {match: /\b(?<_1>(?<_2>curren|se)t_logtalk_flag|halt)(?=[(?<_3>])/,
    name: "support.function.implementation-defined-hooks.logtalk"},
   {match: /\b(?<_1>halt)\b/,
    name: "support.function.implementation-defined-hooks.logtalk"},
   {match: 
     /\b(?<_1>(?<_2>c(?<_3>reate|urrent)|abolish)_(?<_4>object|protocol|category))(?=[(?<_5>])/,
    name: "support.function.entity-creation-and-abolishing.logtalk"},
   {match: 
     /\b(?<_1>(?<_2>object|protocol|category)_property|complements_object|extends_(?<_3>object|protocol|category)|imp(?<_4>orts_category|lements_protocol)|(?<_5>instantiat|specializ)es_class)(?=[(?<_6>])/,
    name: "support.function.reflection.logtalk"},
   {match: /\b(?<_1>(?<_2>for|retract)all)(?=[(?<_3>])/,
    name: "support.function.logtalk"},
   {match: /\b(?<_1>parameter|se(?<_2>lf|nder)|this)(?=[(?<_3>])/,
    name: "support.function.execution-context.logtalk"},
   {match: 
     /\b(?<_1>a(?<_2>bolish|ssert(?<_3>a|z))|clause|retract(?<_4>all)?)(?=[(?<_5>])/,
    name: "support.function.database.logtalk"},
   {match: /\b(?<_1>(?<_2>bag|set)of|f(?<_3>ind|or)all)(?=[(?<_4>])/,
    name: "support.function.all-solutions.logtalk"},
   {match: 
     /\b(?<_1>threaded(?<_2>_(?<_3>call|once|ignore|exit|peek|wait|notify))?)(?=[(?<_4>])/,
    name: "support.function.multi-threading.logtalk"},
   {match: /\b(?<_1>current_predicate|predicate_property)(?=[(?<_2>])/,
    name: "support.function.reflection.logtalk"},
   {match: /\b(?<_1>before|after)(?=[(?<_2>])/,
    name: "support.function.event-handler.logtalk"},
   {match: 
     /\b(?<_1>expand_(?<_2>goal|term)|(?<_3>goal|term)_expansion|phrase)(?=[(?<_4>])/,
    name: "support.function.grammar-rule.logtalk"},
   {begin: /'/,
    beginCaptures: 
     {0 => {name: "punctuation.definition.string.begin.logtalk"}},
    end: "'",
    endCaptures: {0 => {name: "punctuation.definition.string.end.logtalk"}},
    name: "string.quoted.single.logtalk",
    patterns: 
     [{match: /\\(?<_1>[\\abfnrtv"']|(?<_2>x[a-fA-F0-9]+|[0-7]+)\\)/,
       name: "constant.character.escape.logtalk"}]},
   {begin: /"/,
    beginCaptures: 
     {0 => {name: "punctuation.definition.string.begin.logtalk"}},
    end: "\"",
    endCaptures: {0 => {name: "punctuation.definition.string.end.logtalk"}},
    name: "string.quoted.double.logtalk",
    patterns: [{match: /\\./, name: "constant.character.escape.logtalk"}]},
   {match: /\b(?<_1>0b[0-1]+|0o[0-7]+|0x\h+)\b/,
    name: "constant.numeric.logtalk"},
   {match: /\b(?<_1>0'.|0''|0'")/, name: "constant.numeric.logtalk"},
   {match: /\b(?<_1>\d+\.?\d*(?<_2>(?<_3>e|E)(?<_4>\+|-)?\d+)?)\b/,
    name: "constant.numeric.logtalk"},
   {match: /\b(?<_1>[A-Z_][A-Za-z0-9_]*)\b/, name: "variable.other.logtalk"}],
 scopeName: "source.logtalk",
 uuid: "C11FA1F2-6EDB-11D9-8798-000A95DAA580"}
