|
Functional-lang
0.0
An example functional programming language
|
Atom expression. More...
#include <syntax.hpp>
Public Member Functions | |
| AtomExpr (GCMain &gc, const TokenPos &pos, const std::string &id) | |
| const std::string & | getName () const noexcept |
| virtual std::string | toString () const noexcept override |
| virtual bool | equals (const Expr *expr, bool exact=false) const noexcept override |
| Checks if this expression and expr have the same structure, Every expression has the same structure as '_' (it's called ANY after all). More... | |
Public Member Functions inherited from Expr | |
| Expr (GCMain &gc, ExprType type, const TokenPos &pos) | |
| std::size_t | getDepth () const noexcept |
| bool | hasLastEval () const noexcept |
| const TokenPos & | getTokenPos () const noexcept |
| ExprType | getExpressionType () const noexcept |
| virtual Expr * | eval (GCMain &gc, Environment &env) noexcept |
| Evaluates expression one time. More... | |
| Expr * | evalWithLookup (GCMain &gc, Environment &env) noexcept |
| virtual Expr * | replace (GCMain &gc, const std::string &name, Expr *expr) const noexcept |
| Replace all identifiers equal to name with expr. More... | |
| virtual std::vector< std::string > | getIdentifiers () const noexcept |
| virtual void | mark (GCMain &gc) noexcept override |
| If not marked mark itself and children. | |
| virtual Expr * | optimize (GCMain &gc) noexcept |
Public Member Functions inherited from GCObj | |
| GCObj (GCMain &main) noexcept | |
| Initialize as not marked. | |
| virtual bool | isMarked (GCMain &main) const noexcept |
Additional Inherited Members | |
Protected Member Functions inherited from GCObj | |
| virtual void | markSelf (GCMain &main) |
| Marks itself. | |
Protected Attributes inherited from Expr | |
| std::size_t | depth |
| Expr * | lastEval = nullptr |
Atom expression.
|
overridevirtualnoexcept |
Checks if this expression and expr have the same structure, Every expression has the same structure as '_' (it's called ANY after all).
| expr | The expression to compare to this. |
| exact | If true any must equal any and nothing else. Otherwise any is equal to anyting else. |
Reimplemented from Expr.
|
inlineoverridevirtualnoexcept |
Reimplemented from Expr.
1.8.15