This commit is contained in:
Vitor Santos Costa 2017-08-21 12:42:51 +01:00
parent b2c8b9a06e
commit ec518d7d36

View File

@ -11,7 +11,7 @@
})(function(CodeMirror) { })(function(CodeMirror) {
"use strict"; "use strict";
CodeMirror.defineMode("prolog", function(cmConfig, modeConfig) { CodeMirror.defineMode("prolog", function(cm_config, parserConfig) {
function chain(stream, state, f) { function chain(stream, state, f) {
state.tokenize = f; state.tokenize = f;
@ -22,17 +22,15 @@
* CONFIG DATA * * CONFIG DATA *
*******************************/ *******************************/
var config = { quasiQuotations: false, /* {|Syntax||Quotation|} */ var config = {
quasiQuotations : false, /* {|Syntax||Quotation|} */
dicts : false, /* tag{k:v, ...} */ dicts : false, /* tag{k:v, ...} */
unicodeEscape : true, /* \uXXXX and \UXXXXXXXX */ unicodeEscape : true, /* \uXXXX and \UXXXXXXXX */
multiLineQuoted : true, /* "...\n..." */ multiLineQuoted : true, /* "...\n..." */
groupedIntegers : false /* 10 000 or 10_000 */ groupedIntegers : false /* 10 000 or 10_000 */
}; };
var quoteType = { '"': "string", var quoteType = {'"' : "string", "'" : "qatom", "`" : "bqstring"};
"'": "qatom",
"`": "bqstring"
};
var isSingleEscChar = /[abref\\'"nrtsv]/; var isSingleEscChar = /[abref\\'"nrtsv]/;
var isOctalDigit = /[0-7]/; var isOctalDigit = /[0-7]/;
@ -43,7 +41,6 @@
var isNeck = /^(:-|-->)$/; var isNeck = /^(:-|-->)$/;
var isControlOp = /^(,|;|->|\*->|\\+|\|)$/; var isControlOp = /^(,|;|->|\*->|\\+|\|)$/;
/******************************* /*******************************
* CHARACTER ESCAPES * * CHARACTER ESCAPES *
*******************************/ *******************************/
@ -65,8 +62,8 @@
var next = stream.next(); var next = stream.next();
if (isSingleEscChar.test(next)) if (isSingleEscChar.test(next))
return true; return true;
switch( next ) switch (next) {
{ case "u": case "u":
if (config.unicodeEscape) if (config.unicodeEscape)
return readDigits(stream, isHexDigit, 4); /* SWI */ return readDigits(stream, isHexDigit, 4); /* SWI */
return false; return false;
@ -74,9 +71,13 @@
if (config.unicodeEscape) if (config.unicodeEscape)
return readDigits(stream, isHexDigit, 8); /* SWI */ return readDigits(stream, isHexDigit, 8); /* SWI */
return false; return false;
case null: return true; /* end of line */ case null:
case "c": stream.eatSpace(); return true; return true; /* end of line */
case "x": return readDigits(stream, isHexDigit, 2); case "c":
stream.eatSpace();
return true;
case "x":
return readDigits(stream, isHexDigit, 2);
} }
if (isOctalDigit.test(next)) { if (isOctalDigit.test(next)) {
if (!readDigits(stream, isOctalDigit, -1)) if (!readDigits(stream, isOctalDigit, -1))
@ -91,12 +92,12 @@
function nextUntilUnescaped(stream, state, end) { function nextUntilUnescaped(stream, state, end) {
var next; var next;
while ((next = stream.next()) != null) { while ((next = stream.next()) != null) {
if ( next == end && end != stream.peek() ) if (next == end && end != stream.peek()) {
{ state.nesting.pop(); state.nesting.pop();
return false; return false;
} }
if ( next == "\\" ) if (next == "\\") {
{ if ( !readEsc(stream) ) if (!readEsc(stream))
return false; return false;
} }
} }
@ -107,9 +108,7 @@
* CONTEXT NESTING * * CONTEXT NESTING *
*******************************/ *******************************/
function nesting(state) { function nesting(state) { return state.nesting.slice(-1)[0]; }
return state.nesting.slice(-1)[0];
}
/* Called on every non-comment token */ /* Called on every non-comment token */
function setArg1(state) { function setArg1(state) {
@ -159,18 +158,17 @@
// consing up tons of objects. // consing up tons of objects.
var type, content; var type, content;
function ret(tp, style, cont) { function ret(tp, style, cont) {
type = tp; content = cont; type = tp;
content = cont;
return style; return style;
} }
function peekSpace(stream) { /* TBD: handle block comment as space */ function peekSpace(stream) { /* TBD: handle block comment as space */
if ( stream.eol() || if (stream.eol() || /[\s%]/.test(stream.peek()))
/[\s%]/.test(stream.peek()) )
return true; return true;
return false; return false;
} }
/******************************* /*******************************
* SUB TOKENISERS * * SUB TOKENISERS *
*******************************/ *******************************/
@ -180,7 +178,8 @@
if (ch == "(") { if (ch == "(") {
if (state.lastType == "functor") { if (state.lastType == "functor") {
state.nesting.push({ functor: state.functorName, state.nesting.push({
functor : state.functorName,
column : stream.column(), column : stream.column(),
leftCol : state.functorColumn, leftCol : state.functorColumn,
arg : 0 arg : 0
@ -188,7 +187,8 @@
delete state.functorName; delete state.functorName;
delete state.functorColumn; delete state.functorColumn;
} else { } else {
state.nesting.push({ type: "control", state.nesting.push({
type : "control",
closeColumn : stream.column(), closeColumn : stream.column(),
alignment : stream.column() + 4 alignment : stream.column() + 4
}); });
@ -197,7 +197,8 @@
} }
if (ch == "{" && state.lastType == "tag") { if (ch == "{" && state.lastType == "tag") {
state.nesting.push({ tag: state.tagName, state.nesting.push({
tag : state.tagName,
column : stream.column(), column : stream.column(),
leftCol : state.tagColumn, leftCol : state.tagColumn,
arg : 0 arg : 0
@ -218,31 +219,35 @@
setArg1(state); setArg1(state);
if (isSoloChar.test(ch)) { if (isSoloChar.test(ch)) {
switch ( ch ) switch (ch) {
{ case ")": case ")":
state.nesting.pop(); state.nesting.pop();
break; break;
case "]": case "]":
state.nesting.pop(); state.nesting.pop();
return ret("list_close", null); return ret("list_close", null);
case "}": case "}": {
{ var nest = nesting(state); var nest = nesting(state);
var type = (nest && nest.tag) ? "dict_close" : "brace_term_close"; var type = (nest && nest.tag) ? "dict_close" : "brace_term_close";
state.nesting.pop(); state.nesting.pop();
return ret(type, null); return ret(type, null);
} }; break;
case ",": case ",":
if (stream.eol()) if (stream.eol())
state.commaAtEOL = true; state.commaAtEOL = true;
nextArg(state); nextArg(state);
/*FALLTHROUGH*/ /*FALLTHROUGH*/
if (isControl(state))
state.goalStart = true;
break;
case ";": case ";":
if (isControl(state)) if (isControl(state))
state.goalStart = true; state.goalStart = true;
break; break;
case "[": case "[":
state.nesting.push({ type: "list", state.nesting.push({
type : "list",
closeColumn : stream.column(), closeColumn : stream.column(),
alignment : stream.column() + 2 alignment : stream.column() + 2
}); });
@ -250,12 +255,12 @@
break; break;
case "{": case "{":
if (config.quasiQuotations && stream.eat("|")) { if (config.quasiQuotations && stream.eat("|")) {
state.nesting.push({ type: "quasi-quotation", state.nesting.push(
alignment: stream.column()+1 {type : "quasi-quotation", alignment : stream.column() + 1});
});
return ret("qq_open", "qq_open"); return ret("qq_open", "qq_open");
} else { } else {
state.nesting.push({ type: "curly", state.nesting.push({
type : "curly",
closeColumn : stream.column(), closeColumn : stream.column(),
alignment : stream.column() + 2 alignment : stream.column() + 2
}); });
@ -279,10 +284,8 @@
return ret("solo", null, ch); return ret("solo", null, ch);
} }
if (ch == '"' || ch == "'" || ch == "`") if (ch == '"' || ch == "'" || ch == "`") {
{ state.nesting.push({ type: "quoted", state.nesting.push({type : "quoted", alignment : stream.column() + 1});
alignment: stream.column()+1
});
return chain(stream, state, plTokenString(ch)); return chain(stream, state, plTokenString(ch));
} }
@ -310,9 +313,8 @@
stream.match(/^\d*((_|\s+)\d+)*(?:\.\d+)?(?:[eE][+\-]?\d+)?/); stream.match(/^\d*((_|\s+)\d+)*(?:\.\d+)?(?:[eE][+\-]?\d+)?/);
else else
stream.match(/^\d*(?:\.\d+)?(?:[eE][+\-]?\d+)?/); stream.match(/^\d*(?:\.\d+)?(?:[eE][+\-]?\d+)?/);
return ret(ch == "-" ? "neg-number" : return ret(ch == "-" ? "neg-number"
ch == "+" ? "pos-number" : : ch == "+" ? "pos-number" : "number");
"number");
} }
if (isSymbolChar.test(ch)) { if (isSymbolChar.test(ch)) {
@ -322,7 +324,8 @@
if (nesting(state)) { if (nesting(state)) {
return ret("fullstop", "error", atom); return ret("fullstop", "error", atom);
} else { } else {
} return ret("fullstop", "fullstop", atom); }
return ret("fullstop", "fullstop", atom);
} else if (isNeck.test(atom)) { } else if (isNeck.test(atom)) {
return ret("neck", "neck", atom); return ret("neck", "neck", atom);
} else if (isControl(state) && isControlOp.test(atom)) { } else if (isControl(state) && isControlOp.test(atom)) {
@ -401,12 +404,12 @@
return ret("comment", "comment"); return ret("comment", "comment");
} }
// /******************************* // /*******************************
// * ACTIVE KEYS * // * ACTIVE KEYS *
// *******************************/ // *******************************/
// /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - -
// Support if-then-else layout like this: // Support if-then-else layout like this:
// goal :- // goal :-
@ -414,8 +417,8 @@
// -> IfTrue // -> IfTrue
// ; IfFalse // ; IfFalse
// ). // ).
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - */
// CodeMirror.commands.prologStartIfThenElse = function(cm) { // CodeMirror.commands.prologStartIfThenElse = function(cm) {
// var start = cm.getCursor("start"); // var start = cm.getCursor("start");
@ -496,10 +499,9 @@
// Default (SWI-)Prolog operator table. To be used later to enhance the // Default (SWI-)Prolog operator table. To be used later to enhance the
// offline experience. // offline experience.
var ops = { "-->": { p:1200, t:"xfx" }, var ops = {
":-": [ { p:1200, t:"xfx" }, "-->" : {p : 1200, t : "xfx"},
{ p:1200, t:"fx" } ":-" : [ {p : 1200, t : "xfx"}, {p : 1200, t : "fx"} ],
],
"?-" : {p : 1200, t : "fx"}, "?-" : {p : 1200, t : "fx"},
"dynamic" : {p : 1150, t : "fx"}, "dynamic" : {p : 1150, t : "fx"},
@ -543,12 +545,8 @@
":" : {p : 600, t : "xfy"}, ":" : {p : 600, t : "xfy"},
"+": [ { p:500, t:"yfx" }, "+" : [ {p : 500, t : "yfx"}, {p : 200, t : "fy"} ],
{ p:200, t:"fy" } "-" : [ {p : 500, t : "yfx"}, {p : 200, t : "fy"} ],
],
"-": [ { p:500, t:"yfx" },
{ p:200, t:"fy" }
],
"/\\" : {p : 500, t : "yfx"}, "/\\" : {p : 500, t : "yfx"},
"\\/" : {p : 500, t : "yfx"}, "\\/" : {p : 500, t : "yfx"},
"xor" : {p : 500, t : "yfx"}, "xor" : {p : 500, t : "yfx"},
@ -598,72 +596,17 @@
}; };
var builtins = { var builtins = {
"asserta": "prolog",
"atomic_list_concat": "prolog",
"char_type": "prolog",
"compile_expressions": "prolog",
"compile": "prolog",
"create_prolog_flag": "prolog",
"current_module": "prolog",
"current_op": "prolog",
"del_attrs": "prolog",
"depth_bound_call": "prolog",
"dule": "prolog",
"exo_files": "prolog",
"export_list": "prolog",
"foreign_directory": "prolog",
"garbage_collect_atoms": "prolog",
"garbage_collect": "prolog",
"get_attrs": "prolog",
"hread_signal": "prolog",
"ignore": "prolog",
"incore": "prolog",
"initialization": "prolog",
"int_message": "prolog",
"message_to_string": "prolog",
"module_property": "prolog",
"msort": "prolog",
"mutex_unlock_all": "prolog",
"no_style_check": "prolog",
"nospy": "prolog",
"notrace": "prolog",
"ortray_clause": "prolog",
"otherwise": "prolog",
"predsort": "prolog",
"prolog_initialization": "prolog",
"qend_program": "prolog",
"qsave_file": "prolog",
"recordaifnot": "prolog",
"set_base_module": "prolog",
"sformat": "prolog",
"source_file": "prolog",
"split_path_file": "prolog",
"stream_position": "prolog",
"system_error": "prolog",
"system_module": "prolog",
"t_head": "prolog",
"table_statistics": "prolog",
"tabling_mode": "prolog",
"tabling_statistics": "prolog",
"thread_defaults": "prolog",
"thread_local": "prolog",
"thread_set_defaults": "prolog",
"thread_statistics": "prolog",
"unix": "prolog",
"use_system_module": "prolog",
"user_defined_directive": "prolog",
"version": "prolog",
"C" : "prolog", "C" : "prolog",
"abolish" : "prolog",
"abolish_all_tables" : "prolog", "abolish_all_tables" : "prolog",
"abolish_frozen_choice_points" : "prolog", "abolish_frozen_choice_points" : "prolog",
"abolish_module" : "prolog", "abolish_module" : "prolog",
"abolish_table" : "prolog", "abolish_table" : "prolog",
"abolish": "prolog",
"abort" : "prolog", "abort" : "prolog",
"absolute_file_name" : "prolog", "absolute_file_name" : "prolog",
"absolute_file_system_path" : "prolog", "absolute_file_system_path" : "prolog",
"access_file": "prolog",
"access" : "prolog", "access" : "prolog",
"access_file" : "prolog",
"acyclic_term" : "prolog", "acyclic_term" : "prolog",
"add_import_module" : "prolog", "add_import_module" : "prolog",
"add_to_array_element" : "prolog", "add_to_array_element" : "prolog",
@ -673,17 +616,19 @@
"always_prompt_user" : "prolog", "always_prompt_user" : "prolog",
"arena_size" : "prolog", "arena_size" : "prolog",
"arg" : "prolog", "arg" : "prolog",
"array_element": "prolog",
"array" : "prolog", "array" : "prolog",
"assert_static": "prolog", "array_element" : "prolog",
"asserta_static": "prolog",
"assertz_static": "prolog",
"assertz": "prolog",
"assert" : "prolog", "assert" : "prolog",
"assert_static" : "prolog",
"asserta" : "prolog",
"asserta_static" : "prolog",
"assertz" : "prolog",
"assertz_static" : "prolog",
"at_end_of_line" : "prolog", "at_end_of_line" : "prolog",
"at_end_of_stream_0": "prolog",
"at_end_of_stream" : "prolog", "at_end_of_stream" : "prolog",
"at_end_of_stream_0" : "prolog",
"at_halt" : "prolog", "at_halt" : "prolog",
"atom" : "prolog",
"atom_chars" : "prolog", "atom_chars" : "prolog",
"atom_codes" : "prolog", "atom_codes" : "prolog",
"atom_concat" : "prolog", "atom_concat" : "prolog",
@ -695,8 +640,6 @@
"atomic_length" : "prolog", "atomic_length" : "prolog",
"atomic_list_concat" : "prolog", "atomic_list_concat" : "prolog",
"atomics_to_string" : "prolog", "atomics_to_string" : "prolog",
"atomic": "prolog",
"atom": "prolog",
"attvar" : "prolog", "attvar" : "prolog",
"b_getval" : "prolog", "b_getval" : "prolog",
"b_setval" : "prolog", "b_setval" : "prolog",
@ -708,41 +651,41 @@
"between" : "prolog", "between" : "prolog",
"bootstrap" : "prolog", "bootstrap" : "prolog",
"break" : "prolog", "break" : "prolog",
"call" : "prolog",
"call_cleanup" : "prolog", "call_cleanup" : "prolog",
"call_count" : "prolog",
"call_count_data" : "prolog", "call_count_data" : "prolog",
"call_count_reset" : "prolog", "call_count_reset" : "prolog",
"call_count": "prolog",
"call_residue_vars": "prolog",
"call_residue" : "prolog", "call_residue" : "prolog",
"call_residue_vars" : "prolog",
"call_shared_object_function" : "prolog", "call_shared_object_function" : "prolog",
"call_with_args" : "prolog", "call_with_args" : "prolog",
"callable" : "prolog", "callable" : "prolog",
"call": "prolog",
"catch_ball": "prolog",
"catch" : "prolog", "catch" : "prolog",
"catch_ball" : "prolog",
"cd" : "prolog", "cd" : "prolog",
"cfile_search_path" : "prolog", "cfile_search_path" : "prolog",
"char_code" : "prolog", "char_code" : "prolog",
"char_conversion" : "prolog", "char_conversion" : "prolog",
"char_type" : "prolog", "char_type" : "prolog",
"clause_property": "prolog",
"clause" : "prolog", "clause" : "prolog",
"clause_property" : "prolog",
"close" : "prolog",
"close_shared_object" : "prolog", "close_shared_object" : "prolog",
"close_static_array" : "prolog", "close_static_array" : "prolog",
"close": "prolog",
"code_type" : "prolog", "code_type" : "prolog",
"commons_directory" : "prolog", "commons_directory" : "prolog",
"commons_library" : "prolog", "commons_library" : "prolog",
"compare" : "prolog", "compare" : "prolog",
"compile" : "prolog",
"compile_expressions" : "prolog", "compile_expressions" : "prolog",
"compile_predicates" : "prolog", "compile_predicates" : "prolog",
"compile": "prolog",
"compound" : "prolog", "compound" : "prolog",
"consult_depth": "prolog",
"consult" : "prolog", "consult" : "prolog",
"consult_depth" : "prolog",
"context_module" : "prolog", "context_module" : "prolog",
"copy_term_nat": "prolog",
"copy_term" : "prolog", "copy_term" : "prolog",
"copy_term_nat" : "prolog",
"create_mutable" : "prolog", "create_mutable" : "prolog",
"create_prolog_flag" : "prolog", "create_prolog_flag" : "prolog",
"creep_allowed" : "prolog", "creep_allowed" : "prolog",
@ -755,7 +698,6 @@
"current_module" : "prolog", "current_module" : "prolog",
"current_mutex" : "prolog", "current_mutex" : "prolog",
"current_op" : "prolog", "current_op" : "prolog",
"current_output": "prolog",
"current_predicate" : "prolog", "current_predicate" : "prolog",
"current_prolog_flag" : "prolog", "current_prolog_flag" : "prolog",
"current_reference_count" : "prolog", "current_reference_count" : "prolog",
@ -763,11 +705,11 @@
"current_thread" : "prolog", "current_thread" : "prolog",
"db_files" : "prolog", "db_files" : "prolog",
"db_reference" : "prolog", "db_reference" : "prolog",
"debugging": "prolog",
"debug" : "prolog", "debug" : "prolog",
"debugging" : "prolog",
"decrease_reference_count" : "prolog", "decrease_reference_count" : "prolog",
"del_attrs": "prolog",
"del_attr" : "prolog", "del_attr" : "prolog",
"del_attrs" : "prolog",
"delete_import_module" : "prolog", "delete_import_module" : "prolog",
"depth_bound_call" : "prolog", "depth_bound_call" : "prolog",
"dif" : "prolog", "dif" : "prolog",
@ -776,33 +718,34 @@
"do_c_built_in" : "prolog", "do_c_built_in" : "prolog",
"do_c_built_metacall" : "prolog", "do_c_built_metacall" : "prolog",
"do_not_compile_expressions" : "prolog", "do_not_compile_expressions" : "prolog",
"dump_active_goals": "prolog", "dule" : "prolog",
"dum" : "prolog", "dum" : "prolog",
"dump_active_goals" : "prolog",
"duplicate_term" : "prolog", "duplicate_term" : "prolog",
"dynamic" : "prolog",
"dynamic_predicate" : "prolog", "dynamic_predicate" : "prolog",
"dynamic_update_array" : "prolog", "dynamic_update_array" : "prolog",
"dynamic": "prolog",
"eamconsult" : "prolog", "eamconsult" : "prolog",
"eamtrans" : "prolog", "eamtrans" : "prolog",
"end_of_file" : "prolog", "end_of_file" : "prolog",
"ensure_loaded" : "prolog", "ensure_loaded" : "prolog",
"erase" : "prolog",
"eraseall" : "prolog", "eraseall" : "prolog",
"erased" : "prolog", "erased" : "prolog",
"erase": "prolog", "exists" : "prolog",
"exists_directory" : "prolog", "exists_directory" : "prolog",
"exists_file" : "prolog", "exists_file" : "prolog",
"exists_source" : "prolog", "exists_source" : "prolog",
"exists": "prolog",
"exo_files" : "prolog", "exo_files" : "prolog",
"expand_exprs": "prolog",
"expand_expr" : "prolog", "expand_expr" : "prolog",
"expand_exprs" : "prolog",
"expand_file_name" : "prolog", "expand_file_name" : "prolog",
"expand_goal" : "prolog", "expand_goal" : "prolog",
"expand_term" : "prolog", "expand_term" : "prolog",
"expects_dialect" : "prolog", "expects_dialect" : "prolog",
"export" : "prolog",
"export_list" : "prolog", "export_list" : "prolog",
"export_resource" : "prolog", "export_resource" : "prolog",
"export": "prolog",
"extend" : "prolog", "extend" : "prolog",
"fail" : "prolog", "fail" : "prolog",
"false" : "prolog", "false" : "prolog",
@ -819,15 +762,17 @@
"forall" : "prolog", "forall" : "prolog",
"foreign_directory" : "prolog", "foreign_directory" : "prolog",
"format" : "prolog", "format" : "prolog",
"freeze_choice_point": "prolog",
"freeze" : "prolog", "freeze" : "prolog",
"freeze_choice_point" : "prolog",
"frozen" : "prolog", "frozen" : "prolog",
"functor" : "prolog", "functor" : "prolog",
"garbage_collect_atoms": "prolog",
"garbage_collect" : "prolog", "garbage_collect" : "prolog",
"garbage_collect_atoms" : "prolog",
"gc" : "prolog", "gc" : "prolog",
"get" : "prolog",
"get0" : "prolog", "get0" : "prolog",
"get_attr" : "prolog", "get_attr" : "prolog",
"get_attrs" : "prolog",
"get_byte" : "prolog", "get_byte" : "prolog",
"get_char" : "prolog", "get_char" : "prolog",
"get_code" : "prolog", "get_code" : "prolog",
@ -837,7 +782,6 @@
"get_value" : "prolog", "get_value" : "prolog",
"getcwd" : "prolog", "getcwd" : "prolog",
"getenv" : "prolog", "getenv" : "prolog",
"get": "prolog",
"global_trie_statistics" : "prolog", "global_trie_statistics" : "prolog",
"ground" : "prolog", "ground" : "prolog",
"grow_heap" : "prolog", "grow_heap" : "prolog",
@ -848,6 +792,7 @@
"hide_predicate" : "prolog", "hide_predicate" : "prolog",
"hostname_address" : "prolog", "hostname_address" : "prolog",
"hread_get_message" : "prolog", "hread_get_message" : "prolog",
"hread_signal" : "prolog",
"if" : "prolog", "if" : "prolog",
"ignore" : "prolog", "ignore" : "prolog",
"import_module" : "prolog", "import_module" : "prolog",
@ -855,16 +800,17 @@
"increase_reference_count" : "prolog", "increase_reference_count" : "prolog",
"init_random_state" : "prolog", "init_random_state" : "prolog",
"initialization" : "prolog", "initialization" : "prolog",
"instance_property": "prolog",
"instance" : "prolog", "instance" : "prolog",
"instance_property" : "prolog",
"int_message" : "prolog",
"integer" : "prolog", "integer" : "prolog",
"is" : "prolog",
"is_absolute_file_name" : "prolog", "is_absolute_file_name" : "prolog",
"is_list" : "prolog", "is_list" : "prolog",
"is_mutable" : "prolog", "is_mutable" : "prolog",
"is_tabled" : "prolog", "is_tabled" : "prolog",
"isinf" : "prolog", "isinf" : "prolog",
"isnan" : "prolog", "isnan" : "prolog",
"is": "prolog",
"key_erased_statistics" : "prolog", "key_erased_statistics" : "prolog",
"key_statistics" : "prolog", "key_statistics" : "prolog",
"keysort" : "prolog", "keysort" : "prolog",
@ -879,19 +825,19 @@
"load_foreign_files" : "prolog", "load_foreign_files" : "prolog",
"log_event" : "prolog", "log_event" : "prolog",
"logsum" : "prolog", "logsum" : "prolog",
"ls_imports": "prolog",
"ls" : "prolog", "ls" : "prolog",
"ls_imports" : "prolog",
"make" : "prolog",
"make_directory" : "prolog", "make_directory" : "prolog",
"make_library_index" : "prolog", "make_library_index" : "prolog",
"make": "prolog",
"message_queue_create" : "prolog", "message_queue_create" : "prolog",
"message_queue_destroy" : "prolog", "message_queue_destroy" : "prolog",
"message_queue_property" : "prolog", "message_queue_property" : "prolog",
"message_to_string" : "prolog", "message_to_string" : "prolog",
"mmapped_array" : "prolog", "mmapped_array" : "prolog",
"module" : "prolog",
"module_property" : "prolog", "module_property" : "prolog",
"module_state" : "prolog", "module_state" : "prolog",
"module": "prolog",
"msort" : "prolog", "msort" : "prolog",
"multifile" : "prolog", "multifile" : "prolog",
"must_be_of_type" : "prolog", "must_be_of_type" : "prolog",
@ -918,38 +864,39 @@
"nofileeleerrors" : "prolog", "nofileeleerrors" : "prolog",
"nogc" : "prolog", "nogc" : "prolog",
"nonvar" : "prolog", "nonvar" : "prolog",
"nospyall": "prolog",
"nospy" : "prolog", "nospy" : "prolog",
"notrace": "prolog", "nospyall" : "prolog",
"not" : "prolog", "not" : "prolog",
"notrace" : "prolog",
"nth_clause" : "prolog", "nth_clause" : "prolog",
"nth_instance" : "prolog", "nth_instance" : "prolog",
"number" : "prolog",
"number_atom" : "prolog", "number_atom" : "prolog",
"number_chars" : "prolog", "number_chars" : "prolog",
"number_codes" : "prolog", "number_codes" : "prolog",
"number_string" : "prolog", "number_string" : "prolog",
"numbervars" : "prolog", "numbervars" : "prolog",
"number": "prolog",
"on_exception" : "prolog", "on_exception" : "prolog",
"on_signal" : "prolog", "on_signal" : "prolog",
"once" : "prolog", "once" : "prolog",
"op" : "prolog",
"opaque" : "prolog", "opaque" : "prolog",
"open" : "prolog",
"open_pipe_stream" : "prolog", "open_pipe_stream" : "prolog",
"open_shared_object" : "prolog", "open_shared_object" : "prolog",
"open": "prolog",
"opt_statistics" : "prolog", "opt_statistics" : "prolog",
"op": "prolog",
"or_statistics" : "prolog", "or_statistics" : "prolog",
"ortray_clause" : "prolog",
"otherwise" : "prolog", "otherwise" : "prolog",
"parallel" : "prolog",
"parallel_findall" : "prolog", "parallel_findall" : "prolog",
"parallel_findfirst" : "prolog", "parallel_findfirst" : "prolog",
"parallel_once" : "prolog", "parallel_once" : "prolog",
"parallel": "prolog",
"path" : "prolog", "path" : "prolog",
"peek" : "prolog",
"peek_byte" : "prolog", "peek_byte" : "prolog",
"peek_char" : "prolog", "peek_char" : "prolog",
"peek_code" : "prolog", "peek_code" : "prolog",
"peek": "prolog",
"phrase" : "prolog", "phrase" : "prolog",
"plus" : "prolog", "plus" : "prolog",
"portray_clause" : "prolog", "portray_clause" : "prolog",
@ -959,9 +906,9 @@
"predmerge" : "prolog", "predmerge" : "prolog",
"predsort" : "prolog", "predsort" : "prolog",
"primitive" : "prolog", "primitive" : "prolog",
"print_message_lines": "prolog",
"print_message": "prolog",
"print" : "prolog", "print" : "prolog",
"print_message" : "prolog",
"print_message_lines" : "prolog",
"private" : "prolog", "private" : "prolog",
"profalt" : "prolog", "profalt" : "prolog",
"profend" : "prolog", "profend" : "prolog",
@ -970,25 +917,25 @@
"profinit" : "prolog", "profinit" : "prolog",
"profoff" : "prolog", "profoff" : "prolog",
"profon" : "prolog", "profon" : "prolog",
"prolog" : "prolog",
"prolog_current_frame" : "prolog", "prolog_current_frame" : "prolog",
"prolog_file_name" : "prolog", "prolog_file_name" : "prolog",
"prolog_file_type" : "prolog", "prolog_file_type" : "prolog",
"prolog_flag_property": "prolog",
"prolog_flag" : "prolog", "prolog_flag" : "prolog",
"prolog_flag_property" : "prolog",
"prolog_initialization" : "prolog", "prolog_initialization" : "prolog",
"prolog_load_context" : "prolog", "prolog_load_context" : "prolog",
"prolog_to_os_filename" : "prolog", "prolog_to_os_filename" : "prolog",
"prolog": "prolog",
"prompt1": "prolog",
"prompt" : "prolog", "prompt" : "prolog",
"put_attrs": "prolog", "prompt1" : "prolog",
"put" : "prolog",
"put_attr" : "prolog", "put_attr" : "prolog",
"put_attrs" : "prolog",
"put_byte" : "prolog", "put_byte" : "prolog",
"put_char1": "prolog",
"put_char" : "prolog", "put_char" : "prolog",
"put_char1" : "prolog",
"put_code" : "prolog", "put_code" : "prolog",
"putenv" : "prolog", "putenv" : "prolog",
"put": "prolog",
"pwd" : "prolog", "pwd" : "prolog",
"qend_program" : "prolog", "qend_program" : "prolog",
"qload_file" : "prolog", "qload_file" : "prolog",
@ -998,24 +945,24 @@
"qsave_module" : "prolog", "qsave_module" : "prolog",
"qsave_program" : "prolog", "qsave_program" : "prolog",
"raise_exception" : "prolog", "raise_exception" : "prolog",
"rational_term_to_tree": "prolog",
"rational" : "prolog", "rational" : "prolog",
"rational_term_to_tree" : "prolog",
"read" : "prolog",
"read_clause" : "prolog", "read_clause" : "prolog",
"read_sig" : "prolog", "read_sig" : "prolog",
"read_term_from_atomic": "prolog",
"read_term_from_atom": "prolog",
"read_term_from_string": "prolog",
"read_term" : "prolog", "read_term" : "prolog",
"read": "prolog", "read_term_from_atom" : "prolog",
"read_term_from_atomic" : "prolog",
"read_term_from_string" : "prolog",
"real_path" : "prolog", "real_path" : "prolog",
"reconsult" : "prolog", "reconsult" : "prolog",
"recorda" : "prolog",
"recorda_at" : "prolog", "recorda_at" : "prolog",
"recordaifnot" : "prolog", "recordaifnot" : "prolog",
"recorda": "prolog",
"recorded" : "prolog", "recorded" : "prolog",
"recordz" : "prolog",
"recordz_at" : "prolog", "recordz_at" : "prolog",
"recordzifnot" : "prolog", "recordzifnot" : "prolog",
"recordz": "prolog",
"release_random_state" : "prolog", "release_random_state" : "prolog",
"remove_from_path" : "prolog", "remove_from_path" : "prolog",
"rename" : "prolog", "rename" : "prolog",
@ -1024,21 +971,21 @@
"reset_total_choicepoints" : "prolog", "reset_total_choicepoints" : "prolog",
"resize_static_array" : "prolog", "resize_static_array" : "prolog",
"restore" : "prolog", "restore" : "prolog",
"retractall": "prolog",
"retract" : "prolog", "retract" : "prolog",
"retractall" : "prolog",
"rmdir" : "prolog", "rmdir" : "prolog",
"same_file" : "prolog", "same_file" : "prolog",
"save_program" : "prolog", "save_program" : "prolog",
"see" : "prolog",
"seeing" : "prolog", "seeing" : "prolog",
"seen" : "prolog", "seen" : "prolog",
"see": "prolog",
"set_base_module" : "prolog", "set_base_module" : "prolog",
"set_input" : "prolog", "set_input" : "prolog",
"set_output" : "prolog", "set_output" : "prolog",
"set_prolog_flag" : "prolog", "set_prolog_flag" : "prolog",
"set_random_state" : "prolog", "set_random_state" : "prolog",
"set_stream_position": "prolog",
"set_stream" : "prolog", "set_stream" : "prolog",
"set_stream_position" : "prolog",
"set_value" : "prolog", "set_value" : "prolog",
"setarg" : "prolog", "setarg" : "prolog",
"setenv" : "prolog", "setenv" : "prolog",
@ -1046,57 +993,57 @@
"setup_call_catcher_cleanup" : "prolog", "setup_call_catcher_cleanup" : "prolog",
"setup_call_cleanup" : "prolog", "setup_call_cleanup" : "prolog",
"sformat" : "prolog", "sformat" : "prolog",
"sh" : "prolog",
"show_all_local_tables" : "prolog", "show_all_local_tables" : "prolog",
"show_all_tables" : "prolog", "show_all_tables" : "prolog",
"show_global_trieshow_tabled_predicates": "prolog",
"show_global_trie" : "prolog", "show_global_trie" : "prolog",
"show_global_trieshow_tabled_predicates" : "prolog",
"show_low_level_trace" : "prolog", "show_low_level_trace" : "prolog",
"show_tabled_predicates": "prolog",
"show_table" : "prolog", "show_table" : "prolog",
"show_tabled_predicates" : "prolog",
"showprofres" : "prolog", "showprofres" : "prolog",
"sh": "prolog",
"simple" : "prolog", "simple" : "prolog",
"skip1": "prolog",
"skip" : "prolog", "skip" : "prolog",
"skip1" : "prolog",
"socket" : "prolog",
"socket_accept" : "prolog", "socket_accept" : "prolog",
"socket_bind" : "prolog", "socket_bind" : "prolog",
"socket_close" : "prolog", "socket_close" : "prolog",
"socket_connect" : "prolog", "socket_connect" : "prolog",
"socket_listen" : "prolog", "socket_listen" : "prolog",
"socket": "prolog",
"sort2": "prolog",
"sort" : "prolog", "sort" : "prolog",
"source_file_property": "prolog", "sort2" : "prolog",
"source" : "prolog",
"source_file" : "prolog", "source_file" : "prolog",
"source_file_property" : "prolog",
"source_location" : "prolog", "source_location" : "prolog",
"source_mode" : "prolog", "source_mode" : "prolog",
"source_module" : "prolog", "source_module" : "prolog",
"source": "prolog",
"split_path_file" : "prolog", "split_path_file" : "prolog",
"spy" : "prolog", "spy" : "prolog",
"srandom" : "prolog", "srandom" : "prolog",
"start_low_level_trace" : "prolog", "start_low_level_trace" : "prolog",
"stash_predicate" : "prolog", "stash_predicate" : "prolog",
"static_array" : "prolog",
"static_array_location" : "prolog", "static_array_location" : "prolog",
"static_array_properties" : "prolog", "static_array_properties" : "prolog",
"static_array_to_term" : "prolog", "static_array_to_term" : "prolog",
"static_array": "prolog",
"statistics" : "prolog", "statistics" : "prolog",
"stop_low_level_trace" : "prolog", "stop_low_level_trace" : "prolog",
"stream_position_data": "prolog",
"stream_position" : "prolog", "stream_position" : "prolog",
"stream_position_data" : "prolog",
"stream_property" : "prolog", "stream_property" : "prolog",
"stream_select" : "prolog", "stream_select" : "prolog",
"string" : "prolog",
"string_chars" : "prolog", "string_chars" : "prolog",
"string_codes": "prolog",
"string_code" : "prolog", "string_code" : "prolog",
"string_codes" : "prolog",
"string_concat" : "prolog", "string_concat" : "prolog",
"string_length" : "prolog", "string_length" : "prolog",
"string_number" : "prolog", "string_number" : "prolog",
"string_to_atomic": "prolog",
"string_to_atom" : "prolog", "string_to_atom" : "prolog",
"string_to_atomic" : "prolog",
"string_to_list" : "prolog", "string_to_list" : "prolog",
"string": "prolog",
"strip_module" : "prolog", "strip_module" : "prolog",
"style_check" : "prolog", "style_check" : "prolog",
"sub_atom" : "prolog", "sub_atom" : "prolog",
@ -1104,24 +1051,24 @@
"subsumes_term" : "prolog", "subsumes_term" : "prolog",
"succ" : "prolog", "succ" : "prolog",
"sys_debug" : "prolog", "sys_debug" : "prolog",
"system" : "prolog",
"system_error" : "prolog", "system_error" : "prolog",
"system_library" : "prolog", "system_library" : "prolog",
"system_module" : "prolog", "system_module" : "prolog",
"system_predicate" : "prolog", "system_predicate" : "prolog",
"system": "prolog",
"t_body" : "prolog", "t_body" : "prolog",
"t_head" : "prolog", "t_head" : "prolog",
"t_hgoal" : "prolog", "t_hgoal" : "prolog",
"t_hlist" : "prolog", "t_hlist" : "prolog",
"t_tidy" : "prolog", "t_tidy" : "prolog",
"tab" : "prolog",
"tab1" : "prolog", "tab1" : "prolog",
"table_statistics": "prolog",
"table" : "prolog", "table" : "prolog",
"table_statistics" : "prolog",
"tabling_mode" : "prolog", "tabling_mode" : "prolog",
"tabling_statistics" : "prolog", "tabling_statistics" : "prolog",
"tab": "prolog",
"telling": "prolog",
"tell" : "prolog", "tell" : "prolog",
"telling" : "prolog",
"term_attvars" : "prolog", "term_attvars" : "prolog",
"term_factorized" : "prolog", "term_factorized" : "prolog",
"term_to_atom" : "prolog", "term_to_atom" : "prolog",
@ -1130,8 +1077,8 @@
"thread_at_exit" : "prolog", "thread_at_exit" : "prolog",
"thread_cancel" : "prolog", "thread_cancel" : "prolog",
"thread_create" : "prolog", "thread_create" : "prolog",
"thread_defaults": "prolog",
"thread_default" : "prolog", "thread_default" : "prolog",
"thread_defaults" : "prolog",
"thread_detach" : "prolog", "thread_detach" : "prolog",
"thread_exit" : "prolog", "thread_exit" : "prolog",
"thread_get_message" : "prolog", "thread_get_message" : "prolog",
@ -1141,27 +1088,27 @@
"thread_property" : "prolog", "thread_property" : "prolog",
"thread_self" : "prolog", "thread_self" : "prolog",
"thread_send_message" : "prolog", "thread_send_message" : "prolog",
"thread_set_defaults": "prolog",
"thread_set_default" : "prolog", "thread_set_default" : "prolog",
"thread_set_defaults" : "prolog",
"thread_signal" : "prolog", "thread_signal" : "prolog",
"thread_sleep" : "prolog", "thread_sleep" : "prolog",
"thread_statistics" : "prolog", "thread_statistics" : "prolog",
"threads" : "prolog", "threads" : "prolog",
"throw" : "prolog", "throw" : "prolog",
"time_file64": "prolog",
"time_file": "prolog",
"time" : "prolog", "time" : "prolog",
"time_file" : "prolog",
"time_file64" : "prolog",
"told" : "prolog", "told" : "prolog",
"tolower" : "prolog", "tolower" : "prolog",
"total_choicepoints" : "prolog", "total_choicepoints" : "prolog",
"total_erased" : "prolog", "total_erased" : "prolog",
"toupper" : "prolog", "toupper" : "prolog",
"trace" : "prolog", "trace" : "prolog",
"true_file_name": "prolog",
"true" : "prolog", "true" : "prolog",
"true_file_name" : "prolog",
"tthread_peek_message" : "prolog", "tthread_peek_message" : "prolog",
"ttyget0": "prolog",
"ttyget" : "prolog", "ttyget" : "prolog",
"ttyget0" : "prolog",
"ttynl" : "prolog", "ttynl" : "prolog",
"ttyput" : "prolog", "ttyput" : "prolog",
"ttyskip" : "prolog", "ttyskip" : "prolog",
@ -1186,12 +1133,12 @@
"with_mutex" : "prolog", "with_mutex" : "prolog",
"with_output_to" : "prolog", "with_output_to" : "prolog",
"working_directory" : "prolog", "working_directory" : "prolog",
"write" : "prolog",
"write_canonical" : "prolog", "write_canonical" : "prolog",
"write_depth" : "prolog", "write_depth" : "prolog",
"write_term" : "prolog", "write_term" : "prolog",
"writeln" : "prolog", "writeln" : "prolog",
"writeq" : "prolog", "writeq" : "prolog",
"write": "prolog",
"yap_flag" : "prolog" "yap_flag" : "prolog"
}; };
@ -1211,13 +1158,10 @@
curToken : null /* token in term */ curToken : null /* token in term */
}; };
}, },
token : function(stream, state) { token : function(stream, state) {
var nest; // var nest;
if ( state.curTerm == null && mode if (state.curTerm == null && parserConfig.metainfo) {
Config.metainfo ) {
state.curTerm = 0; state.curTerm = 0;
state.curToken = 0; state.curToken = 0;
} }
@ -1246,16 +1190,22 @@
state.lastType = type; state.lastType = type;
if (builtins[state.curToken] == "prolog") if (builtins[state.curToken] == "prolog")
return "builtin"; return "builtin";
if (ops[state.curToken]) if (ops[state.curToken])
return "operator"; return "operator";
if (typeof(parserConfig.enrich) == "function")
style = parserConfig.enrich(stream, state, type, content, style);
return style;
return translType[type]; return translType[type];
}, },
indent : function(state, textAfter) { indent : function(state, textAfter) {
if (state.tokenize == plTokenComment) return CodeMirror.Pass; if (state.tokenize == plTokenComment)
return CodeMirror.Pass;
var nest; var nest;
if ((nest = nesting(state))) { if ((nest = nesting(state))) {
@ -1280,4 +1230,5 @@
}); });
CodeMirror.defineMIME("text/x-prolog", "prolog"); CodeMirror.defineMIME("text/x-prolog", "prolog");
}); });