mutable
A Database System for Research and Fast Prototyping
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Data Fields | Private Attributes
m::ast::Parser Struct Reference

#include <Parser.hpp>

Collaboration diagram for m::ast::Parser:
[legend]

Public Types

using follow_set_t = std::array< bool, unsigned(TokenType::TokenType_MAX)+1 >
 

Public Member Functions

 Parser (Lexer &lexer)
 
template<unsigned Idx = 0>
const Tokentoken ()
 
bool is (const TokenType tt)
 
bool no (const TokenType tt)
 
Token consume ()
 
bool accept (const TokenType tt)
 
bool expect (const TokenType tt)
 
void recover (const follow_set_t &FS)
 Consumes tokens until the first occurence of a token in the follow set FS is found.
 
template<typename T >
std::unique_ptr< Trecover (Token start, const follow_set_t &FS)
 Consumes tokens until the first occurence of a token in the follow set FS is found.
 
std::unique_ptr< Commandparse ()
 
std::unique_ptr< Instructionparse_Instruction ()
 
std::unique_ptr< Stmtparse_Stmt ()
 
std::unique_ptr< Stmtparse_CreateDatabaseStmt ()
 
std::unique_ptr< Stmtparse_DropDatabaseStmt ()
 
std::unique_ptr< Stmtparse_UseDatabaseStmt ()
 
std::unique_ptr< Stmtparse_CreateTableStmt ()
 
std::unique_ptr< Stmtparse_DropTableStmt ()
 
std::unique_ptr< Stmtparse_CreateIndexStmt ()
 
std::unique_ptr< Stmtparse_DropIndexStmt ()
 
std::unique_ptr< Stmtparse_SelectStmt ()
 
std::unique_ptr< Stmtparse_InsertStmt ()
 
std::unique_ptr< Stmtparse_UpdateStmt ()
 
std::unique_ptr< Stmtparse_DeleteStmt ()
 
std::unique_ptr< Stmtparse_ImportStmt ()
 
std::unique_ptr< Clauseparse_SelectClause ()
 
std::unique_ptr< Clauseparse_FromClause ()
 
std::unique_ptr< Clauseparse_WhereClause ()
 
std::unique_ptr< Clauseparse_GroupByClause ()
 
std::unique_ptr< Clauseparse_HavingClause ()
 
std::unique_ptr< Clauseparse_OrderByClause ()
 
std::unique_ptr< Clauseparse_LimitClause ()
 
std::unique_ptr< Exprparse_Expr (int precedence_lhs=0, std::unique_ptr< Expr > lhs=nullptr)
 
std::unique_ptr< Exprparse_designator ()
 
std::unique_ptr< Exprexpect_integer ()
 
const Typeparse_data_type ()
 

Data Fields

Lexerlexer
 
Diagnosticdiag
 

Private Attributes

std::array< Token, 2 > lookahead_
 

Detailed Description

Definition at line 16 of file Parser.hpp.

Member Typedef Documentation

◆ follow_set_t

using m::ast::Parser::follow_set_t = std::array<bool, unsigned(TokenType::TokenType_MAX) + 1>

Definition at line 18 of file Parser.hpp.

Constructor & Destructor Documentation

◆ Parser()

m::ast::Parser::Parser ( Lexer lexer)
inlineexplicit

Definition at line 28 of file Parser.hpp.

Member Function Documentation

◆ accept()

bool m::ast::Parser::accept ( const TokenType  tt)
inline

◆ consume()

Token m::ast::Parser::consume ( )
inline

◆ expect()

bool m::ast::Parser::expect ( const TokenType  tt)
inline

◆ expect_integer()

std::unique_ptr< Expr > Parser::expect_integer ( )

Definition at line 1075 of file Parser.cpp.

References consume(), diag, m::Diagnostic::e(), m::ast::Token::text, and token().

◆ is()

bool m::ast::Parser::is ( const TokenType  tt)
inline

Definition at line 40 of file Parser.hpp.

Referenced by parse_Instruction().

◆ no()

bool m::ast::Parser::no ( const TokenType  tt)
inline

Definition at line 41 of file Parser.hpp.

◆ parse()

std::unique_ptr< Command > Parser::parse ( )

Definition at line 98 of file Parser.cpp.

References parse_Instruction(), parse_Stmt(), and token().

Referenced by m::execute_file(), main(), and m::process_stream().

◆ parse_CreateDatabaseStmt()

std::unique_ptr< Stmt > Parser::parse_CreateDatabaseStmt ( )

Definition at line 192 of file Parser.cpp.

References consume(), expect(), and token().

Referenced by parse_Stmt().

◆ parse_CreateIndexStmt()

std::unique_ptr< Stmt > Parser::parse_CreateIndexStmt ( )

◆ parse_CreateTableStmt()

std::unique_ptr< Stmt > Parser::parse_CreateTableStmt ( )

◆ parse_data_type()

const Type * Parser::parse_data_type ( )

◆ parse_DeleteStmt()

std::unique_ptr< Stmt > Parser::parse_DeleteStmt ( )

Definition at line 639 of file Parser.cpp.

References consume(), expect(), parse_WhereClause(), and token().

Referenced by parse_Stmt().

◆ parse_designator()

std::unique_ptr< Expr > Parser::parse_designator ( )

Definition at line 1056 of file Parser.cpp.

References consume(), expect(), recover(), and token().

Referenced by parse_Expr().

◆ parse_DropDatabaseStmt()

std::unique_ptr< Stmt > Parser::parse_DropDatabaseStmt ( )

Definition at line 212 of file Parser.cpp.

References accept(), consume(), expect(), and token().

Referenced by parse_Stmt().

◆ parse_DropIndexStmt()

std::unique_ptr< Stmt > Parser::parse_DropIndexStmt ( )

Definition at line 480 of file Parser.cpp.

References accept(), consume(), expect(), and token().

Referenced by parse_Stmt().

◆ parse_DropTableStmt()

std::unique_ptr< Stmt > Parser::parse_DropTableStmt ( )

Definition at line 362 of file Parser.cpp.

References accept(), consume(), expect(), and token().

Referenced by parse_Stmt().

◆ parse_Expr()

std::unique_ptr< Expr > Parser::parse_Expr ( int  precedence_lhs = 0,
std::unique_ptr< Expr lhs = nullptr 
)

◆ parse_FromClause()

std::unique_ptr< Clause > Parser::parse_FromClause ( )

◆ parse_GroupByClause()

std::unique_ptr< Clause > Parser::parse_GroupByClause ( )

Definition at line 856 of file Parser.cpp.

References accept(), consume(), m::ast::Token::CreateArtificial(), expect(), parse_Expr(), and token().

Referenced by parse_SelectStmt().

◆ parse_HavingClause()

std::unique_ptr< Clause > Parser::parse_HavingClause ( )

Definition at line 887 of file Parser.cpp.

References consume(), expect(), parse_Expr(), and token().

Referenced by parse_SelectStmt().

◆ parse_ImportStmt()

std::unique_ptr< Stmt > Parser::parse_ImportStmt ( )

◆ parse_InsertStmt()

std::unique_ptr< Stmt > Parser::parse_InsertStmt ( )

◆ parse_Instruction()

std::unique_ptr< Instruction > Parser::parse_Instruction ( )

Definition at line 106 of file Parser.cpp.

References args, consume(), expect(), m::Catalog::Get(), is(), M_insist, and m::ast::Token::text.

Referenced by m::instruction_from_string(), and parse().

◆ parse_LimitClause()

std::unique_ptr< Clause > Parser::parse_LimitClause ( )

◆ parse_OrderByClause()

std::unique_ptr< Clause > Parser::parse_OrderByClause ( )

Definition at line 903 of file Parser.cpp.

References accept(), consume(), expect(), parse_Expr(), and token().

Referenced by parse_SelectStmt().

◆ parse_SelectClause()

std::unique_ptr< Clause > Parser::parse_SelectClause ( )

Definition at line 750 of file Parser.cpp.

References accept(), consume(), m::ast::Token::CreateArtificial(), expect(), parse_Expr(), and token().

Referenced by parse_SelectStmt().

◆ parse_SelectStmt()

std::unique_ptr< Stmt > Parser::parse_SelectStmt ( )

◆ parse_Stmt()

std::unique_ptr< Stmt > Parser::parse_Stmt ( )

◆ parse_UpdateStmt()

std::unique_ptr< Stmt > Parser::parse_UpdateStmt ( )

Definition at line 600 of file Parser.cpp.

References accept(), consume(), expect(), parse_Expr(), parse_WhereClause(), and token().

Referenced by parse_Stmt().

◆ parse_UseDatabaseStmt()

std::unique_ptr< Stmt > Parser::parse_UseDatabaseStmt ( )

Definition at line 241 of file Parser.cpp.

References consume(), expect(), and token().

Referenced by parse_Stmt().

◆ parse_WhereClause()

std::unique_ptr< Clause > Parser::parse_WhereClause ( )

Definition at line 840 of file Parser.cpp.

References consume(), expect(), parse_Expr(), and token().

Referenced by parse_DeleteStmt(), parse_SelectStmt(), and parse_UpdateStmt().

◆ recover() [1/2]

void m::ast::Parser::recover ( const follow_set_t FS)
inline

Consumes tokens until the first occurence of a token in the follow set FS is found.

Definition at line 66 of file Parser.hpp.

References and().

Referenced by parse_CreateTableStmt(), parse_data_type(), parse_designator(), parse_Expr(), and parse_InsertStmt().

◆ recover() [2/2]

template<typename T >
std::unique_ptr< T > m::ast::Parser::recover ( Token  start,
const follow_set_t FS 
)
inline

Consumes tokens until the first occurence of a token in the follow set FS is found.

Constructs an object of type T on start and returns a unique pointer to it. Here, type T is either ErrorStmt or ErrorClause.

Definition at line 72 of file Parser.hpp.

◆ token()

template<unsigned Idx = 0>
const Token & m::ast::Parser::token ( )
inline

Field Documentation

◆ diag

Diagnostic& m::ast::Parser::diag

◆ lexer

Lexer& m::ast::Parser::lexer

Definition at line 21 of file Parser.hpp.

◆ lookahead_

std::array<Token, 2> m::ast::Parser::lookahead_
private

Definition at line 25 of file Parser.hpp.


The documentation for this struct was generated from the following files: