While working with Linear Algebra, I’ve decided to build a toy interpreter in C to play around. This was a quite interesting experiment for myself, since it was the first time I’ve built a complete (with tokenizer, compiler, and interpreter) and auto-suficient (no external dependencies, no additional tools) interpreter from the ground.
The interpreter is currently 1076 lines long, and is based on a tokenizer for the grammar, a compiler which creates a list of trees of expressions, an interpreter for the generated structure, and two modules for symbol maintenance and matrix operations.
Here is a quick example:
a = 2*3+4/2 print(a) b = [1,2,3|4,5,6] c = [1,2,3|4,5,6] print((b+c)/2) print(trans(b)) d = [1,0|-2,3|5,4|0,1] e = [0,6,1|3,8,-2] print(d*e) f = [1,2|3,4] print(det(f)) f = [2,3,4|-5,5,6|7,8,9] print(det(f)) f = [1,-4,2,-2|4,7,-3,5|3,0,8,0|-5,-1,6,9] print(det(f))
And here is the output:
8 [ 1, 2, 3 | 4, 5, 6 ] [ 1, 4 | 2, 5 | 3, 6 ] [ 0, 6, 1 | 9, 12, -8 | 12, 62, -3 | 3, 8, -2 ] -2 -45 2042
Wow! Cool design! Webmaster respect!