A minimalistic programming language written in C89.
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
1.2 KiB

  1. # `ink`
  2. `ink` is a minimalistic interpreted programming language, tentatively implemented exclusively in C89. It features
  3. coroutines and can currently only manipulate integers. Part of the code may not be compliant with C89 and I will try to
  4. fix that in time.
  5. It is fully self-contained and doesn't rely on a working standard library beyond the following:
  6. - `malloc`
  7. - `realloc`
  8. - `free`
  9. - `putchar`
  10. To make the library not use the standard library, build it with `NOSTDLIB` defined as a preprocessor directive.
  11. All of these functions need to work for `ink` to work. It is easy to add new functions to the interpreter. I added a
  12. garbage collector to handle cleaning dynamically allocated resources.
  13. It is possible to segregate unsafe allocations (allocations that should be hidden from the interpreter) by setting the
  14. `inner_` versions of the library functions to different allocation functions.
  15. ## Limits
  16. - Token size is limited to 127 bytes (see `ink_lex`)
  17. - Values and indices are limited to the platform size of `int`
  18. - Main function has a size limit of 256 tokens (see `ink_compile`)
  19. - Functions have a size limit of 256 tokens (see `ink_parse`)
  20. - Functions have a count limit 128 labels (see `ink_parse`)
  21. - Only non-main functions can use labels