
Description="Prolog"

Keywords={
  { Id=1,
    List={"true", "fail", "at_end_of_stream", "nl", "repeat", "halt", "is", "rem", "mod"},
  },
  { Id=2,
    List={"call", "catch", "throw", "unify_with_occurs_check", "var", "atom", 
        "integer", "float", "atomic", "compound", "nonvar", "number", "functor", "arg", 
        "copy_term", "clause", "current_predicate", "asserta", "assertz", "retract", 
        "abolish", "findall", "bagof", "setof", "current_input", "current_output", 
        "set_input", "set_output", "open", "close", "stream_property", 
        "at_end_of_stream", "set_stream_position", "get_char", "get_code", "peek_char", 
        "peek_code", "put_char", "put_code", "nl", "get_byte", "peek_byte", "put_byte", 
        "read_term", "read", "write_term", "write", "writeq", "write_canonical", "op", 
        "current_op", "char_conversion", "current_char_conversion", "once", 
        "atom_length", "atom_concat", "sub_atom", "atom_chars", "atom_codes", 
        "char_code", "number_chars", "number_codes", "set_prolog_flag", 
        "current_prolog_flag", "halt", "sin", "cos", "atan", "exp", "log", "sqrt"},
  },
  { Id=3,
    Regex=[[0(')\w+]],
  },
  { Id=4,
    Regex=[[(\w+)\s*\(]],
  },
}

Strings={
  Delimiter=[["|']],
  Interpolation=[[ ~\w+ ]]
}

IgnoreCase=false

Comments={
  { Block=false,
    Delimiter= { [[%]] },
  },
  { Block=true,
    Nested=false,
    Delimiter= { [[\/\*]],[[\*\/]],}
  }
}

PreProcessor={
  Prefix=[[#]],
}

Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\+|\-|\.|\|]]
