Skip to content

Commit

Permalink
Rename templates to TypedDfaState and TypedNfaState.
Browse files Browse the repository at this point in the history
  • Loading branch information
SharafMohamed committed Dec 8, 2024
1 parent 9c2ad81 commit c4fc96b
Show file tree
Hide file tree
Showing 14 changed files with 391 additions and 391 deletions.
10 changes: 5 additions & 5 deletions src/log_surgeon/Lalr1Parser.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -202,8 +202,8 @@ struct ItemSet {
std::vector<Action> m_actions;
};

template <typename NfaStateType, typename DfaStateType>
class Lalr1Parser : public Parser<NfaStateType, DfaStateType> {
template <typename TypedNfaState, typename TypedDfaState>
class Lalr1Parser : public Parser<TypedNfaState, TypedDfaState> {
public:
Lalr1Parser();

Expand All @@ -214,7 +214,7 @@ class Lalr1Parser : public Parser<NfaStateType, DfaStateType> {
*/
auto add_rule(
std::string const& name,
std::unique_ptr<finite_automata::RegexAST<NfaStateType>> rule
std::unique_ptr<finite_automata::RegexAST<TypedNfaState>> rule
) -> void override;

/**
Expand All @@ -224,7 +224,7 @@ class Lalr1Parser : public Parser<NfaStateType, DfaStateType> {
*/
auto add_token_group(
std::string const& name,
std::unique_ptr<finite_automata::RegexASTGroup<NfaStateType>> rule_group
std::unique_ptr<finite_automata::RegexASTGroup<TypedNfaState>> rule_group
) -> void;

/**
Expand Down Expand Up @@ -276,7 +276,7 @@ class Lalr1Parser : public Parser<NfaStateType, DfaStateType> {
*/
auto report_error() -> std::string;

/* Lexer<NfaStateType, DfaStateType> m_lexer; */
/* Lexer<TypedNfaState, TypedDfaState> m_lexer; */
std::stack<MatchedSymbol> m_parse_stack_matches;
std::stack<ItemSet*> m_parse_stack_states;
ItemSet* m_root_item_set_ptr{nullptr};
Expand Down
122 changes: 61 additions & 61 deletions src/log_surgeon/Lalr1Parser.tpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ namespace {
}
} // namespace

template <typename NfaStateType, typename DfaStateType>
Lalr1Parser<NfaStateType, DfaStateType>::Lalr1Parser() {
template <typename TypedNfaState, typename TypedDfaState>
Lalr1Parser<TypedNfaState, TypedDfaState>::Lalr1Parser() {
m_terminals.insert((uint32_t)SymbolId::TokenEnd);
m_terminals.insert((uint32_t)SymbolId::TokenUncaughtString);
m_terminals.insert((uint32_t)SymbolId::TokenInt);
Expand All @@ -65,52 +65,52 @@ Lalr1Parser<NfaStateType, DfaStateType>::Lalr1Parser() {
m_terminals.insert((uint32_t)SymbolId::TokenNewline);
}

template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::add_rule(
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::add_rule(
std::string const& name,
std::unique_ptr<finite_automata::RegexAST<NfaStateType>> rule
std::unique_ptr<finite_automata::RegexAST<TypedNfaState>> rule
) {
Parser<NfaStateType, DfaStateType>::add_rule(name, std::move(rule));
Parser<TypedNfaState, TypedDfaState>::add_rule(name, std::move(rule));
m_terminals.insert(this->m_lexer.m_symbol_id[name]);
}

template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::add_token_group(
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::add_token_group(
std::string const& name,
std::unique_ptr<finite_automata::RegexASTGroup<NfaStateType>> rule_group
std::unique_ptr<finite_automata::RegexASTGroup<TypedNfaState>> rule_group
) {
add_rule(name, std::move(rule_group));
}

template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::add_token_chain(
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::add_token_chain(
std::string const& name,
std::string const& chain
) {
assert(chain.size() > 1);
std::unique_ptr<finite_automata::RegexASTLiteral<NfaStateType>> first_char_rule
= std::make_unique<finite_automata::RegexASTLiteral<NfaStateType>>(chain[0]);
std::unique_ptr<finite_automata::RegexASTLiteral<NfaStateType>> second_char_rule
= std::make_unique<finite_automata::RegexASTLiteral<NfaStateType>>(chain[1]);
std::unique_ptr<finite_automata::RegexASTCat<NfaStateType>> rule_chain
= std::make_unique<finite_automata::RegexASTCat<NfaStateType>>(
std::unique_ptr<finite_automata::RegexASTLiteral<TypedNfaState>> first_char_rule
= std::make_unique<finite_automata::RegexASTLiteral<TypedNfaState>>(chain[0]);
std::unique_ptr<finite_automata::RegexASTLiteral<TypedNfaState>> second_char_rule
= std::make_unique<finite_automata::RegexASTLiteral<TypedNfaState>>(chain[1]);
std::unique_ptr<finite_automata::RegexASTCat<TypedNfaState>> rule_chain
= std::make_unique<finite_automata::RegexASTCat<TypedNfaState>>(
std::move(first_char_rule),
std::move(second_char_rule)
);
for (uint32_t i = 2; i < chain.size(); i++) {
char next_char = chain[i];
std::unique_ptr<finite_automata::RegexASTLiteral<NfaStateType>> next_char_rule
= std::make_unique<finite_automata::RegexASTLiteral<NfaStateType>>(next_char);
rule_chain = std::make_unique<finite_automata::RegexASTCat<NfaStateType>>(
std::unique_ptr<finite_automata::RegexASTLiteral<TypedNfaState>> next_char_rule
= std::make_unique<finite_automata::RegexASTLiteral<TypedNfaState>>(next_char);
rule_chain = std::make_unique<finite_automata::RegexASTCat<TypedNfaState>>(
std::move(rule_chain),
std::move(next_char_rule)
);
}
add_rule(name, std::move(rule_chain));
}

template <typename NfaStateType, typename DfaStateType>
auto Lalr1Parser<NfaStateType, DfaStateType>::add_production(
template <typename TypedNfaState, typename TypedDfaState>
auto Lalr1Parser<TypedNfaState, TypedDfaState>::add_production(
std::string const& head,
std::vector<std::string> const& body,
SemanticRule semantic_rule
Expand Down Expand Up @@ -150,8 +150,8 @@ auto Lalr1Parser<NfaStateType, DfaStateType>::add_production(
return n;
}

template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::generate() {
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::generate() {
this->m_lexer.generate();
assert(!m_productions.empty());
generate_lr0_kernels();
Expand All @@ -160,8 +160,8 @@ void Lalr1Parser<NfaStateType, DfaStateType>::generate() {
generate_lalr1_parsing_table();
}

template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::generate_lr0_kernels() {
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::generate_lr0_kernels() {
Production* root_production_ptr = m_productions[m_root_production_id].get();
Item root_item(root_production_ptr, 0, cNullSymbol);
std::unique_ptr<ItemSet> item_set0 = std::make_unique<ItemSet>();
Expand Down Expand Up @@ -190,8 +190,8 @@ void Lalr1Parser<NfaStateType, DfaStateType>::generate_lr0_kernels() {
}
}

template <typename NfaStateType, typename DfaStateType>
auto Lalr1Parser<NfaStateType, DfaStateType>::lr_closure_helper(
template <typename TypedNfaState, typename TypedDfaState>
auto Lalr1Parser<TypedNfaState, TypedDfaState>::lr_closure_helper(
ItemSet* item_set_ptr,
Item const* item,
uint32_t* next_symbol
Expand All @@ -210,8 +210,8 @@ auto Lalr1Parser<NfaStateType, DfaStateType>::lr_closure_helper(
return false;
}

template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::generate_lr0_closure(ItemSet* item_set_ptr) {
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::generate_lr0_closure(ItemSet* item_set_ptr) {
std::deque<Item> q(
item_set_ptr->m_kernel.begin(),
item_set_ptr->m_kernel.end()
Expand All @@ -233,8 +233,8 @@ void Lalr1Parser<NfaStateType, DfaStateType>::generate_lr0_closure(ItemSet* item
}
}

template <typename NfaStateType, typename DfaStateType>
auto Lalr1Parser<NfaStateType, DfaStateType>::go_to(
template <typename TypedNfaState, typename TypedDfaState>
auto Lalr1Parser<TypedNfaState, TypedDfaState>::go_to(
ItemSet* from_item_set,
uint32_t const& next_symbol
) -> ItemSet* {
Expand Down Expand Up @@ -266,8 +266,8 @@ auto Lalr1Parser<NfaStateType, DfaStateType>::go_to(
return nullptr;
}

template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::generate_first_sets() {
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::generate_first_sets() {
for (uint32_t const& s : m_terminals) {
m_firsts.insert(std::pair<uint32_t, std::set<uint32_t>>(s, {s}));
}
Expand Down Expand Up @@ -298,8 +298,8 @@ void Lalr1Parser<NfaStateType, DfaStateType>::generate_first_sets() {
}
}

template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::generate_lr1_item_sets() {
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::generate_lr1_item_sets() {
for (std::map<std::set<Item>, std::unique_ptr<ItemSet>>::value_type const& kv : m_lr0_item_sets)
{
for (Item const& l0_item : kv.second->m_kernel) {
Expand Down Expand Up @@ -382,8 +382,8 @@ void Lalr1Parser<NfaStateType, DfaStateType>::generate_lr1_item_sets() {
}
}

template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::generate_lr1_closure(ItemSet* item_set_ptr) {
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::generate_lr1_closure(ItemSet* item_set_ptr) {
std::deque<Item> queue(item_set_ptr->m_kernel.begin(), item_set_ptr->m_kernel.end());
while (!queue.empty()) {
Item item = queue.back();
Expand Down Expand Up @@ -418,20 +418,20 @@ void Lalr1Parser<NfaStateType, DfaStateType>::generate_lr1_closure(ItemSet* item
}
}

template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::generate_lalr1_parsing_table() {
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::generate_lalr1_parsing_table() {
generate_lalr1_goto();
generate_lalr1_action();
}

template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::generate_lalr1_goto() {
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::generate_lalr1_goto() {
// done already at end of generate_lr1_item_sets()?
}

// Dragon book page 253
template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::generate_lalr1_action() {
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::generate_lalr1_action() {
for (std::map<std::set<Item>, std::unique_ptr<ItemSet>>::value_type const& kv : m_lr1_item_sets)
{
ItemSet* item_set_ptr = kv.second.get();
Expand Down Expand Up @@ -518,8 +518,8 @@ void Lalr1Parser<NfaStateType, DfaStateType>::generate_lalr1_action() {
}
}

template <typename NfaStateType, typename DfaStateType>
auto Lalr1Parser<NfaStateType, DfaStateType>::get_input_after_last_newline(
template <typename TypedNfaState, typename TypedDfaState>
auto Lalr1Parser<TypedNfaState, TypedDfaState>::get_input_after_last_newline(
std::stack<MatchedSymbol>& parse_stack_matches
) -> std::string {
std::string error_message_reversed;
Expand Down Expand Up @@ -557,8 +557,8 @@ auto Lalr1Parser<NfaStateType, DfaStateType>::get_input_after_last_newline(
return error_message_reversed;
}

template <typename NfaStateType, typename DfaStateType>
auto Lalr1Parser<NfaStateType, DfaStateType>::get_input_until_next_newline(Token* error_token
template <typename TypedNfaState, typename TypedDfaState>
auto Lalr1Parser<TypedNfaState, TypedDfaState>::get_input_until_next_newline(Token* error_token
) -> std::string {
std::string rest_of_line;
bool next_is_end_token = (error_token->m_type_ids_ptr->at(0) == (uint32_t)SymbolId::TokenEnd);
Expand All @@ -577,8 +577,8 @@ auto Lalr1Parser<NfaStateType, DfaStateType>::get_input_until_next_newline(Token
return rest_of_line;
}

template <typename NfaStateType, typename DfaStateType>
auto Lalr1Parser<NfaStateType, DfaStateType>::report_error() -> std::string {
template <typename TypedNfaState, typename TypedDfaState>
auto Lalr1Parser<TypedNfaState, TypedDfaState>::report_error() -> std::string {
assert(m_next_token == std::nullopt);
assert(!m_parse_stack_matches.empty());
MatchedSymbol top_symbol = std::move(m_parse_stack_matches.top());
Expand All @@ -604,7 +604,7 @@ auto Lalr1Parser<NfaStateType, DfaStateType>::report_error() -> std::string {
if (action.index() != 0) {
error_type += "'";
if (auto* regex_ast_literal
= dynamic_cast<finite_automata::RegexASTLiteral<NfaStateType>*>(
= dynamic_cast<finite_automata::RegexASTLiteral<TypedNfaState>*>(
this->m_lexer.get_rule(i)
))
{
Expand All @@ -628,8 +628,8 @@ auto Lalr1Parser<NfaStateType, DfaStateType>::report_error() -> std::string {
return error_string;
}

template <typename NfaStateType, typename DfaStateType>
auto Lalr1Parser<NfaStateType, DfaStateType>::parse(Reader& reader) -> NonTerminal {
template <typename TypedNfaState, typename TypedDfaState>
auto Lalr1Parser<TypedNfaState, TypedDfaState>::parse(Reader& reader) -> NonTerminal {
reset();
m_parse_stack_states.push(m_root_item_set_ptr);
bool accept = false;
Expand All @@ -650,8 +650,8 @@ auto Lalr1Parser<NfaStateType, DfaStateType>::parse(Reader& reader) -> NonTermin
return std::move(std::get<NonTerminal>(m));
}

template <typename NfaStateType, typename DfaStateType>
void Lalr1Parser<NfaStateType, DfaStateType>::reset() {
template <typename TypedNfaState, typename TypedDfaState>
void Lalr1Parser<TypedNfaState, TypedDfaState>::reset() {
m_next_token = std::nullopt;
while (!m_parse_stack_states.empty()) {
m_parse_stack_states.pop();
Expand All @@ -663,8 +663,8 @@ void Lalr1Parser<NfaStateType, DfaStateType>::reset() {
this->m_lexer.reset();
}

template <typename NfaStateType, typename DfaStateType>
auto Lalr1Parser<NfaStateType, DfaStateType>::get_next_symbol() -> Token {
template <typename TypedNfaState, typename TypedDfaState>
auto Lalr1Parser<TypedNfaState, TypedDfaState>::get_next_symbol() -> Token {
if (m_next_token == std::nullopt) {
Token token;
if (ErrorCode error = this->m_lexer.scan(m_input_buffer, token);
Expand All @@ -679,8 +679,8 @@ auto Lalr1Parser<NfaStateType, DfaStateType>::get_next_symbol() -> Token {
return s;
}

template <typename NfaStateType, typename DfaStateType>
auto Lalr1Parser<NfaStateType, DfaStateType>::parse_advance(Token& next_token, bool* accept)
template <typename TypedNfaState, typename TypedDfaState>
auto Lalr1Parser<TypedNfaState, TypedDfaState>::parse_advance(Token& next_token, bool* accept)
-> bool {
for (auto const type : *next_token.m_type_ids_ptr) {
if (parse_symbol(type, next_token, accept)) {
Expand All @@ -693,8 +693,8 @@ auto Lalr1Parser<NfaStateType, DfaStateType>::parse_advance(Token& next_token, b
return true;
}

template <typename NfaStateType, typename DfaStateType>
auto Lalr1Parser<NfaStateType, DfaStateType>::parse_symbol(
template <typename TypedNfaState, typename TypedDfaState>
auto Lalr1Parser<TypedNfaState, TypedDfaState>::parse_symbol(
uint32_t const& type_id,
Token& next_token,
bool* accept
Expand Down
Loading

0 comments on commit c4fc96b

Please sign in to comment.