diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-03-16 14:15:42 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-03-16 14:15:42 +0100 |
| commit | 8c8f6155f1b05230c271059c52a503211aec872b (patch) | |
| tree | 53626fa32ad3f6178b42a9dc5db588ee01277cd5 /src/manifest | |
| parent | d17423cba7c15a26f835a6fa578ecb48b80d8aab (diff) | |
| download | computorv2-8c8f6155f1b05230c271059c52a503211aec872b.tar.gz computorv2-8c8f6155f1b05230c271059c52a503211aec872b.tar.bz2 computorv2-8c8f6155f1b05230c271059c52a503211aec872b.zip | |
file Renaming, basic REPL
Diffstat (limited to 'src/manifest')
| -rw-r--r-- | src/manifest | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/src/manifest b/src/manifest deleted file mode 100644 index 7216fa7..0000000 --- a/src/manifest +++ /dev/null @@ -1,96 +0,0 @@ -Data struct: - - expression - - matrix - - complex - - - polynomial - -State Data struct: - - function - - variable - - - -Instruction/line: - if is '?' evaluate label else declare label. - -instruction ::= <label> '=' (<expr> | '?') - - -Declaration: - label is a declaration of function or variable name - -label ::= <funcDecl> | <var> -funcDecl ::= <var> '(' <var> ')' -var ::= [a-zA-Z]+ - - -Expression: - -5. real imag matrix -4. + - -3. * / % ** -2. ^ -1. ( ) -- not an operator - -expr ::= <sum> | <imag> | <matrix> | <real> | <var> | <funcExpr> - -Arithmetic: - -sum ::= <term> (+ | -) <sum> | <term> -term ::= <factor> (* | / | % | **)? <term> | <factor> -- default to '*' -factor ::= <base> '^' <factor> | <base> -base ::= '(' <expr> ')' | <expr> - -Leaf: - -real ::= [0-9]+(\.[0-9]+)? -imag ::= <real> '*'? 'i' -matrix ::= '[' (<matrixRow> ';')* ']' -matrixRow ::= '[' (<expr> ',')* ']' -fundExpr ::= <var> '(' <expr> ')' - -REPL: - -1. read user input -2. parse it into an ast -3. reduce the ast to the minimum possible form -4. - -every expression is a binary tree, except () which can be interpreted by changing the -structure of the tree. - -operators and operand are both expression (tree nodes). - -operators always need 2 operand (not leaf node) -operand need 0 (leaf node) - -evaluation of operand return the operand -evaluation of operator, evaluate his childs, perform the operation on them, return the result - -fold? -!monoid - - + - / \ - * \ - / \ \ 3 * 4 + (5 - 3i) -3 4 - - / \ - 5 3i - -Node + -|_ Node * -| |_ Leaf 3 -| |_ Leaf 4 -| -|_ Node - - |_ Leaf 5 - |_ Leaf 3i - - -i^0 = 1 -i^1 = sqrt(-1) = i -i^2 = -1 -i^3 = -sqrt(-1) = -i -i^4 = 1 |
