Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/t00sh/interpret

Basic interpreter for a basic language. (totally invented :))
https://github.com/t00sh/interpret

Last synced: about 2 months ago
JSON representation

Basic interpreter for a basic language. (totally invented :))

Lists

README

        

interpret
=========

Basic interpreter for EVAL language. (totally invented :))

### USAGE
interpret < file

### EVAL language

The language is executed line per line.

##### Loop
while(E)
E
end

##### Test
if(E)
E
end

##### Variable declaration + affectation
V = E

##### Function call
foo(E)

##### Comments
Starting by #
eg:
a = a+b # A comment

##### Grammar
E = expression
F = function
R = float
o = operator
V = variable

E --> if(E)
E --> while(E)
E --> end
E --> (E)
E --> F(E)
E --> V=E
E --> R
E --> V
E --> EoE

o --> [+ - / ^ * % > < <= >= == !=]{1}
V --> [A-Za-z]+
F --> [A-Za-z]+
R --> [-+]{0,1}[0-9.]+

##### Operators
* a = b -> true if a is egual b
* a > b -> true if a greater than b
* a < b -> true if a lower than b
* a ~ b -> true if a not egual to b
* a + b -> a add b
* a - b -> a sub b
* a * b -> a mul b
* a % b -> a mod b
* a / b -> a div b
* a ^ b -> a power b

##### Operators priority
* =, >, >, <, ~ ===> 1
* +,- ===> 2
* *,/,% ===> 3
* ^ ===> 4

You can use the () for change the priority.

##### Predefined functions
print(E) ===> print the value of the expression
abs(E) ===> calc the absolute value of the expression
sqrt(E) ===> function sqrt
cos(E) ===> function cos

### EXAMPLES
You can read test.txt, it's a basic program written in EVAL.
It print all prime numbers between 1 and 1000.

### TODO
- The ELSE structure : if(E) E else E end
- Functions definitions : def:f(x) E end
- Multi-parameters functions
- Better errors management
- Multi-chars operators
- Multi-types (dynamic) : double, int, string, list
- Very big numbers.