Files
secondo/Optimizer/opsyntax.pl
2026-01-23 17:03:45 +08:00

634 lines
24 KiB
Prolog

/*
----
This file is part of SECONDO.
Copyright (C) 2004, University in Hagen, Department of Computer Science,
Database Systems for New Applications.
SECONDO is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
SECONDO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with SECONDO; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
----
//paragraph [10] title: [{\Large \bf ] [}]
//characters [1] formula: [$] [$]
//[ae] [\"{a}]
//[oe] [\"{o}]
//[ue] [\"{u}]
//[ss] [{\ss}]
//[Ae] [\"{A}]
//[Oe] [\"{O}]
//[Ue] [\"{U}]
//[**] [$**$]
//[star] [$*$]
//[->] [$\rightarrow$]
//[toc] [\tableofcontents]
//[=>] [\verb+=>+]
//[<] [$<$]
//[>] [$>$]
//[%] [\%]
//[newpage] [\newpage]
[10] Defining Operator Syntax
[File ~opsyntax.pl~]
[toc]
[newpage]
1 Query Language Operator Syntax
*/
:- op(800, xf , ++).
%:- op(200, xfx, :).
% NVK MODIFIED for nested relations support
% With xfy tests for nested relations like A:_ and X:Y:_ are supported.
% But note: (a:b):c is not valid. The ~:~ is used like a list, hence a
% predicate like the ~append/3~ for lists is needed to add an attribute to a
% existing x:y term.
:- op(200, xfy, :).
% NVK MODIFIED END
:- op(800, xfx, =>).
:- op(800, xfx, ==).
:- op(800, xfx, <=).
:- op(800, xfx, <<).
:- op(800, xfx, <<==).
:- op(800, xfx, >>).
:- op(800, xfx, >>==).
:- op(800, xfx, #).
:- op(800, xfx, ##).
:- op(800, xfx, adjacent).
:- op(800, xfx, always).
:- op(800, xfx, and).
:- op(800, xfx, at).
:- op(800, xfx, atinstant).
:- op(800, xfx, atperiods).
:- op(800, xfx, attached).
:- op(800, xfx, before).
:- op(800, xf , getCategory).
:- op(800, xfx, commonborder).
:- op(800, xfx, commonborderscan).
:- op(800, xfx, contains).
:- op(800, xfx, containsWord).
:- op(800, xfx, containsPrefix).
:- op(800, xfx, div).
:- op(800, xfx, eplus).
:- op(800, xfx, equalway).
:- op(800, xfx, ininterior).
:- op(800, xfx, inside).
:- op(800, xfx, insideold).
:- op(800, xfx, intersection).
:- op(800, xfx, intersects).
:- op(800, xfx, intersects_new).
:- op(800, xf , isgrayscale).
:- op(800, xf , isportrait).
:- op(800, xf , getHeight).
:- op(800, xf , leapyear).
:- op(800, xf , line2region).
:- op(800, xfx, matches).
:- op(800, xfx, mod).
:- op(800, xfx, never).
:- op(800, fx, not).
:- op(800, xfx, onborder).
:- op(800, xfx, overlaps).
:- op(800, xfx, or).
:- op(800, xfx, p_intersects).
:- op(800, xfx, passes).
:- op(800, xf , getPictureDate).
:- op(800, xfx, present).
:- op(800, xf , rect2region).
:- op(800, xf , relcount).
:- op(800, xf , relcount2).
:- op(800, xfx, rewrite).
:- op(800, xfx, satisfies).
:- op(800, xfx, simpleequals).
:- op(800, xfx, starts).
:- op(800, xfx, tmatches).
:- op(800, xfx, touchpoints).
:- op(800, xfx, union).
:- op(800, xfx, when).
% NVK ADDED NR
:- op(799, yfx, unnest),
op(799, yfx, nest).
% NVK ADDED NR END
% Section:Start:opSyntaxPreference_3_e
% Section:End:opSyntaxPreference_3_e
/*
2 Executable Language Operator Syntax
---- secondoOp(?Op, ?Syntax, ?NoArgs) :-
----
~Op~ is a Secondo operator written in ~Syntax~, with ~NoArgs~ arguments.
Currently implemented:
* postfix, N arguments: corresponds to \_ \# and \_ \_ \#, ...
* postfixbrackets, N: $N \geq 1$ arments before the functor, the rest following it
within squared brackets, separated by commas:
\_ \# [ \_ ], \_ \# [ \_ , \_ ], \_ \# [ \_ , \_ , \_ ] ...
* prefix, N: $N \geq 0$ arguments following the functor in round parantheses,
separated by commas:: \# (\_, \_)
* infix, 2 arguments: \_ \# \_
* special, N: all operators requiring a special ~plan\_to\_atom~ rule.
There are deprecated standard translations for operators, which should not be used anymore.
Define an explicit ~secondoOP~ fact instead!
* binary operators: \_ \# \_ infix
* N-ary operators, $N \neq 2$: \# ( \_, \_, \_, ... ) prefix
----
Quick Reference:
OperatorSyntax | Use: OperatorType, NoArgs
-----------------------+------------------------------------------------
# () | prefix, 0
# ( _ ) | prefix, 1
# ( _, _ ) | prefix, 2
# ( _, _, _, ...) | prefix, n ( n>=1 )
_ # | postfix, 1
_ # _ | infix, 2
_ # [ _ ] | postfixbrackets, 1
_ # [ _, _ ] | postfixbrackets, 1
_ # [ _, _, ... ] | postfixbrackets, 1
_ _ # | postfix, 2
_ _ # [ _ ] | postfixbrackets, 2
_ _ # [ _, _ ] | postfixbrackets, 2
_ _ # [ _, _, ... ] | postfixbrackets, 2
_ _ _ # | postfix, 3
_ _ _ # [ _ ] | postfixbrackets, 3
_ _ _ # [ _, _ ] | postfixbrackets, 3
_ _ _ # [ _, _, ... ] | postfixbrackets, 3
any using list | special, _
any using funlist | special, _
all others, | special, _
----
*/
:- dynamic(secondoOp/3).
secondoOp((+), infix, 2).
secondoOp( ++, postfix, 1).
secondoOp((-), infix, 2).
secondoOp((*), infix, 2).
secondoOp((/), infix, 2).
secondoOp((#), infix, 2).
secondoOp((##), infix, 2).
secondoOp((=), infix, 2).
secondoOp((==), infix, 2).
secondoOp((<), infix, 2).
secondoOp((<=), infix, 2).
secondoOp((<<), infix, 2).
secondoOp((<<==), infix, 2).
secondoOp((>), infix, 2).
secondoOp((>=), infix, 2).
secondoOp((>>), infix, 2).
secondoOp((>>==), infix, 2).
secondoOp( abs, prefix, 1).
secondoOp( addcounter, postfixbrackets, 1).
secondoOp( addid, postfix, 1).
secondoOp( addtupleid, postfix, 1).
secondoOp( aggregate, special, 1). % special syntax
secondoOp( aggregateB, special, 1). % TODO: special syntax
secondoOp( aggregateS, special, 1). % TODO: special syntax
secondoOp((adjacent), infix, 2).
secondoOp((always), infix, 2).
secondoOp((and), infix, 2).
secondoOp( approximate, postfixbrackets, 1).
secondoOp( arccos, prefix, 1).
secondoOp( arcsin, prefix, 1).
secondoOp( arctan, prefix, 1).
secondoOp( arctan2, prefix, 2).
secondoOp((at), infix, 2).
secondoOp((atinstant), infix, 2).
secondoOp((atlocation), postfixbrackets, 1).
secondoOp((atperiods), infix, 2).
secondoOp((attached), infix, 2).
secondoOp( attr, prefix, 2).
secondoOp( attrsize, postfixbrackets, 1).
secondoOp( attr2text, prefix, 1).
secondoOp( avg, postfixbrackets, 1).
secondoOp( bbox, prefix, 1).
secondoOp((before), infix, 2).
secondoOp( between, postfixbrackets, 1).
secondoOp( box2d, prefix, 1).
secondoOp( box3d, prefix, 2).
secondoOp( breakpoints, prefix, 2).
secondoOp( bulkloadtbtree, postfixbrackets, 1).
secondoOp( bulkloadrtree, postfixbrackets, 1).
secondoOp( cancel, postfixbrackets, 1).
secondoOp( getCategory, postfix, 1).
secondoOp( charToText, prefix, 1).
secondoOp( cluster_of, prefix, 2).
secondoOp( clustername_of, prefix, 2).
secondoOp( colordist, postfixbrackets, 1).
secondoOp( collect_line, postfix, 1).
secondoOp( collect_set, postfix, 1).
secondoOp( collect_sline, postfix, 1).
secondoOp( collect_multiset, postfix, 1).
secondoOp( collect_vector, postfix, 1).
secondoOp((commonborder), infix, 2).
secondoOp((commonborderscan), infix, 2).
secondoOp( compare, prefix, 2).
secondoOp( constgraph, postfixbrackets, 1).
secondoOp( constgraphpoints, postfixbrackets, 1).
secondoOp( consume, postfix, 1).
secondoOp( concat, postfix, 2).
secondoOp( concatS, postfix, 1).
secondoOp( concatS2, postfixbrackets, 1).
secondoOp( const_e, prefix, 0).
secondoOp( const_pi, prefix, 0).
secondoOp((contains), infix, 2).
secondoOp( cos, prefix, 1).
secondoOp( count, postfix, 1).
secondoOp( countboth, postfix, 2).
secondoOp( create_duration, prefix, 1).
secondoOp( create_instant, prefix, 1).
secondoOp( createcluster, prefix, 2).
secondoOp( createbtree, postfixbrackets, 1).
secondoOp( createdeleterel, postfix, 1).
secondoOp( createhash, postfixbrackets, 1).
secondoOp( createinsertrel, postfix, 1).
secondoOp( createupdaterel, postfix, 1).
secondoOp( createpgroup, prefix, 2).
secondoOp( createprioritypgroup,prefix, 2).
secondoOp( createtbtree, postfixbrackets, 1).
secondoOp( creatertree, postfixbrackets, 1).
secondoOp( createvalidpgroup, prefix, 2).
secondoOp( csvexport, postfixbrackets, 1).
secondoOp( csvimport, postfixbrackets, 1).
secondoOp( cumulate, postfixbrackets, 1).
secondoOp( cut, postfixbrackets, 1).
secondoOp( db3export, postfixbrackets, 1).
secondoOp( dbimport, postfixbrackets, 1).
secondoOp( deftime, prefix, 1).
secondoOp( deg2rad, prefix, 1).
secondoOp( delay, prefix, 2).
secondoOp( deletebtree, postfixbrackets, 2).
secondoOp( deletedirect, postfix, 2).
secondoOp( deletedirectsave, postfix, 3).
secondoOp( deleteelem, prefix, 2).
secondoOp( deletehash, postfixbrackets, 2).
secondoOp( deletesearch, postfix, 2).
secondoOp( deletesearchsave, postfix, 3).
secondoOp( difference, prefix, 2).
secondoOp( direction, prefix, 2).
secondoOp( display, postfix, 1).
secondoOp( distance, prefix, 2).
secondoOp( distancescan, postfixbrackets, 2).
secondoOp( distribute, postfixbrackets, 1).
secondoOp((div), infix, 2).
secondoOp( dms2deg, prefix, 2).
secondoOp( dumpstream, postfixbrackets, 1).
secondoOp( echo, postfixbrackets, 1).
secondoOp( end, prefix, 1).
secondoOp( enlargeRect, prefix, 2).
secondoOp( ensure, postfixbrackets, 1).
secondoOp((eplus), infix, 2).
secondoOp((equalway), infix, 2).
secondoOp( equals, postfixbrackets, 2).
secondoOp( evaluate, prefix, 2).
secondoOp( everNearerThan, prefix, 3).
secondoOp( exactmatch, postfixbrackets, 2).
secondoOp( exactmatchS, postfixbrackets, 1).
secondoOp( export, postfix, 1).
secondoOp( extattrsize, postfixbrackets, 1).
secondoOp( extend, postfixbrackets, 1).
secondoOp( extenddeftime, prefix, 2).
secondoOp( extract, postfixbrackets, 1).
secondoOp( exttuplesize, postfix, 1).
secondoOp( feed, postfix, 1).
secondoOp( units, prefix, 1).
% NVK ADDED NR
secondoOp( afeed, postfix, 1).
secondoOp( aconsume, postfix, 1).
secondoOp( nest, special, 2).
secondoOp( unnest, special, 1). % currently like postfixbrackets
secondoOp( renameattr, postfixbrackets, 1). % missing
secondoOp( extendstream, postfixbrackets, 1). % missing
% NVK ADDED NR END
% NVK ADDED MA
secondoOp( gracehashjoin, postfixbrackets, 2).
secondoOp( hybridhashjoin, postfixbrackets, 2).
secondoOp( itHashJoin, postfixbrackets, 2).
% NVK ADDED MA END
secondoOp( fileSize, prefix, 1).
secondoOp( filter, postfixbrackets, 1).
secondoOp( filtermatches, postfixbrackets, 1).
secondoOp( find, prefix, 2).
secondoOp( flipleft, postfixbrackets, 1).
secondoOp( gdistance, prefix, 2).
secondoOp( get, prefix, 2).
secondoOp( getcatalog, prefix, 2).
secondoOp( getDirectory, prefix, 1).
secondoOp( getFilename, postfix, 1).
secondoOp( getHeight, postfix, 1).
secondoOp( gettuples, postfix, 2).
secondoOp( gettuples2, postfixbrackets, 2).
secondoOp( gettuplesdbl, postfixbrackets, 2).
secondoOp( getMaxVal, prefix, 1).
secondoOp( getMinVal, prefix, 1).
secondoOp( getTypeNL, postfix, 1).
secondoOp( getValueNL, postfix, 1).
secondoOp( getWidth, postfix, 1).
secondoOp( gps, prefix, 2).
secondoOp( groupby, special, 1).
secondoOp( hashjoin, postfixbrackets, 2).
secondoOp( hashvalue, prefix, 2).
secondoOp( head, postfixbrackets, 1).
secondoOp((ininterior), infix, 2).
secondoOp( insert, postfix, 2).
secondoOp( insertrtree, postfixbrackets, 2).
secondoOp( inserttuple, postfixbrackets, 1).
secondoOp( inserttuplesave, postfixbrackets, 2).
secondoOp( insertsave, postfix, 3).
secondoOp((inside), infix, 2).
secondoOp((insideold), infix, 2).
secondoOp( insertbtree, postfixbrackets, 2).
secondoOp( inserthash, postfixbrackets, 2).
secondoOp( intersection_new, prefix, 2).
secondoOp( intersection, prefix, 2).
secondoOp((intersects), infix, 2).
secondoOp((intersects_new), infix, 2).
secondoOp( invert, prefix, 2).
secondoOp( isempty, prefix, 1).
secondoOp( isgrayscale, postfix, 1).
secondoOp( isportrait, postfix, 1).
secondoOp( kbiggest, postfixbrackets, 1).
secondoOp( keywords, postfix, 1).
secondoOp( kinds, postfix, 1).
secondoOp( krdup, postfixbrackets, 1).
secondoOp( ksmallest, postfixbrackets, 1).
secondoOp( ldistance, prefix, 2).
secondoOp( leapyear, postfix, 1).
secondoOp( leftrange, postfixbrackets, 2).
secondoOp( leftrangeS, postfixbrackets, 1).
secondoOp( length, prefix, 1).
secondoOp( like, postfixbrackets, 1).
secondoOp( line2region, postfix, 1).
secondoOp( log, prefix, 1).
secondoOp( logB, prefix, 2).
secondoOp( loop, postfixbrackets, 1).
secondoOp( loopa, postfixbrackets, 2).
secondoOp( loopb, postfixbrackets, 2).
secondoOp( loopjoin, postfixbrackets, 1).
secondoOp( loopsel, postfixbrackets, 1).
secondoOp( loopselect, postfixbrackets, 1).
secondoOp( loopselecta, postfixbrackets, 2).
secondoOp( loopselectb, postfixbrackets, 2).
secondoOp( loopswitch, postfixbrackets, 1).
secondoOp( loopswitcha, postfixbrackets, 2).
secondoOp( loopswitchb, postfixbrackets, 2).
secondoOp( makeline, prefix, 2).
secondoOp( makesline, prefix, 2).
secondoOp( makearray, prefix, 1).
secondoOp( makemvalue, postfixbrackets, 1).
secondoOp( makepoint, prefix, 2).
secondoOp((matches), infix, 2).
secondoOp( max, postfixbrackets, 1).
secondoOp( maxD, prefix, 2).
secondoOp( maxdegree, prefix, 2).
secondoOp( maxDuration, prefix , 0).
secondoOp( maxInstant, prefix , 0).
secondoOp( matches, infix , 2).
secondoOp( memshuffle, postfix, 1).
secondoOp( merge, prefix, 2).
secondoOp( mergediff, postfix, 2).
secondoOp( mergejoin, postfixbrackets, 2).
secondoOp( mergesec, postfix, 2).
secondoOp( mergeunion, postfix, 2).
secondoOp( min, postfixbrackets, 1).
secondoOp( minD, prefix, 2).
secondoOp( mindegree, prefix, 2).
secondoOp( minDuration, prefix , 0).
secondoOp( minInstant, prefix , 0).
secondoOp( minus_new, prefix, 2).
secondoOp( mirror, postfixbrackets, 1).
secondoOp((mod), infix, 2).
secondoOp( move, prefix, 2).
secondoOp( multiintersection, prefix, 2).
%secondoOp( nanmedtransformstream,postfixbrackets, 1).
% NVK MODIFID: spelling corrected:
secondoOp( namedtransformstream,postfixbrackets, 1).
secondoOp((never), infix, 2).
secondoOp( not, prefix, 1).
secondoOp( now, prefix, 0).
secondoOp( nnscan, postfixbrackets, 2).
secondoOp( nnsearch, postfixbrackets, 2).
secondoOp((onborder), infix, 2).
secondoOp((overlaps), infix, 2).
secondoOp((or), infix, 2).
secondoOp((p_intersects), infix, 2).
secondoOp((passes), infix, 2).
secondoOp( passmbool, prefix, 1).
secondoOp( partjoin, postfixbrackets, 2).
secondoOp( partjoinselect, postfixbrackets, 2).
secondoOp( partjoinswitch, postfixbrackets, 2).
secondoOp( pcreate, postfixbrackets, 1).
secondoOp( pdelete, postfix, 1).
secondoOp( pfeed, postfixbrackets, 1).
secondoOp( getPictureDate, postfix, 1).
secondoOp( pjoin2, postfixbrackets, 2).
secondoOp( polylines, prefix, 2).
secondoOp( polylinesC, prefix, 2).
secondoOp( pow, prefix, 2).
secondoOp( predcounts, special, 1).
secondoOp((present), infix, 2).
secondoOp( printstream, postfix, 1).
secondoOp( product, postfix, 2).
secondoOp( project, special, 1).
secondoOp( projectextendstream,special, 1).
secondoOp( projecttransformstream,postfixbrackets, 1).
secondoOp( pwdisjoint, prefix, 2).
secondoOp( puse, postfixbrackets, 1).
secondoOp( rad2deg, prefix, 1).
secondoOp( randmax, prefix, 0).
secondoOp( randombool, prefix, 1).
secondoOp( randomdelay, prefix, 2).
secondoOp( range, postfixbrackets, 2).
secondoOp( rangeS, postfixbrackets, 1).
secondoOp( rangesearch, postfixbrackets, 2).
secondoOp( rdup, postfix, 1).
secondoOp( realm, prefix, 2).
secondoOp( rect2region, postfix, 1).
secondoOp( reduce, postfixbrackets, 1).
secondoOp( relax, prefix, 2).
secondoOp( relcount, postfix, 1).
secondoOp( relcount2, postfix, 1).
secondoOp( remove, postfixbrackets, 1).
secondoOp( renamecluster, postfixbrackets, 1).
secondoOp( restrict, prefix, 1).
secondoOp( rewrite, prefix, 2).
secondoOp( rightrange, postfixbrackets, 2).
secondoOp( rightrangeS, postfixbrackets, 1).
secondoOp( rng_binomial, prefix, 2).
secondoOp( rng_flat, prefix, 2).
secondoOp( rng_geometric, prefix, 2).
secondoOp( rng_getMax, prefix, 0).
secondoOp( rng_getMin, prefix, 0).
secondoOp( rng_getSeed, prefix, 0).
secondoOp( rng_getType, prefix, 0).
secondoOp( rng_init, prefix, 2).
secondoOp( rng_int, prefix, 0).
secondoOp( rng_NoGenerators, prefix, 0).
secondoOp( rng_real, prefix, 0).
secondoOp( rng_realpos, prefix, 0).
secondoOp( rootattrsize, postfixbrackets, 1).
secondoOp( roottuplesize, postfix, 1).
secondoOp( rotate, postfixbrackets, 1).
secondoOp( round, prefix, 2).
secondoOp( sample, postfixbrackets, 1).
secondoOp( samplempoint, prefix, 2).
secondoOp((satisfies), infix, 2).
secondoOp( saveObject, postfixbrackets, 1).
secondoOp( scale, postfixbrackets, 1).
secondoOp( sendtextstreamTCP, postfixbrackets, 1).
secondoOp( sentences, postfix, 1).
secondoOp( seqnext, prefix , 0).
secondoOp( setoption, prefix, 2).
secondoOp( shpexport, postfixbrackets, 1).
secondoOp( shpimport, postfixbrackets, 1).
secondoOp( shuffle3, postfix, 1).
secondoOp( sim_create_trip, postfixbrackets, 1).
secondoOp( sim_create_trip, postfixbrackets, 1).
secondoOp( sim_fillup_mpoint, postfixbrackets, 1).
secondoOp( sim_print_params, prefix, 0).
secondoOp( sim_set_rng, prefix, 2).
secondoOp( sim_trips, postfixbrackets, 1).
secondoOp( sim_trips, postfixbrackets, 1).
secondoOp((simpleequals), infix, 2).
secondoOp( simplify, prefix, 2).
secondoOp( sin, prefix, 1).
secondoOp( size, prefix, 1).
secondoOp( sizecounters, postfixbrackets, 1).
secondoOp((sometimes), prefix, 1).
secondoOp( sort, postfix, 1).
secondoOp( sortarray, postfixbrackets, 1).
secondoOp( sortby, postfixbrackets, 1).
secondoOp( sortmergejoin, postfixbrackets, 2).
secondoOp( sortmergejoin_r2, postfixbrackets, 2).
secondoOp( spatialjoin, postfixbrackets, 2).
secondoOp( speedup, postfixbrackets, 1).
secondoOp( start, prefix, 1).
secondoOp((starts), infix, 2).
secondoOp( stats, postfixbrackets, 1).
secondoOp( stconstraint, special, 1). % faked operator
secondoOp( stpattern, special, 1).
secondoOp( stpattern2, special, 1).
secondoOp( stpatternex, special, 1).
secondoOp( stpatternex2, special, 1).
secondoOp( stpatternextend, special, 1).
secondoOp( stpatternextend2, special, 1).
secondoOp( stpatternexextend, special, 1).
secondoOp( stpatternexextend2,special, 1).
secondoOp( stpatternextendstream,special, 1).
secondoOp( stpatternextendstream2,special, 1).
secondoOp( stpatternexextendstream,special, 1).
secondoOp( stpatternexextendstream2,special, 1).
secondoOp( stdpgroup, prefix , 0).
secondoOp( strequal, prefix, 2).
secondoOp( str2date, prefix, 1).
secondoOp( sum, postfixbrackets, 1).
secondoOp( summarize, prefix, 1).
secondoOp( symmjoin, special, 2).
secondoOp( symmproduct, postfix, 2).
secondoOp( symmproductextend, special, 2).
secondoOp( tail, postfixbrackets, 1).
secondoOp( tan, prefix, 1).
secondoOp( tconsume, postfix, 1).
secondoOp( the_mvalue, postfix, 1).
secondoOp( thevertex, prefix, 2).
secondoOp( themonth, prefix, 2).
secondoOp( theperiod, prefix, 2).
secondoOp( tie, postfixbrackets, 1).
secondoOp( timeout, postfixbrackets, 1).
secondoOp( today, prefix, 0).
secondoOp( tokenize, prefix, 2).
secondoOp( toprel, prefix, 2).
secondoOp((touchpoints), infix, 2).
secondoOp( trajectory, prefix, 1).
secondoOp( transformstream, postfix, 1).
secondoOp( translate, postfixbrackets, 1).
secondoOp( translateappendS, postfixbrackets, 1).
secondoOp( transpose, prefix, 1).
secondoOp( tuplesize, postfix, 1).
secondoOp((union), infix, 2).
secondoOp( union_new, prefix, 2).
secondoOp( updatebtree, postfixbrackets, 2).
secondoOp( updatebyid, postfixbrackets, 2).
secondoOp( updatehash, postfixbrackets, 2).
secondoOp( updatertree, postfixbrackets, 2).
secondoOp( updatesearch, postfixbrackets, 2).
secondoOp( updatedirectsave, postfixbrackets, 3).
secondoOp( updatesearchsave, postfixbrackets, 3).
secondoOp( use, postfixbrackets, 1).
secondoOp( use2, postfixbrackets, 2).
secondoOp( val, prefix, 1).
secondoOp( var, postfixbrackets, 1).
secondoOp( vec, prefix, 1).
secondoOp((when), infix, 2).
secondoOp( windowclippingin, prefix, 2).
secondoOp( windowclippingout, prefix, 2).
secondoOp( windowintersects, postfixbrackets, 2).
secondoOp( windowintersectsS, postfixbrackets, 1).
secondoOp( within, postfixbrackets, 1).
secondoOp( within2, postfixbrackets, 2).
secondoOp( whiledo, special, 1). % TODO: special syntax
secondoOp( writeFile, prefix, 2).
secondoOp( zero, prefix , 0).
secondoOp( theInstant, prefix, 1).
secondoOp( randomdelay, prefix, 2).
secondoOp( speed, prefix, 1).
% Section:Start:secondoOp_3_e
% Section:End:secondoOp_3_e
/*
embed automatical generated operator syntax
*/
:-consult('opsyntaxg.pl').
/*
If there is no explicit rule for an operator defined in this file,
try to find a generated rule.
*/
secondoOp( Op, Kind, Num) :-
secondoOpG(Op, Kind, Num), !.
/*
End of file ~opsyntax.pl~
*/