man felix (Commandes) - Felix language

NAME

Felix language

SYNOPSIS



Felix is a modern statically typed, modular programming language which targets shared libraries rather than programs. It features automatic generation of event driven, cooperatively multitasked programs written in algorithmic style. It is hybrid functional, procedural and object oriented system

TECHNOLOGY

Felix generates C++ which is then built into a shared library and dynamically loaded by a client written architectural framework, which is also responsible for feeding an appropriate Felix coroutine messages.

Felix provides no primitive types. Instead, it provides powerful type combinators, and a facility for binding C++ types to Felix ones. A set of basic primitive types are provided in the standard library.

C++ bindings

Here is an example of a C++ binding.

type int = "int";

incomplete type int = "int";

ctypes int, long;

incomplete ctypes astruct, bstruct;

fun add: int * int -> int = "$1+$2";

proc print: int = 'printf("%d",$1);';

Exporting symbols

Symbols are exported by the export statement. Function, procedures, and types can be exported. Note that types must be enclosed in brackets, because unfortunately 'as' is a keyword used in recursive type expressions.

export fun add of (int * int) as "add_int";

export proc print of (int * int) as "add_int";

export type (int) as "flx_int";

FILES

*.flx are Felix input files

*.cpp generated C++ implementation files *.hpp generated C++ header files

std.flx is the standard library.

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