more ramblings in readme
This commit is contained in:
parent
b55e868817
commit
9f770670e5
1 changed files with 27 additions and 1 deletions
|
|
@ -70,6 +70,32 @@ The directory 'fun' contains the functionality for the function and terminal set
|
||||||
with ERC's etc. fun/FunDef.cpp contains the definition of the functionality. Stuff can be
|
with ERC's etc. fun/FunDef.cpp contains the definition of the functionality. Stuff can be
|
||||||
added here, but best to contact me if you miss particular functions.
|
added here, but best to contact me if you miss particular functions.
|
||||||
|
|
||||||
|
With the sym and the function set in place, some fairly nice overloading is possible. A quick tour:
|
||||||
|
|
||||||
|
To create a variable that reads the first value from the inputs, do:
|
||||||
|
|
||||||
|
Sym var = SymVar(0);
|
||||||
|
|
||||||
|
To create a constant of value 0.4432, do
|
||||||
|
|
||||||
|
Sym cnst = SymConst(0.4432);
|
||||||
|
|
||||||
|
The constants are also stored uniquely so that:
|
||||||
|
|
||||||
|
Sym cnst2 = SymConst(0.4432)
|
||||||
|
|
||||||
|
will lead to:
|
||||||
|
|
||||||
|
cnst == cnst2
|
||||||
|
|
||||||
|
to be true (this happens without value compare, they point to the same element in the hashtable)
|
||||||
|
|
||||||
|
To add two values, do
|
||||||
|
|
||||||
|
Sym sym = var + const;
|
||||||
|
|
||||||
|
This will create a tree with tree nodes. All other operations work identically.
|
||||||
|
|
||||||
=== Evaluation (eval/) ===
|
=== Evaluation (eval/) ===
|
||||||
|
|
||||||
The second important thing is evaluation. Although Syms can be evaluated through an interpreter,
|
The second important thing is evaluation. Although Syms can be evaluated through an interpreter,
|
||||||
|
|
@ -118,7 +144,7 @@ The three compilation functions can be found in eval/sym_compile.h
|
||||||
|
|
||||||
A limiting factor in tinycc is that the struct TCCState that is used to hold the compilation context,
|
A limiting factor in tinycc is that the struct TCCState that is used to hold the compilation context,
|
||||||
is not really self-contained. This unfortunately means that with every call to 'compile' ALL previous
|
is not really self-contained. This unfortunately means that with every call to 'compile' ALL previous
|
||||||
pointers that have been produced are invalidated. I'm still looking at ways to circumvent this.
|
pointers that have been produced become unsafe for use. I'm still looking at ways to circumvent this.
|
||||||
|
|
||||||
To work with mathsym, a few small changes in tccelf.c were necessary, check README.TCC for details.
|
To work with mathsym, a few small changes in tccelf.c were necessary, check README.TCC for details.
|
||||||
|
|
||||||
|
|
|
||||||
Reference in a new issue