felix

Langue: en

Version: 312345 (ubuntu - 07/07/09)

Section: 1 (Commandes utilisateur)

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.3_rc4

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