clover icon indicating copy to clipboard operation
clover copied to clipboard

clover script language.

+++ Clover Script Language +++

Features ->

Open classes(mixin class)
Dynamic and statically typing
Interructive mode with method name completion.

Git Repository Location ->

https://github.com/ab25cq/clover.git

Files -> README -> This file CHANGELOG -> Alteration records from version 0.9.8 AUTHOR -> Writer name and mail address USAGE -> Clover's Manual and Usage LICENSE -> GPL and MIT Licenses

code/*.cl code/*.clc -> Clover sources for the test
Fundamental.clc -> Fundamental Classes
StandardLibrary.clc.in -> Standard Library Classes
Completion.clc  -> Castamized completion classes

config.h.in -> config.h source file which is used by configure
configure.in -> configure source file which is used by autoconf
Makefile.in -> Makefile source file which is used by configure
install.sh -> this is used by configure
configure -> configure program

tags -> C tags for program completion

man/man1/clover.1 -> a clover man page

src/alias.c             --> alias system (print, println etc)
src/buffer.c            --> inner resizable buffer library
src/c_to_clover.c       --> C data to Clover data convertor for extension of Clover
src/compile.c           --> Making byte codes from nodes. This is a way to make bytecodes of Clover --> (source codes -> nodes -> byte codes)
src/compiler.c          --> cclover main program.
src/debug.c             --> My original debug system for assert, detecting memory leak.
src/errmsg.c            --> Clover errorr message output routines
src/heap.c              --> Memory management systems. (A Gabage Collection)
src/interface.c         --> An interface for embeded applications
src/interpreter.c       --> External program to interpreter
src/klass.c             --> A clover class system on runtime
src/klass_ctime.c       --> A clover class system on compile time
src/load_class.c        --> compile routine
src/main.c              --> Clover main program
src/module.c            --> module system
src/namespace.c         --> namespace system
src/node.c              --> Making byte codes from nodes. This is a way to make bytecodes of Clover. --> (source codes -> nodes -> byte codes)
src/node_tree.c         --> Allocating nodes
src/node_type.c         --> Compile time type system
src/obj_anonymous.c     --> Runtime Object
src/obj_array.c
src/obj_block.c
src/obj_bool.c
src/obj_byte.c
src/obj_bytes.c
src/obj_char.c
src/obj_class_object.c
src/obj_clover.c
src/obj_double.c
src/obj_enum.c
src/obj_field.c
src/obj_file.c
src/obj_float.c
src/obj_hash.c
src/obj_int.c
src/obj_long.c
src/obj_method.c
src/obj_mutex.c
src/obj_null.c
src/obj_oniguruma_regex.c
src/obj_parser.c
src/obj_pointer.c
src/obj_range.c
src/obj_short.c
src/obj_string.c
src/obj_string_buffer.c
src/obj_system.c
src/obj_thread.c
src/obj_tm.c
src/obj_tuple.c
src/obj_type_object.c
src/obj_uint.c
src/obj_user_object.c
src/obj_void.c
src/obj_wait_status.c
src/parse.c             --> making intermediate code(nodes) from source code.
src/parser.c            --> psclover main program
src/preprocessor.c      --> pclover main program
src/type.c              --> Class type system
src/utf_mb_str.c        --> UTF8 and Multi byte string code.
src/vm.c                --> Clover Virtual Machine
src/vtable.c            --> Implementation of Clover variable table
src/xfunc.c             --> My original xfuncs.

src/clover.h   --> Clover header file
src/common.h   --> Clover header file(inner hidden header)
src/debug.h    --> my debugging systems for memory leacks

Dependences

onig(oniguruma)
pthread
dl
m(math)
iconv
curses or cursesw
readline

Command ->

clover --> Clover VM engine.
cclover --> compile the script(.cl) or compile the class script(.clc)
iclover --> interructive Clover
psclover --> parser of Clover
pclover --> preprocessor of Clover

Hello World ->

$ cat > a.cl <<EOF
echo("HELLO WORLD");
EOF

$ cclover a.cl
$ clover a.cl
HELLO WORLD

Samples ->

$ iclover
clover > Command.pwd()
=> /Users/ab25cq

clover > Command.pwd().toString().scan(/./).join("+").toCommand().less()
=> /+U+s+e+r+s+/+a+b+2+5+c+q+/

Manual(Japanese)

http://wonderwand.net/~ab25cq/