You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Clyne Sullivan 952cb2d6db big changes; no ints; things work better 7 years ago
.gitignore indent fixes, nested conditionals 7 years ago
Makefile big changes; no ints; things work better 7 years ago
README.md conditionals, returns, cleaner code 7 years ago
builtins.c big changes; no ints; things work better 7 years ago
builtins.h memory leak fixes, stuff 7 years ago
memory.h stdlib independence, fixes for calculator 7 years ago
ops.c big changes; no ints; things work better 7 years ago
ops.h conditionals, returns, cleaner code 7 years ago
parser.c big changes; no ints; things work better 7 years ago
parser.h big changes; no ints; things work better 7 years ago
script stdlib independence, fixes for calculator 7 years ago
shelpers.c stdlib independence, fixes for calculator 7 years ago
shelpers.h conditionals, returns, cleaner code 7 years ago
stack.c big changes; no ints; things work better 7 years ago
stack.h big changes; no ints; things work better 7 years ago
stdlib.h stable for calculator 7 years ago
variable.c big changes; no ints; things work better 7 years ago
variable.h big changes; no ints; things work better 7 years ago

README.md

interpreter

This project aims to provide a very minimal scripting language for embedded systems. Many other languages already exist, such as Lua, Tcl, or BASIC; however, most implementations require certain system calls like a read() and write(), as they expect a filesystem. This interpreter aims to be as independent and portable as possible: parsing script from strings one at a time, having minimal built-in functions (so the user can define their own prints and such), and only requiring a few standard library functions.

To use this program with your own device, you need some malloc/free implementation, and string functions like those in string.h, atoi, and snprintf. Some of these functions may become coded in so that a standard library isn't required.

Only a few commands are built in to the interpreter:

  • set - set variables
  • func/end - define functions
  • if/end - if conditional
  • do/while
  • ret - return value from function

Other features:

  • function/variable defining in c
  • expression solving
  • no local variables
  • whitespace hopefully ignored

Soon:

  • error messages
  • arrays?
  • maybe for loops

This project is still in heavy development, so don't expect much. To include it in your own project, just link in parser.o and use the header files.