/* File: flroperator.P -- Flora operator definitions
**
** Author(s): Guizhen Yang
**
** Contact: flora-users@lists.sourceforge.net
**
** Copyright (C) The Research Foundation of SUNY, 1999-2001
**
** FLORA-2 is free software; you can redistribute it and/or modify it under the
** terms of the GNU Library General Public License as published by the Free
** Software Foundation; either version 2 of the License, or (at your option)
** any later version.
**
** FLORA-2 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 Library General Public License for
** more details.
**
** You should have received a copy of the GNU Library General Public License
** along with FLORA-2; if not, write to the Free Software Foundation,
** Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
**
*/
:- compiler_options([xpp_on]).
#include "flora_terms.flh"
flora_op(1700,xfx,FL_IMPLYOP).
flora_op(1700,fx,FL_IMPLYOP).
flora_op(1700,fx,FL_QUERYOP).
flora_op(1600,fx,FL_HILOG).
flora_op(1600,xfx,FL_BAR).
flora_op(1600,fx,FL_TABLE).
flora_op(1600,fx,FL_INDEX).
%%flora_op(1600,fx,FL_DYNAMIC).
%%flora_op(1600,fx,FL_EXPORT).
%%flora_op(1600,fx,FL_IMPORT).
%%flora_op(1600,fx,FL_ARGUMENTS).
%%flora_op(1600,fx,FL_PROLOG).
flora_op(1600,fx,FL_EQUALITY).
flora_op(1600,fx,FL_CMPOPT).
flora_op(1600,fx,FL_COMPILE).
flora_op(1600,fx,FL_LOAD).
flora_op(1600,fx,FL_DUMP).
flora_op(1500,xfx,FL_FROM).
flora_op(1500,xfy,FL_SEMICOLON).
flora_op(1400,xfy,FL_COMMA).
flora_op(1300,fy,FL_IF).
flora_op(1300,xfy,FL_THEN).
flora_op(1300,xfy,FL_ELSE).
flora_op(1300,fy,FL_DO). % do... until...
flora_op(1300,fy,FL_LOOP). % loop... until...
flora_op(1300,xfy,FL_UNTIL).
flora_op(1300,xfy,FL_DO). % while... do... or unless ... do...
flora_op(1300,xfy,FL_LOOP). % while... loop...
flora_op(1300,fy,FL_WHILE).
flora_op(1300,fy,FL_UNLESS).
flora_op(1200,fy,FL_TNOT).
flora_op(1200,fy,FL_NEG).
flora_op(1100,xfx,FL_FDARROW).
flora_op(1100,xfx,FL_MVDARROW).
flora_op(1100,xfx,FL_ALLINARROW).
flora_op(1100,xfx,FL_TOLISTARROW).
flora_op(1100,xfx,FL_FDSIGARROW).
flora_op(1100,xfx,FL_MVDSIGARROW).
flora_op(1100,xfx,FL_INFDARROW).
flora_op(1100,xfx,FL_INMVDARROW).
flora_op(1100,xfx,FL_INALLINARROW).
flora_op(1100,xfx,FL_INTOLISTARROW).
flora_op(1100,xfx,FL_INFDSIGARR).
flora_op(1100,xfx,FL_INMVDSIGARR).
flora_op(1100,fx,FL_INMETH).
flora_op(1100,fx,FL_TRAN).
flora_op(1000,xfx,FL_UNIVEQ).
flora_op(1000,xfx,FL_UNIVNOTEQ).
flora_op(1000,xfx,FL_EQ).
flora_op(1000,xfx,FL_UNIVEQFORM).
flora_op(1000,xfx,FL_NOTEQ).
flora_op(1000,xfx,FL_ORDERLT).
flora_op(1000,xfx,FL_ORDEREQLT).
flora_op(1000,xfx,FL_ORDERGT).
flora_op(1000,xfx,FL_ORDEREQGT).
flora_op(1000,xfx,FL_METAUNIV).
flora_op(1000,xfx,FL_METAUNIVFORM).
flora_op(1000,xfx,FL_OBJEQL).
flora_op(1000,xfx,FL_IS).
flora_op(1000,xfx,FL_MATHEQ).
flora_op(1000,xfx,FL_MATHNOTEQ).
flora_op(1000,xfx,FL_LT).
flora_op(1000,xfx,FL_EQLT).
flora_op(1000,xfx,FL_GT).
flora_op(1000,xfx,FL_EQGT).
flora_op(900,xfx,FL_RIGHTTO).
flora_op(900,xfx,FL_LEFTTO).
flora_op(800,yfx,FL_PLUS).
flora_op(800,yfx,FL_MINUS).
flora_op(800,yfx,FL_SYMOR).
flora_op(700,yfx,FL_STAR).
flora_op(700,yfx,FL_SLASH).
flora_op(700,yfx,FL_MOD).
flora_op(700,yfx,FL_SYMAND).
flora_op(600,fy,FL_PLUS).
flora_op(600,fy,FL_MINUS).
flora_op(500,xfx,FL_AT).
%% These operators are disabled until the composer is fixed
%flora_op(400,fx,FL_PLIB).
%flora_op(400,fx,FL_PLIBALL).
%flora_op(400,fx,FL_FLORALIB).
flora_op(350,yfx,FL_ISA).
flora_op(350,yfx,FL_SUB).
flora_op(300,yfx,FL_FD).
flora_op(300,yfx,FL_MVD).
flora_op(300,yfx,FL_INHERIFD).
flora_op(300,yfx,FL_INHERIMVD).
/****************************************************************************
flora_opdef(+Precedence,+Associativity,+Op)
****************************************************************************/
flora_opdef(X,Y,Z) :-
flora_op(X,Y,Z).
flora_opdef(X,Y,Z) :-
( flora_get_counter(flora_shell_mode,1) ->
flora_shop(X,Y,Z)
;
flora_dynop(X,Y,Z)
).
/****************************************************************************
flora_conflict_operator(+Precedence,+Associativity,+Op)
****************************************************************************/
flora_conflict_operator(P,A,Op) :-
flora_op(_P,_A,Op),
(P \= _P; A \= _A).
/****************************************************************************
flora_reset_operator/0
****************************************************************************/
flora_reset_operator :- retractall(flora_dynop(_,_,_)).
/****************************************************************************
flora_define_operator(+Precedence,+Associativity,+Op)
****************************************************************************/
flora_define_operator(P,A,Op) :-
( flora_op(P,A,Op) ->
true
;
assert(flora_dynop(P,A,Op))
).
/****************************************************************************
flora_shreset_operator/0
****************************************************************************/
flora_shreset_operator :- retractall(flora_shop(_,_,_)).
/****************************************************************************
flora_shdefine_operator(+Precedence,+Associativity,+Op)
****************************************************************************/
flora_shdefine_operator(P,A,Op) :-
( flora_op(P,A,Op) ->
true
;
assert(flora_shop(P,A,Op))
).
syntax highlighted by Code2HTML, v. 0.9.1