Skip to content

ab25cq/clover

Repository files navigation

+++ 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/