Edit

kc3-lang/kc3/README.md

Branch :

  • README.md
  • # C3 v0.1
    
    C3 is a programming language project, inspired by C, Elixir and
    Common Lisp. It could be described as C with Elixir modules,
    pattern matching, and a semantic object system. The idea is to plug
    modules, closures, pattern matching, cl-facts and metaprogramming
    into C99 with a very small set of dependencies.
    
    
    ## Structure
    
    ### libc3
    
    C3 is implemented using libc3 a small C99 library implementing the core
    of the language.
    
    The library includes a parser and an interpreter for C3 code in C
    structures.
    
    #### Parser
    
    The parser is recursive descent for now.
    
    #### AST
    
    The AST is represented as C3 data structures and can be meta-programmed
    in C.
    
    #### Interpreter
    
    Under development.
    
    
    ### ic3
    
    Interactive shell.
    
    
    ### c3s
    
    Script interpreter.
    
    
    ## TODO
    
     - libc3
       - facts
         - atomic operations
         - DONE triple serial id
         - negative facts : 4 + 2n = not 3 + 2n
         - with ignore variables
       - math
         - floating point numbers
       - boolean operators
       - comparison operators
       - arrays
       - lists
       - defmodule
       - structs
       - errors (setjmp, longjmp)
         - stacktrace
           - ffi ?
             - libdwarf
       - control structures
       - functions
         - return
         - def
         - funcall
         - & &1
         - DONE fn () {}
       - macros
       - livebook
         - gaussian
       - buf_sha256
       - buf_popen
       - tests
         - sizeof(sw) == sizeof(void *)
         - `(-S8_MIN - S8_MAX) == 1`
         - `UW_MAX == ((1 << 8 * sizeof(uw)) - 1)`
         - DONE group tests by test case
       - DONE ci
       - DONE c function call
       - DONE infix operators
       - DONE load
       - DONE `test_file_compare`
       - DONE ffi
         - DONE types
         - DONE funcall