Functional-lang  0.0
An example functional programming language
Classes | Enumerations | Functions
syntax.hpp File Reference

A syntax parser/Syntax analysis. More...

#include "func/global.hpp"
#include "func/lexer.hpp"
#include "func/gc.hpp"

Go to the source code of this file.

Classes

class  Environment
 Environment for accessing variables. More...
 
class  StackFrameObj< T >
 Class for adding Expr's to stack frame of Environment. More...
 
class  Expr
 Main expression handle (should only be used as parent class). More...
 
class  BiOpExpr
 Binary operator expression. More...
 
class  UnOpExpr
 
class  NumExpr
 Floating point number expression. More...
 
class  IntExpr
 Integer number expression. More...
 
class  IdExpr
 Identifier expression. More...
 
class  LambdaExpr
 Lambda function expression. More...
 
class  AtomExpr
 Atom expression. More...
 
class  IfExpr
 If-then-else expression. More...
 
class  AnyExpr
 any expression More...
 
class  LetExpr
 Let expression. More...
 
class  FunctionExpr
 Represents a named function. More...
 

Enumerations

enum  ExprType : int {
  expr_biop, expr_unop, expr_num, expr_int,
  expr_id, expr_lambda, expr_atom, expr_if,
  expr_any, expr_let, expr_fn
}
 Types of expressions. More...
 

Functions

std::vector< Expr * >::iterator find (std::vector< Expr * > &vec, Expr *expr) noexcept
 
const Expr * assignExpressions (GCMain &gc, Environment &env, const Expr *thisExpr, const Expr *lhs, const Expr *rhs) noexcept
 
Expr * reportSyntaxError (Lexer &lexer, const std::string &msg, const TokenPos &pos)
 
Expr * eval (GCMain &gc, Environment &env, Expr *expr) noexcept
 Executes eval function for given expr as long as different expr is returned. More...
 
void breadthEval (GCMain &gc, Environment &env, StackFrameObj< Expr > &lhs, StackFrameObj< Expr > &rhs) noexcept
 Executes eval function for given expressions as long as differenct expr returned. Breadth first execution. More...
 

Detailed Description

A syntax parser/Syntax analysis.

Enumeration Type Documentation

◆ ExprType

enum ExprType : int

Types of expressions.

See also
Expr, Expr::getExpressionType
Enumerator
expr_biop 

Binary operator.

expr_unop 

Unary left-operator.

expr_num 

Floating-point Number.

expr_int 

Integer number.

expr_id 

Identifier.

expr_lambda 

Lambda function.

expr_atom 

Atom.

expr_if 

If-then-else.

expr_any 

Any '_'.

expr_let 

Let statement.

expr_fn 

Intern statement for named functions.

Function Documentation

◆ breadthEval()

void breadthEval ( GCMain &  gc,
Environment &  env,
StackFrameObj< Expr > &  lhs,
StackFrameObj< Expr > &  rhs 
)
noexcept

Executes eval function for given expressions as long as differenct expr returned. Breadth first execution.

Parameters
gc
env
lhs
rhs

◆ eval()

Expr* eval ( GCMain &  gc,
Environment &  env,
Expr *  expr 
)
noexcept

Executes eval function for given expr as long as different expr is returned.

Parameters
gc
envEnvironment to use
exprExpression to evaluate