Warning, /frameworks/syntax-highlighting/autotests/folding/highlight.lgt.fold is written in an unsupported language. File is not indexed.
0001 <beginfold id='1'>/*</beginfold id='1'> 0002 Highlighting test case for Logtalk 0003 0004 Copied from the Logtalk distribution by the Logtalk copright holder 0005 and contributed using the Apache License 2.0 0006 <endfold id='1'>*/</endfold id='1'> 0007 0008 :- encoding(Encoding). % this is a single-line comment 0009 0010 <beginfold id='1'>/*</beginfold id='1'> 0011 this is 0012 a block 0013 comment 0014 <endfold id='1'>*/</endfold id='1'> 0015 0016 0017 :- <beginfold id='2'>if</beginfold id='2'>(Goal). 0018 % conditional 0019 :- elif(Goal). 0020 % compilation 0021 :- else. 0022 % directives 0023 :- <endfold id='2'>endif</endfold id='2'>. 0024 0025 0026 :- initialization(Goal). 0027 :- op(Precedence, Associativity, Operator). 0028 :- ensure_loaded(File). 0029 :- include(File). 0030 :- set_prolog_flag(Flag, Value). 0031 :- set_logtalk_flag(Flag, Value). 0032 0033 0034 :- <beginfold id='3'>object</beginfold id='3'>(prototype, 0035 implements(protocol), 0036 imports(category), 0037 extends(parent)). 0038 0039 :- info([ 0040 version is 1:47:0, 0041 author is 'Paulo Moura', 0042 date is 2019-09-18, 0043 comment is 'Sample prototype for testing syntax coloring.' 0044 ]). 0045 0046 :- built_in. 0047 :- threaded. 0048 :- dynamic. 0049 0050 :- initialization(some_goal(X, Y)). 0051 0052 :- uses([ 0053 foobar as fb 0054 ]). 0055 0056 :- alias(set, [member/2 as set_member/2]). 0057 :- alias(words, [singular//0 as peculiar//0]). 0058 0059 :- uses(list, [append/3, member/2]). 0060 :- uses(queues, [new/1 as new_queue/1]). 0061 0062 :- use_module(module). 0063 :- use_module(module, [append/3, member/2]). 0064 0065 :- multifile(zzz/1). 0066 :- multifile(module:zzz/1). 0067 :- multifile(object::zzz/1). 0068 0069 :- coinductive(comember/1). 0070 0071 :- use_module(module, [xxx/1, yyy/2, zzz/3]). 0072 :- export(bbb/3). 0073 :- reexport(cccc/4). 0074 0075 :- public(aaa/2). 0076 :- meta_predicate(aaa(::, *)). 0077 :- discontiguous(aaa/2). 0078 :- mode(aaa(+callable, ?integer), zero_or_one). 0079 :- info(position/2, [ 0080 comment is 'Predicate brief description.', 0081 arguments is ['Arg1'-'Arg1 description', 'Arg2'-'Arg2 description'] 0082 ]). 0083 0084 :- public(nt//2). 0085 :- meta_non_terminal(nt(1, *)). 0086 0087 :- protected(bbb/2). 0088 :- synchronized(bbb/2). 0089 :- mode(bbb(+integer, -float), one). 0090 :- info(bbb/2, [ 0091 comment is 'Predicate brief description.', 0092 argnames is ['Arg1', 'Arg2'] 0093 ]). 0094 0095 :- private(ccc/2). 0096 :- dynamic(ccc/2). 0097 :- mode(ccc(@atom, ?atom, ++list, --ground), one_or_more). 0098 :- info(ccc/2, [ 0099 comment is 'Predicate brief description.', 0100 argnames is ['Arg1', 'Arg2'] 0101 ]). 0102 0103 enumerating_entities(Object, Protocol, Category) :- 0104 current_category(Category), 0105 current_object(Object), 0106 current_protocol(Protocol). 0107 0108 enumerating_properties :- 0109 category_property(Category, Property), 0110 object_property(Object, Property), 0111 protocol_property(Protocol, Property). 0112 0113 creating_entities(Object, Protocol, Category) :- 0114 create_category(Category, Relations, Directives, Clauses), 0115 create_object(Object, Relations, Directives, Clauses), 0116 create_protocol(Protocol, Relations, Directives). 0117 0118 abolishing_entities(Object, Protocol, Category) :- 0119 abolish_category(Category), 0120 abolish_object(Object), 0121 abolish_protocol(Protocol). 0122 0123 entity_relations :- 0124 extends_object(Prototype, Parent, Scope), 0125 extends_protocol(Protocol1, Protocol2, Scope), 0126 extends_category(Category1, Category2, Scope), 0127 implements_protocol(Object, Protocol, Scope), 0128 imports_category(Object, Category, Scope), 0129 instantiates_class(Instance, Class, Scope), 0130 specializes_class(Class, Superclass, Scope), 0131 complements_object(Category, Object), 0132 conforms_to_protocol(ObjOrCtg, Protocol, Scope). 0133 0134 event_handling :- 0135 abolish_events(Event, Object, Message, Sender, Monitor), 0136 current_event(Event, Object, Message, Sender, Monitor), 0137 define_events(Event, Object, Message, Sender, Monitor). 0138 0139 multi_threading :- 0140 threaded(Goals), 0141 threaded_call(Goal), 0142 threaded_call(Goal, Tag), 0143 threaded_once(Goal), 0144 threaded_once(Goal, Tag), 0145 threaded_ignore(Goal), 0146 threaded_exit(Goal), 0147 threaded_exit(Goal, Tag), 0148 threaded_peek(Goal), 0149 threaded_peek(Goal, Tag), 0150 threaded_cancel(Tag), 0151 threaded_wait(Notification), 0152 threaded_notify(Notification). 0153 0154 engines :- 0155 threaded_engine(Engine), 0156 threaded_engine_create(AnswerTemplate, Goal, Engine), 0157 threaded_engine_destroy(Engine), 0158 threaded_engine_self(Engine), 0159 threaded_engine_next(Engine, Answer), 0160 threaded_engine_next_reified(Engine, Answer), 0161 threaded_engine_yield(Answer), 0162 threaded_engine_post(Engine, Term), 0163 threaded_engine_fetch(Term). 0164 0165 compiling_and_loading :- 0166 logtalk_compile(File, Options), 0167 logtalk_load(File, Options), 0168 logtalk_library_path(Library, Path), 0169 logtalk_load_context(Key, Value), 0170 logtalk_make(Action), 0171 logtalk_make, 0172 logtalk_make_target_action(Target). 0173 0174 flags :- 0175 current_logtalk_flag(Flag, Value), 0176 set_logtalk_flag(Flag, Value), 0177 create_logtalk_flag(Flag, Value, Options). 0178 0179 execution_context_methods :- 0180 context(Context), 0181 parameter(N, Parameter), 0182 self(Self), 0183 sender(Sender), 0184 this(This). 0185 0186 reflection_methods :- 0187 current_predicate(Predicate), 0188 predicate_property(Predicate, Property). 0189 0190 database_methods :- 0191 abolish(Name/Arity), 0192 asserta(Clause), 0193 assertz(Clause), 0194 clause(Head, Body), 0195 retract(Clause), 0196 retractall(Head). 0197 0198 exception_methods :- 0199 catch(Goal, Error, Catcher), 0200 throw(Error), 0201 instantiation_error, 0202 type_error(Type, Culprit), 0203 domain_error(Domain, Culprit), 0204 existence_error(Thing, Culprit), 0205 permission_error(Operation, Permission, Culprit), 0206 representation_error(Flag), 0207 evaluation_error(Exception), 0208 resource_error(Resource), 0209 syntax_error(Description), 0210 system_error. 0211 0212 all_solutions_methods :- 0213 bagof(Term, Goal, List), 0214 bagof(Term, Var^Goal, List), 0215 findall(Term, Goal, List), 0216 forall(Generate, Test), 0217 setof(Term, Goal, List), 0218 setof(Term, Var1^Var2^Goal, List). 0219 0220 event_handler_methods :- 0221 before(Object, Message, Sender), 0222 after(Object, Message, Sender). 0223 0224 message_forwarding_method :- 0225 forward(Message). 0226 0227 dcg_rules_parsing_methods :- 0228 phrase(NonTerminal, Input, Rest). 0229 0230 term_expansion_methods :- 0231 expand_term(Term, Expanded), 0232 expand_goal(Goal, Expanded), 0233 term_expansion(Term, Expanded), 0234 goal_expansion(Goal, Expanded). 0235 0236 message_sending :- 0237 Object::Message, 0238 ::Message, 0239 ^^Message. 0240 0241 calling_external_code :- 0242 <beginfold id='4'>{</beginfold id='4'>goal1, goal2, goal3<endfold id='4'>}</endfold id='4'>. 0243 0244 context_switching_calls :- 0245 Object<<Goal. 0246 0247 lambda_expressions :- 0248 <beginfold id='4'>{</beginfold id='4'>X,Y,Z<endfold id='4'>}</endfold id='4'>/[P,Q]>>Goal. 0249 0250 explicitly_qualified_module_calls :- 0251 Module:Goal. 0252 0253 if_then_else :- 0254 ( If -> 0255 Then 0256 ; Else 0257 ). 0258 0259 numbers :- 0260 X1 is 13, X2 is -13, X3 is +13, 0261 Y1 is 13.13, Y2 is -13.13, Y3 is +13.13, 0262 Z1 is 13.13e-23, Z2 is -13.13e-23, Z3 is +13.13e-23, 0263 C1 is 0'A, C2 is 0'', C3 is 0'", C4 is 0'%, 0264 C5 is 0'\n, C6 is 0'\\, C7 is 0'\', C8 is 0'\", C9 is 0'\`, 0265 B1 is 0b1011101, 0266 O1 is 0o1234560, 0267 H1 is 0x1234567890abcDEF. 0268 0269 functions :- 0270 A is atan(3.14) + atan2(1, 0) + acos(0.5) + asin(0.5) + sin(0.77) - cos(123.23) - tan(0.33), 0271 B is sign(-12) * abs(35/78), 0272 C is truncate(3.14) + round(-7.8) - ceiling(111.88), 0273 D is exp(3.8) - log(123.98) / sqrt(33) * 23 ** 4 + 12345^2, 0274 E is rem(3, 2) + mod(5, 3) - div(8, 4) * 2 rem 2 // 5 mod 3 - 8 div 4 + pi * e, 0275 F is float_fractional_part(3.14) + float_integer_part(3.14), 0276 G is float(33) + floor(99.99), 0277 I is min(3,4) + max(4,5). 0278 0279 bitwise :- 0280 A is 16 >> 2, 0281 B is 16 << 2, 0282 C is 10 /\ 12, 0283 D is 10 \/ 12, 0284 E is \ 10, 0285 F is xor(13, 7). 0286 0287 term_unification :- 0288 Term1 = Term2, 0289 Term1 \= Term2, 0290 unify_with_occurs_check(Term1, Term2), 0291 subsumes_term(General, Specific). 0292 0293 term_testing :- 0294 atom(Atom), 0295 atomic(Atomic), 0296 integer(Integer), 0297 float(Float), 0298 callable(Term), 0299 compound(Term), 0300 nonvar(Term), 0301 var(Term), 0302 number(Number), 0303 ground(Term), 0304 acyclic_term(Term). 0305 0306 term_comparison :- 0307 compare(Order, Term1, Term2), 0308 Term1 == Term2, 0309 Term1 \== Term2, 0310 Term1 @< Term2, 0311 Term1 @=< Term2, 0312 Term1 @>= Term2, 0313 Term1 @> Term2. 0314 0315 term_creation_and_decomposition :- 0316 functor(Term, Name, Arity), 0317 arg(N, Term, Arg), 0318 Term =.. [Functor| Args], 0319 copy_term(Term, Copy), 0320 numbervars(Term, Start, End), 0321 term_variables(Term, Variables). 0322 0323 arithmetic_evaluation :- 0324 X is Expression. 0325 0326 arithmetic_comparison :- 0327 Exp1 =:= Exp2, 0328 Exp1 =\= Exp2, 0329 Exp1 < Exp2, 0330 Exp1 =< Exp2, 0331 Exp1 > Exp2, 0332 Exp1 >= Exp2. 0333 0334 stream_selection_and_control :- 0335 current_input(Stream), 0336 current_output(Stream), 0337 set_input(Stream), 0338 set_output(Stream), 0339 open(Source, Mode, Stream, Options), 0340 close(Stream), 0341 flush_output(Stream), 0342 stream_property(Stream, Property), 0343 at_end_of_stream(Stream), 0344 set_stream_position(Stream, Position), 0345 flush_output, 0346 at_end_of_stream. 0347 0348 character_input_output :- 0349 get_char(Char), 0350 get_code(Code), 0351 peek_char(Char), 0352 peek_code(Code), 0353 put_char(Char), 0354 put_code(Code), 0355 nl(Stream), 0356 nl. 0357 0358 byte_input_output :- 0359 get_byte(Byte), 0360 peek_byte(Byte), 0361 put_byte(Byte). 0362 0363 term_input_output :- 0364 read(Term), 0365 read_term(Stream, Term, Options), 0366 write(Term), 0367 write(Term), 0368 write_canonical(Term), 0369 write_term(Stream, Term, Options), 0370 current_op(Precedence, Associativity, Operator), 0371 op(Precedence, Associativity, Operator), 0372 current_char_conversion(InChar, OutChar), 0373 char_conversion(InChar, OutChar). 0374 0375 logic_and_control :- 0376 \+ Goal, 0377 call(Goal), 0378 once(Goal), 0379 ignore(Goal), 0380 true, 0381 fail, 0382 false, 0383 repeat, 0384 !. 0385 0386 atomic_term_processing :- 0387 atom_length(Atom, Length), 0388 atom_chars(Atom, Chars), 0389 atom_codes(Atom, Codes), 0390 atom_concat(Atom1, Atom2, Atom), 0391 sub_atom(Atom, Before, Length, After, SubAtom), 0392 char_code(Char, Code), 0393 number_chars(Number, Chars), 0394 number_codes(Number, Codes). 0395 0396 implementation_defined_hooks :- 0397 current_prolog_flag(Flag, Value), 0398 set_prolog_flag(Flag, Value), 0399 halt(ExitCode), 0400 halt. 0401 0402 sorting :- 0403 keysort(List, Sorted), 0404 sort(List, Sorted). 0405 0406 number(C) --> "+", number(C). 0407 number(C) --> "-", number(X), <beginfold id='4'>{</beginfold id='4'>C is -X<endfold id='4'>}</endfold id='4'>. 0408 number(X) --> [C], <beginfold id='4'>{</beginfold id='4'>0'0 =< C, C =< 0'9, X is C - 0'0<endfold id='4'>}</endfold id='4'>. 0409 0410 escape_sequences :- 0411 write('Quoted atom with a quote ('') inside.'), 0412 write('Quoted atom with a quote (\') inside using a control escape sequence.'), 0413 write('Quoted atom with a backslash (\\) inside.'), 0414 write('Quoted atom with control escape sequences: \a \b \r \f \t \n \v'), 0415 write('Quoted atom with an octal escape sequence: \123\.'), 0416 write('Quoted atom with an hexadecimal escape sequence: \x123f\.'). 0417 0418 % nothing in the following predicate definition should be highlighted 0419 sort :- 0420 forall, 0421 object, 0422 write, 0423 number. 0424 0425 :- <endfold id='3'>end_object</endfold id='3'>. 0426 0427 0428 :- <beginfold id='3'>object</beginfold id='3'>(class, 0429 implements(protected::protocol), 0430 imports(private::category), 0431 instantiates(metaclass), 0432 specializes(superclass)). 0433 0434 :- <endfold id='3'>end_object</endfold id='3'>. 0435 0436 0437 :- <beginfold id='3'>object</beginfold id='3'>(parametric(Parameter, "String", 33.78), 0438 implements(protocol), 0439 imports(category), 0440 extends(parent(Parameter))). 0441 0442 :- <endfold id='3'>end_object</endfold id='3'>. 0443 0444 0445 :- <beginfold id='3'>category</beginfold id='3'>(category, 0446 implements(protocol), 0447 extends(other_category)). 0448 0449 :- <endfold id='3'>end_category</endfold id='3'>. 0450 0451 0452 :- <beginfold id='3'>protocol</beginfold id='3'>(extended, 0453 extends(minimal)). 0454 0455 :- <endfold id='3'>end_protocol</endfold id='3'>. 0456 0457 0458 :- module(module, [foo/1, bar/2]). 0459 0460 :- use_module(library). 0461 :- use_module(library, [baz/3]). 0462 0463 :- reexport(library). 0464 :- reexport(library, [qux/4]). 0465 0466 :- export(quux/5).