1 <?xml version="1.0"?>
\r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
\r
5 <!-- jEdit Prolog syntax file
\r
6 based on the INRIA ISO Prolog web page @ http://pauillac.inria.fr/~hodgson/prolog
\r
8 written by Giulio Piancastelli
\r
10 created on 31st December 2001
\r
11 last revised 19th November 2002
\r
16 <PROPERTY NAME="lineComment" VALUE="%" />
\r
17 <PROPERTY NAME="commentStart" VALUE="/*" />
\r
18 <PROPERTY NAME="commentEnd" VALUE="*/" />
\r
20 <RULES ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE">
\r
23 <EOL_SPAN TYPE="COMMENT1">%</EOL_SPAN>
\r
24 <!--- ISO compliant C-style comments -->
\r
25 <SPAN TYPE="COMMENT1">
\r
30 <!-- String literals -->
\r
31 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
\r
35 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
\r
40 <!-- List literals -->
\r
41 <SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE" DELEGATE="LIST">
\r
47 <SEQ TYPE="OPERATOR">--></SEQ>
\r
48 <SEQ TYPE="OPERATOR">:-</SEQ>
\r
49 <SEQ TYPE="OPERATOR">?-</SEQ>
\r
50 <SEQ TYPE="OPERATOR">;</SEQ>
\r
51 <SEQ TYPE="OPERATOR">-></SEQ>
\r
52 <SEQ TYPE="OPERATOR">,</SEQ>
\r
53 <SEQ TYPE="OPERATOR">\+</SEQ> <!-- ISO Prolog uses it instead of 'not' -->
\r
54 <SEQ TYPE="OPERATOR">==</SEQ>
\r
55 <SEQ TYPE="OPERATOR">\==</SEQ>
\r
56 <SEQ TYPE="OPERATOR">\=</SEQ>
\r
57 <SEQ TYPE="OPERATOR">@<</SEQ>
\r
58 <SEQ TYPE="OPERATOR">@=<</SEQ>
\r
59 <SEQ TYPE="OPERATOR">@>=</SEQ>
\r
60 <SEQ TYPE="OPERATOR">@></SEQ>
\r
61 <SEQ TYPE="OPERATOR">=..</SEQ>
\r
62 <SEQ TYPE="OPERATOR">=:=</SEQ>
\r
63 <SEQ TYPE="OPERATOR">=\=</SEQ>
\r
64 <SEQ TYPE="OPERATOR">=<</SEQ>
\r
65 <SEQ TYPE="OPERATOR">>=</SEQ>
\r
66 <SEQ TYPE="OPERATOR">+</SEQ>
\r
67 <SEQ TYPE="OPERATOR">-</SEQ>
\r
68 <SEQ TYPE="OPERATOR">/\</SEQ>
\r
69 <SEQ TYPE="OPERATOR">\/</SEQ>
\r
70 <SEQ TYPE="OPERATOR">//</SEQ>
\r
71 <SEQ TYPE="OPERATOR"><<</SEQ>
\r
72 <SEQ TYPE="OPERATOR"><</SEQ>
\r
73 <SEQ TYPE="OPERATOR">>></SEQ>
\r
74 <SEQ TYPE="OPERATOR">></SEQ>
\r
75 <SEQ TYPE="OPERATOR">**</SEQ>
\r
76 <SEQ TYPE="OPERATOR">^</SEQ>
\r
77 <SEQ TYPE="OPERATOR">\</SEQ>
\r
78 <SEQ TYPE="OPERATOR">/</SEQ>
\r
79 <SEQ TYPE="OPERATOR">=</SEQ>
\r
80 <SEQ TYPE="OPERATOR">*</SEQ>
\r
82 <!-- The '.' at the end of each clause -->
\r
83 <SEQ TYPE="OPERATOR">.</SEQ>
\r
85 <!-- Parentheses -->
\r
86 <SEQ TYPE="MARKUP">(</SEQ>
\r
87 <SEQ TYPE="MARKUP">)</SEQ>
\r
88 <SEQ TYPE="NULL">{</SEQ>
\r
89 <SEQ TYPE="NULL">}</SEQ>
\r
93 <!-- Keywords that are 0 arity built-in predicates -->
\r
94 <KEYWORD1>true</KEYWORD1>
\r
95 <KEYWORD1>fail</KEYWORD1>
\r
96 <KEYWORD1>!</KEYWORD1> <!-- cut -->
\r
97 <KEYWORD1>at_end_of_stream</KEYWORD1>
\r
98 <KEYWORD1>nl</KEYWORD1>
\r
99 <KEYWORD1>repeat</KEYWORD1>
\r
100 <KEYWORD1>halt</KEYWORD1>
\r
102 <!-- Keywords that are built-in predicates with arity greater than or equal to 1 -->
\r
103 <FUNCTION>call</FUNCTION>
\r
104 <FUNCTION>catch</FUNCTION>
\r
105 <FUNCTION>throw</FUNCTION>
\r
106 <FUNCTION>unify_with_occurs_check</FUNCTION>
\r
107 <FUNCTION>var</FUNCTION>
\r
108 <FUNCTION>atom</FUNCTION>
\r
109 <FUNCTION>integer</FUNCTION>
\r
110 <FUNCTION>float</FUNCTION>
\r
111 <FUNCTION>atomic</FUNCTION>
\r
112 <FUNCTION>compound</FUNCTION>
\r
113 <FUNCTION>nonvar</FUNCTION>
\r
114 <FUNCTION>number</FUNCTION>
\r
115 <FUNCTION>functor</FUNCTION>
\r
116 <FUNCTION>arg</FUNCTION>
\r
117 <FUNCTION>copy_term</FUNCTION>
\r
118 <FUNCTION>clause</FUNCTION>
\r
119 <FUNCTION>current_predicate</FUNCTION>
\r
120 <FUNCTION>asserta</FUNCTION>
\r
121 <FUNCTION>assertz</FUNCTION>
\r
122 <FUNCTION>retract</FUNCTION>
\r
123 <FUNCTION>abolish</FUNCTION>
\r
124 <FUNCTION>findall</FUNCTION>
\r
125 <FUNCTION>bagof</FUNCTION>
\r
126 <FUNCTION>setof</FUNCTION>
\r
127 <FUNCTION>current_input</FUNCTION>
\r
128 <FUNCTION>current_output</FUNCTION>
\r
129 <FUNCTION>set_input</FUNCTION>
\r
130 <FUNCTION>set_output</FUNCTION>
\r
131 <FUNCTION>open</FUNCTION>
\r
132 <FUNCTION>close</FUNCTION>
\r
133 <FUNCTION>stream_property</FUNCTION>
\r
134 <FUNCTION>at_end_of_stream</FUNCTION> <!-- arity 1 -->
\r
135 <FUNCTION>set_stream_position</FUNCTION>
\r
136 <FUNCTION>get_char</FUNCTION>
\r
137 <FUNCTION>get_code</FUNCTION>
\r
138 <FUNCTION>peek_char</FUNCTION>
\r
139 <FUNCTION>peek_code</FUNCTION>
\r
140 <FUNCTION>put_char</FUNCTION>
\r
141 <FUNCTION>put_code</FUNCTION>
\r
142 <FUNCTION>nl</FUNCTION> <!-- arity 1 -->
\r
143 <FUNCTION>get_byte</FUNCTION>
\r
144 <FUNCTION>peek_byte</FUNCTION>
\r
145 <FUNCTION>put_byte</FUNCTION>
\r
146 <FUNCTION>read_term</FUNCTION>
\r
147 <FUNCTION>read</FUNCTION>
\r
148 <FUNCTION>write_term</FUNCTION>
\r
149 <FUNCTION>write</FUNCTION>
\r
150 <FUNCTION>writeq</FUNCTION>
\r
151 <FUNCTION>write_canonical</FUNCTION>
\r
152 <FUNCTION>op</FUNCTION>
\r
153 <FUNCTION>current_op</FUNCTION>
\r
154 <FUNCTION>char_conversion</FUNCTION>
\r
155 <FUNCTION>current_char_conversion</FUNCTION>
\r
156 <FUNCTION>once</FUNCTION>
\r
157 <FUNCTION>atom_length</FUNCTION>
\r
158 <FUNCTION>atom_concat</FUNCTION>
\r
159 <FUNCTION>sub_atom</FUNCTION>
\r
160 <FUNCTION>atom_chars</FUNCTION>
\r
161 <FUNCTION>atom_codes</FUNCTION>
\r
162 <FUNCTION>char_code</FUNCTION>
\r
163 <FUNCTION>number_chars</FUNCTION>
\r
164 <FUNCTION>number_codes</FUNCTION>
\r
165 <FUNCTION>set_prolog_flag</FUNCTION>
\r
166 <FUNCTION>current_prolog_flag</FUNCTION>
\r
167 <FUNCTION>halt</FUNCTION> <!-- arity 1 -->
\r
169 <!-- Mathematical functions -->
\r
170 <FUNCTION>sin</FUNCTION>
\r
171 <FUNCTION>cos</FUNCTION>
\r
172 <FUNCTION>atan</FUNCTION>
\r
173 <FUNCTION>exp</FUNCTION>
\r
174 <FUNCTION>log</FUNCTION>
\r
175 <FUNCTION>sqrt</FUNCTION>
\r
177 <!-- Keywords that should be operators -->
\r
178 <KEYWORD2>is</KEYWORD2>
\r
179 <KEYWORD2>rem</KEYWORD2>
\r
180 <KEYWORD2>mod</KEYWORD2>
\r
182 <!-- Singleton variable -->
\r
183 <KEYWORD3>_</KEYWORD3>
\r
189 <RULES SET="LIST" DEFAULT="LITERAL2">
\r
190 <SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE" DELEGATE="LIST">
\r