Functional-lang  0.0
An example functional programming language
Public Member Functions | List of all members
AtomExpr Class Reference

Atom expression. More...

#include <syntax.hpp>

Inheritance diagram for AtomExpr:
Expr GCObj

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
 

Detailed Description

Atom expression.

Member Function Documentation

◆ equals()

virtual bool AtomExpr::equals ( const Expr *  expr,
bool  exact = false 
) const
overridevirtualnoexcept

Checks if this expression and expr have the same structure, Every expression has the same structure as '_' (it's called ANY after all).

Parameters
exprThe expression to compare to this.
exactIf true any must equal any and nothing else. Otherwise any is equal to anyting else.

Reimplemented from Expr.

◆ toString()

virtual std::string AtomExpr::toString ( ) const
inlineoverridevirtualnoexcept
Returns
Returns expression in functional-lang (the programming language to parse).

Reimplemented from Expr.


The documentation for this class was generated from the following file: