ace.define("ace/mode/prolog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(r,e,m){"use strict";var o=r("../lib/oop");var T=r("./text_highlight_rules").TextHighlightRules;var P=function(){this.$rules={start:[{include:'#comment'},{include:'#basic_fact'},{include:'#rule'},{include:'#directive'},{include:'#fact'}],'#atom':[{token:'constant.other.atom.prolog',regex:'\\b[a-z][a-zA-Z0-9_]*\\b'},{token:'constant.numeric.prolog',regex:'-?\\d+(?:\\.\\d+)?'},{include:'#string'}],'#basic_elem':[{include:'#comment'},{include:'#statement'},{include:'#constants'},{include:'#operators'},{include:'#builtins'},{include:'#list'},{include:'#atom'},{include:'#variable'}],'#basic_fact':[{token:['entity.name.function.fact.basic.prolog','punctuation.end.fact.basic.prolog'],regex:'([a-z]\\w*)(\\.)'}],'#builtins':[{token:'support.function.builtin.prolog',regex:'\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\b'}],'#comment':[{token:['punctuation.definition.comment.prolog','comment.line.percentage.prolog'],regex:'(%)(.*$)'},{token:'punctuation.definition.comment.prolog',regex:'/\\*',push:[{token:'punctuation.definition.comment.prolog',regex:'\\*/',next:'pop'},{defaultToken:'comment.block.prolog'}]}],'#constants':[{token:'constant.language.prolog',regex:'\\b(?:true|false|yes|no)\\b'}],'#directive':[{token:'keyword.operator.directive.prolog',regex:':-',push:[{token:'meta.directive.prolog',regex:'\\.',next:'pop'},{include:'#comment'},{include:'#statement'},{defaultToken:'meta.directive.prolog'}]}],'#expr':[{include:'#comments'},{token:'meta.expression.prolog',regex:'\\(',push:[{token:'meta.expression.prolog',regex:'\\)',next:'pop'},{include:'#expr'},{defaultToken:'meta.expression.prolog'}]},{token:'keyword.control.cutoff.prolog',regex:'!'},{token:'punctuation.control.and.prolog',regex:','},{token:'punctuation.control.or.prolog',regex:';'},{include:'#basic_elem'}],'#fact':[{token:['entity.name.function.fact.prolog','punctuation.begin.fact.parameters.prolog'],regex:'([a-z]\\w*)(\\()(?!.*:-)',push:[{token:['punctuation.end.fact.parameters.prolog','punctuation.end.fact.prolog'],regex:'(\\))(\\.?)',next:'pop'},{include:'#parameter'},{defaultToken:'meta.fact.prolog'}]}],'#list':[{token:'punctuation.begin.list.prolog',regex:'\\[(?=.*\\])',push:[{token:'punctuation.end.list.prolog',regex:'\\]',next:'pop'},{include:'#comment'},{token:'punctuation.separator.list.prolog',regex:','},{token:'punctuation.concat.list.prolog',regex:'\\|',push:[{token:'meta.list.concat.prolog',regex:'(?=\\s*\\])',next:'pop'},{include:'#basic_elem'},{defaultToken:'meta.list.concat.prolog'}]},{include:'#basic_elem'},{defaultToken:'meta.list.prolog'}]}],'#operators':[{token:'keyword.operator.prolog',regex:'\\\\\\+|\\bnot\\b|\\bis\\b|->|[><]|[><\\\\:=]?=|(?:=\\\\|\\\\=)='}],'#parameter':[{token:'variable.language.anonymous.prolog',regex:'\\b_\\b'},{token:'variable.parameter.prolog',regex:'\\b[A-Z_]\\w*\\b'},{token:'punctuation.separator.parameters.prolog',regex:','},{include:'#basic_elem'},{token:'text',regex:'[^\\s]'}],'#rule':[{token:'meta.rule.prolog',regex:'(?=[a-z]\\w*.*:-)',push:[{token:'punctuation.rule.end.prolog',regex:'\\.',next:'pop'},{token:'meta.rule.signature.prolog',regex:'(?=[a-z]\\w*.*:-)',push:[{token:'meta.rule.signature.prolog',regex:'(?=:-)',next:'pop'},{token:'entity.name.function.rule.prolog',regex:'[a-z]\\w*(?=\\(|\\s*:-)'},{token:'punctuation.rule.parameters.begin.prolog',regex:'\\(',push:[{token:'punctuation.rule.parameters.end.prolog',regex:'\\)',next:'pop'},{include:'#parameter'},{defaultToken:'meta.rule.parameters.prolog'}]},{defaultToken:'meta.rule.signature.prolog'}]},{token:'keyword.operator.definition.prolog',regex:':-',push:[{token:'meta.rule.definition.prolog',regex:'(?=\\.)',next:'pop'},{include:'#comment'},{include:'#expr'},{defaultToken:'meta.rule.definition.prolog'}]},{defaultToken:'meta.rule.prolog'}]}],'#statement':[{token:'meta.statement.prolog',regex:'(?=[a-z]\\w*\\()',push:[{token:'punctuation.end.statement.parameters.prolog',regex:'\\)',next:'pop'},{include:'#builtins'},{include:'#atom'},{token:'punctuation.begin.statement.parameters.prolog',regex:'\\(',push:[{token:'meta.statement.parameters.prolog',regex:'(?=\\))',next:'pop'},{token:'punctuation.separator.statement.prolog',regex:','},{include:'#basic_elem'},{defaultToken:'meta.statement.parameters.prolog'}]},{defaultToken:'meta.statement.prolog'}]}],'#string':[{token:'punctuation.definition.string.begin.prolog',regex:'\'',push:[{token:'punctuation.definition.string.end.prolog',regex:'\'',next:'pop'},{token:'constant.character.escape.prolog',regex:'\\\\.'},{token:'constant.character.escape.quote.prolog',regex:'\'\''},{defaultToken:'string.quoted.single.prolog'}]}],'#variable':[{token:'variable.language.anonymous.prolog',regex:'\\b_\\b'},{token:'variable.other.prolog',regex:'\\b[A-Z_][a-zA-Z0-9_]*\\b'}]};this.normalizeRules();};P.metaData={fileTypes:['plg','prolog'],foldingStartMarker:'(%\\s*region \\w*)|([a-z]\\w*.*:- ?)',foldingStopMarker:'(%\\s*end(\\s*region)?)|(?=\\.)',keyEquivalent:'^~P',name:'Prolog',scopeName:'source.prolog'};o.inherits(P,T);e.PrologHighlightRules=P;});ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(r,e,a){"use strict";var o=r("../../lib/oop");var R=r("../../range").Range;var B=r("./fold_mode").FoldMode;var F=e.FoldMode=function(c){if(c){this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+c.start));this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+c.end));}};o.inherits(F,B);(function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/;this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/;this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/;this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/;this._getFoldWidgetBase=this.getFoldWidget;this.getFoldWidget=function(s,f,b){var l=s.getLine(b);if(this.singleLineBlockCommentRe.test(l)){if(!this.startRegionRe.test(l)&&!this.tripleStarBlockCommentRe.test(l))return"";}var c=this._getFoldWidgetBase(s,f,b);if(!c&&this.startRegionRe.test(l))return"start";return c;};this.getFoldWidgetRange=function(s,f,b,c){var l=s.getLine(b);if(this.startRegionRe.test(l))return this.getCommentRegionBlock(s,l,b);var m=l.match(this.foldingStartMarker);if(m){var i=m.index;if(m[1])return this.openingBracketBlock(s,m[1],b,i);var d=s.getCommentFoldRange(b,i+m[0].length,1);if(d&&!d.isMultiLine()){if(c){d=this.getSectionRange(s,b);}else if(f!="all")d=null;}return d;}if(f==="markbegin")return;var m=l.match(this.foldingStopMarker);if(m){var i=m.index+m[0].length;if(m[1])return this.closingBracketBlock(s,m[1],b,i);return s.getCommentFoldRange(b,i,-1);}};this.getSectionRange=function(s,b){var l=s.getLine(b);var c=l.search(/\S/);var d=b;var f=l.length;b=b+1;var g=b;var m=s.getLength();while(++bi)break;var h=this.getFoldWidgetRange(s,"all",b);if(h){if(h.start.row<=d){break;}else if(h.isMultiLine()){b=h.end.row;}else if(c==i){break;}}g=b;}return new R(d,f,g,s.getLine(g).length);};this.getCommentRegionBlock=function(s,l,b){var c=l.search(/\s*$/);var d=s.getLength();var f=b;var g=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;var h=1;while(++bf){return new R(f,c,i,l.length);}};}).call(F.prototype);});ace.define("ace/mode/prolog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prolog_highlight_rules","ace/mode/folding/cstyle"],function(r,e,m){"use strict";var o=r("../lib/oop");var T=r("./text").Mode;var P=r("./prolog_highlight_rules").PrologHighlightRules;var F=r("./folding/cstyle").FoldMode;var M=function(){this.HighlightRules=P;this.foldingRules=new F();this.$behaviour=this.$defaultBehaviour;};o.inherits(M,T);(function(){this.lineCommentStart="%";this.blockComment={start:"/*",end:"*/"};this.$id="ace/mode/prolog";}).call(M.prototype);e.Mode=M;});