]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/prolog.xml
bd5adbd9a891edcbdd1baef29bc169b51c19f878
[factor.git] / basis / xmode / modes / prolog.xml
1 <?xml version="1.0"?>\r
2 \r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">\r
4 \r
5 <!--    jEdit Prolog syntax file\r
6         based on the INRIA ISO Prolog web page @ http://pauillac.inria.fr/~hodgson/prolog\r
7 \r
8         written by      Giulio Piancastelli\r
9         version         1.0\r
10         created on      31st December 2001\r
11         last revised    19th November 2002\r
12 -->\r
13 \r
14 <MODE>\r
15         <PROPS>\r
16                 <PROPERTY NAME="lineComment" VALUE="%" />\r
17                 <PROPERTY NAME="commentStart" VALUE="/*" />\r
18                 <PROPERTY NAME="commentEnd" VALUE="*/" />\r
19         </PROPS>\r
20         <RULES ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE">\r
21         \r
22                 <!-- Comments -->\r
23                 <EOL_SPAN TYPE="COMMENT1">%</EOL_SPAN>\r
24                 <!--- ISO compliant C-style comments -->\r
25                 <SPAN TYPE="COMMENT1">\r
26                         <BEGIN>/*</BEGIN>\r
27                         <END>*/</END>\r
28                 </SPAN>\r
29                 \r
30                 <!-- String literals -->\r
31                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
32                         <BEGIN>'</BEGIN>\r
33                         <END>'</END>\r
34                 </SPAN>\r
35                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
36                         <BEGIN>"</BEGIN>\r
37                         <END>"</END>\r
38                 </SPAN>\r
39                 \r
40                 <!-- List literals -->\r
41                 <SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE" DELEGATE="LIST">\r
42                         <BEGIN>[</BEGIN>\r
43                         <END>]</END>\r
44                 </SPAN>\r
45                 \r
46                 <!-- Operators -->\r
47                 <SEQ TYPE="OPERATOR">--&gt;</SEQ>\r
48                 <SEQ TYPE="OPERATOR">:-</SEQ>\r
49                 <SEQ TYPE="OPERATOR">?-</SEQ>\r
50                 <SEQ TYPE="OPERATOR">;</SEQ>\r
51                 <SEQ TYPE="OPERATOR">-&gt;</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">@&lt;</SEQ>\r
58                 <SEQ TYPE="OPERATOR">@=&lt;</SEQ>\r
59                 <SEQ TYPE="OPERATOR">@&gt;=</SEQ>\r
60                 <SEQ TYPE="OPERATOR">@&gt;</SEQ>\r
61                 <SEQ TYPE="OPERATOR">=..</SEQ>\r
62                 <SEQ TYPE="OPERATOR">=:=</SEQ>\r
63                 <SEQ TYPE="OPERATOR">=\=</SEQ>\r
64                 <SEQ TYPE="OPERATOR">=&lt;</SEQ>\r
65                 <SEQ TYPE="OPERATOR">&gt;=</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">&lt;&lt;</SEQ>\r
72                 <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
73                 <SEQ TYPE="OPERATOR">&gt;&gt;</SEQ>\r
74                 <SEQ TYPE="OPERATOR">&gt;</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
81                 \r
82                 <!-- The '.' at the end of each clause -->\r
83                 <SEQ TYPE="OPERATOR">.</SEQ>\r
84                 \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
90                 \r
91                 <KEYWORDS>\r
92                 \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
101                         \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
168                         \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
176                         \r
177                         <!-- Keywords that should be operators -->\r
178                         <KEYWORD2>is</KEYWORD2>\r
179                         <KEYWORD2>rem</KEYWORD2>\r
180                         <KEYWORD2>mod</KEYWORD2>\r
181                         \r
182                         <!-- Singleton variable -->\r
183                         <KEYWORD3>_</KEYWORD3>\r
184                         \r
185                 </KEYWORDS>\r
186                 \r
187         </RULES>\r
188 \r
189         <RULES SET="LIST" DEFAULT="LITERAL2">\r
190                 <SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE" DELEGATE="LIST">\r
191                         <BEGIN>[</BEGIN>\r
192                         <END>]</END>\r
193                 </SPAN>\r
194         </RULES>\r
195 </MODE>\r