FELIX OPERATORS

Return to Main Contents
 

NAME

Felix operators and operator names (these need to be checked!).

A chainable binary operator such as + creates a list of subexpressions.

 

assignment

Assignment operators are sugar for statements, so only one is allowed.

= asgn
<- asgn
:= initialise new val
+= pluseq
-= minuseq
*= muleq
/= diveq
%= modeq
|= oreq
^= xoreq
&= andeq

 

let/in

let <expr> in <expr> prefix

 

tuple

, chain

 

logic

Note that "shortcut" doesn't apply in Felix since expressions are purely functional.

|| lor chain
&& land chain
! lnot prefix

 

comparison

== eq binary
<= le chain
< lt chain
>= ge chain
> gt chain
<> ne chain
!= ne chain

-> arrow left assoc

case <int> of <int> unassoc

 

numeric

Note that + has a lower precedence than -, and * has a lower precedence than / which is unusual.

- sub left assoc
+ add chain
* mul chain
/ div left assoc
% mod left assoc
- sub prefix
+ sub prefix
** pow right (special prec rules)

 

addressing

& prefix
* prefix

 

bitwise

| bor chain
^ xor chain
& band chain
~ bnot prefix

 

application

(juxtaposition) left assoc

 

coercion

: left assoc

 

component

. left assoc

 

qualified name

:: left assoc

 

suffixed name

of left assoc

 

atomic

if/then/else/endif

match <expr> with
| <pattern> => <expr>
...
endmatch

regmatch <expr> with
| <regexp> => <expr>
...
endmatch

(fun (<arglist>):<type> = { <expr> })
(fun (<arglist>):<type> = { <statements> })
{ <expr> }
Lambda function. The return type is optional. The third form is short for (fun () = { <expr> })

(proc (<arglist>){ <statements> })
{ <statements> }
Lambda procedure. The second form is short for (proc () = { <statements> })

 

VERSION

1.1.1_rc1  

SEE ALSO

felix(1) for a language introduction and man page index
flx(1) for a list of the tools.
flxcc(1) for a description of the wrapper generator tool.
flx_lit(1) for a description of literals
flx_op(1) for a list of operators
flx_cop(1) for a list of C operator precedence names
flx_key(1) for a list of keywords
flx_grammar(1) for a grammar summary
flx_lib_typ(1) for a list of library types
flx_dir(1) for a list of directives
flx_exec(1) for a list of executable statements
flx_decl(1) for a list of declarative statements
flx_bind(1) for a list of binding statements
 

WEB SITE

See http://felix.sourceforge.net
 

AUTHOR

John Maxwell Skaller, mailto:skaller@users.sourceforge.net


 

Index

NAME
assignment
let/in
tuple
logic
comparison
numeric
addressing
bitwise
application
coercion
component
qualified name
suffixed name
atomic
VERSION
SEE ALSO
WEB SITE
AUTHOR

This document was created by man2html, using the manual pages.
Time: 07:02:36 GMT, May 31, 2006