lfyre is a general purpose, compiled programming language. It offers high performance, expressive power and flexibility. It has many features found in other languages, plus extra features as creating new operators, keywords and programming paradigms.
Be the first to post a text review of lfyre:high-performance flexible language. Rate and review a project by clicking thumbs up or thumbs down in the right column.
From 0.1.2 to 0.1.3: (Massimiliano Ghilardi, 03 May 2005) * Added aliases with parameters, as 'alias add1 n -> n+1'. * Added initial support for templates! Support for partial specialization and partial ordering still missing. * Added keyword 'lfyre:type:print', which allows to write 'print a b <...>' instead of 'print a; print b; <...>' * Added CRC to mangled method names. * Added support to mix variables declarations and code (as in C++ or C99) * Added C++ style declaration scope to 'for' : variables declared in the initialization part of 'for' have as scope only the initialization and body of the 'for'. * Added syntax '(a ; b)', it is lfyre replacement of C '(a , b)' * Implemented template class Array#[T] and refactored String to be a subclass of Array#[char] * Added String method 'split' and its reverse, Array#[String] method 'join'. * Added 'classof', 'superof', 'stringof', 'identof' and 'chain_ident' keywords: 'classof' returns at compile time the type returned by its argument (as GCC 'typeof'). 'superof' returns at compile time the parent type its argument (which must be a class). 'stringof' tranforms at compile time an identifier name into an immediate string constant (analogous to C preprocessor #) 'identof' tranforms at compile time an immediate string constant into an identifier name. 'chain_ident' or its operator '~~' concatenate at compile-time two identifier names (analogous to C preprocessor ##) 'chain' or its operator '~' are now applied at compile-time if both arguments are immediate string constants. * Fixed calls to function with args of reference type, as in function incr i { arg @#int i; i++ } var int n; incr n * Fixed calls to static+virtual methods to use arg0 as vtable instead of arg0:class. * Semicolons and newlines are now ignored after a BIN or VEC operator. This allows splitting long expressions as if (very_long_condition_1 || very_long_condition_2 && very_long_condition_3) { ... } into if (very_long_condition_1 || very_long_condition_2 && very_long_condition_3) { ... } without need to write an explicit backslash \ after the || and && at end-of-line * Added support for operators [] [,] and [..] : 'a[i]' parses as 'a.array i' 'a[i] = x' tries to compile as 'a.array i x' 'a[i,j]' parses as 'a.array2 i j' 'a[i,j] = x' tries to compile as 'a.array2 i j x' and so on. 'a[i..j]' parses as 'a.range i j', 'a[i..j] = x' tries to compile as 'a.range i j x', 'a[i..j, k..l]' parses as 'a.range2 i j k l', 'a[i..j, k..l] = x' tries to compile as 'a.range2 i j k l x' and so on.
Be the first person to add a text review.
Copyright © 2009 Geeknet, Inc. All rights reserved. Terms of Use
Thanks for your rating!
Would you also like to write a review?
Thanks for your review!
Get credit for your review by logging in via OpenID. Click your account provider: