estoy creando un nuevo lenguaje de programacion sobre lima, se llamara Lima++, lo que no pude hacer en lima por la compatibilidad con el interprete lima hecho en scratch.mit.edu lo hare en Lima++ , aqui hay un avance de un programa hola mundo en Lima++
# example1.lima
///! ![enable Lima++]
import
string
;
///! ![enable Lima++]
import
iostream
;
///! ![enable Lima++]
jump
Main
section
Main
collection<new class?string phrase>
=
"hello world"
NULL collection<instance;class?basic_iostream;conout;print>(->)<phrase>
popback
por cierto, yo mismo cree la libreria iostream y string
aqui esta el contenido de iostream.lima
# iostream.lima
///! ![enable Lima++]
collection<class basic_iostream>
{
# __value
#
# Summary:
# the value that is called when you try to call the class
#
collection<children var __value>
# print
#
# Summary:
# prints a text
#
# Params:
# ...
#
collection<function print>
(
collection<param text>
)
echo collection<param text>
collection<return "">
collection<end function>
# read
#
# Summary:
# read a line
#
# Params:
# ...
#
collection<function read>
(
)
collection<return ReadLine>
collection<end function>
# readkey
#
# Summary:
# read a key
#
# Params:
# ...
#
collection<function readkey>
(
)
collection<return ReadKeyWait>
collection<end function>
}
collection<new class?basic_iostream conin>
=
<function Transis<"in"><class>>
collection<new class?basic_iostream conout>
=
<function Transis<"out"><class>>
y el de string.lima
# string.lima
#
# abstract:
# string clases
///! ![enable Lima++]
///! ![Lima++ no_main]
///! ![Lima++ no_std]
///! ![Lima++ std_lib_definition]
///! ![Lima++ jump affter execution]
# string
#
# Summary:
# a text with things
#
# Params:
# the string
#
# Examples:
# collection<new class?string MyText>
# =
# "hello world"
#
collection<class string>
{
# __value
#
# Summary:
# the value that is called when you try to call the class
#
collection<children var __value>
# lenght
#
# Summary:
# the lenght of the text
#
collection<children var lenght>
# Substring
#
# Summary:
# exctracts a text part
#
# Params:
# @letter
# @lenght
#
collection<function Substring>
(
collection<param letter>
collection<param lenght>
)
#
# setuping variables
#
var
text
=
collection<get __value>
var
letter
=
collection<get param letter>
var
lenght
=
collection<get param lenght>
#
# routine
#
var
_returned
=
text.Substring(letter,lenght)
collection<return _returned>
collection<end function>
# Join
#
# Summary:
# joins the text
#
# Params:
# @letter
# @lenght
#
collection<function Join>
(
collection<param text2>
)
#
# setuping variables
#
var
text
=
collection<get __value>
var
text2
=
collection<param text2>
#
# routine
#
var
_returned
=
text
var
_returned
+=
text2
collection<return _returned>
collection<set __value> _returned
collection<end function>
}
no he hecho ni un 10% de lo que quiero hacer con Lima++, se vendran nuevas librerias, nuevas funciones y nuevas maneras creativas, con las collection<class ..>
en lima++, los @structure
ya se quedan cortos en funciones