Parser#
-
namespace stapl
-
namespace parsing
Classes and types related to parsing.
-
class Parser#
- #include <parser.h>
Parser for stapl.
This is a combination of Recursive Descent Parsing and Operator-Precedence Parsing.
Public Functions
-
Parser(std::string code)#
Constructor for parser.
- Parameters:
code – Code string to be parsed.
-
ast::LiteralExprNode<int> parse_int()#
Parse integer literals.
- Returns:
A parsed integer literal.
-
ast::LiteralExprNode<double> parse_float()#
Parse floating-point literals.
- Returns:
A parsed float literal.
-
ast::LiteralExprNode<bool> parse_bool()#
Parse boolean literals.
- Returns:
A parsed boolean literal.
-
ast::ExprNode parse_paren_expr()#
Parse an expression inside a paren.
- Returns:
A parsed expression in parens.
-
ast::ExprNode parse_primary()#
Parse primary, which is one of identifier, literal and paren expression.
- Returns:
A parsed primary node.
-
ast::ExprNode parse_unary_expr()#
Parse an unary expression.
- Returns:
A parsed unary expression node.
-
ast::ExprNode parse_binop_rhs(int prec, ast::ExprNode lhs)#
Parse a binary operator and rhs.
- Parameters:
prec – Precedence of the operator.
lhs – LHS of the operator.
- Returns:
A parsed binary expression node.
-
std::vector<ast::ExprNode> parse_call_arg_list()#
Parse argument list in function call.
- Returns:
A parsed argument list.
-
ast::ExprNode parse_identifier_or_func_call()#
Parse identifier or a function call.
- Returns:
A parsed expression, which is either an identifier or a function call.
-
ast::StmtNode parse_assign_or_call()#
Parse an assignment statement or function call.
- Returns:
A parsed statement node of assignment statement or function call.
-
ast::PrototypeNode parse_proto()#
Parse a function prototype.
- Returns:
A parsed function prototype.
-
ast::FunctionDeclNode parse_def()#
Parse a
defstatement.- Returns:
A parsed
defstatement.
-
ast::FunctionDeclNode parse_extern()#
Parse an extern function.
- Returns:
A parsed extern function.
Private Functions
-
int get_prec()#
Get precedence of
current_token.- Returns:
Precedence of
current_token.
-
Parser(std::string code)#
-
class Parser#
-
namespace parsing