Rename state_t to parser_state_t
This commit is contained in:
parent
63640911b9
commit
679aa45884
6 changed files with 14 additions and 14 deletions
|
@ -1,7 +1,7 @@
|
||||||
add_executable(solar
|
add_executable(solar
|
||||||
lex.cpp
|
lex.cpp
|
||||||
parser.cpp
|
parser.cpp
|
||||||
|
parser_state.cpp
|
||||||
solar.cpp
|
solar.cpp
|
||||||
state.cpp
|
|
||||||
)
|
)
|
||||||
set_target_properties(solar PROPERTIES COMPILE_FLAGS "-std=c++11 -Wall")
|
set_target_properties(solar PROPERTIES COMPILE_FLAGS "-std=c++11 -Wall")
|
||||||
|
|
|
@ -49,7 +49,7 @@ parser_t * parser_alloc(void) {
|
||||||
return parser;
|
return parser;
|
||||||
}
|
}
|
||||||
|
|
||||||
int parser_push(parser_t *parser, int token, const value_t *value, state_t *state) {
|
int parser_push(parser_t *parser, int token, const value_t *value, parser_state_t *state) {
|
||||||
switch (parser->state) {
|
switch (parser->state) {
|
||||||
case STATE_INIT:
|
case STATE_INIT:
|
||||||
switch (token) {
|
switch (token) {
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "state.hpp"
|
#include "parser_state.hpp"
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ typedef struct parser parser_t;
|
||||||
|
|
||||||
|
|
||||||
parser_t * parser_alloc(void);
|
parser_t * parser_alloc(void);
|
||||||
int parser_push(parser_t *parser, int token, const value_t *value, state_t *state);
|
int parser_push(parser_t *parser, int token, const value_t *value, parser_state_t *state);
|
||||||
void parser_free(parser_t *parser);
|
void parser_free(parser_t *parser);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,12 +24,12 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "state.hpp"
|
#include "parser_state.hpp"
|
||||||
|
|
||||||
|
|
||||||
namespace solar {
|
namespace solar {
|
||||||
|
|
||||||
void state_t::new_rule(const char *nonterm) {
|
void parser_state_t::new_rule(const char *nonterm) {
|
||||||
if (rules.empty()) {
|
if (rules.empty()) {
|
||||||
// start rule
|
// start rule
|
||||||
current.get_rhs().emplace_back(symbol_t::make_nonterm(nonterm));
|
current.get_rhs().emplace_back(symbol_t::make_nonterm(nonterm));
|
||||||
|
@ -40,19 +40,19 @@ void state_t::new_rule(const char *nonterm) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void state_t::add_rule_nonterminal(const char *nonterm) {
|
void parser_state_t::add_rule_nonterminal(const char *nonterm) {
|
||||||
current.get_rhs().emplace_back(symbol_t::make_nonterm(nonterm));
|
current.get_rhs().emplace_back(symbol_t::make_nonterm(nonterm));
|
||||||
}
|
}
|
||||||
|
|
||||||
void state_t::add_rule_terminal(const char *term) {
|
void parser_state_t::add_rule_terminal(const char *term) {
|
||||||
current.get_rhs().emplace_back(symbol_t::make_term(term));
|
current.get_rhs().emplace_back(symbol_t::make_term(term));
|
||||||
}
|
}
|
||||||
|
|
||||||
void state_t::add_rule_terminal(unsigned char term) {
|
void parser_state_t::add_rule_terminal(unsigned char term) {
|
||||||
current.get_rhs().emplace_back(symbol_t::make_char(term));
|
current.get_rhs().emplace_back(symbol_t::make_char(term));
|
||||||
}
|
}
|
||||||
|
|
||||||
void state_t::add_rule() {
|
void parser_state_t::add_rule() {
|
||||||
rules.emplace(current.get_lhs(), current);
|
rules.emplace(current.get_lhs(), current);
|
||||||
|
|
||||||
while (current.has_next()) {
|
while (current.has_next()) {
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
namespace solar {
|
namespace solar {
|
||||||
|
|
||||||
class state_t {
|
class parser_state_t {
|
||||||
private:
|
private:
|
||||||
std::multimap<std::string, item_t> rules;
|
std::multimap<std::string, item_t> rules;
|
||||||
std::multimap<symbol_t, item_t> items;
|
std::multimap<symbol_t, item_t> items;
|
||||||
|
@ -42,7 +42,7 @@ private:
|
||||||
item_t current;
|
item_t current;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
state_t() : current("") {}
|
parser_state_t() : current("") {}
|
||||||
|
|
||||||
const std::multimap<std::string, item_t> & get_rules() const {
|
const std::multimap<std::string, item_t> & get_rules() const {
|
||||||
return rules;
|
return rules;
|
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
namespace solar {
|
namespace solar {
|
||||||
|
|
||||||
bool read_grammar(const char *filename, state_t *state) {
|
bool read_grammar(const char *filename, parser_state_t *state) {
|
||||||
FILE *file = fopen(filename, "r");
|
FILE *file = fopen(filename, "r");
|
||||||
if (!file) {
|
if (!file) {
|
||||||
std::fprintf(stderr, "unable to open file %s\n", filename);
|
std::fprintf(stderr, "unable to open file %s\n", filename);
|
||||||
|
@ -75,7 +75,7 @@ bool read_grammar(const char *filename, state_t *state) {
|
||||||
int main() {
|
int main() {
|
||||||
using namespace solar;
|
using namespace solar;
|
||||||
|
|
||||||
state_t state;
|
parser_state_t state;
|
||||||
if (!read_grammar("grammar.y", &state))
|
if (!read_grammar("grammar.y", &state))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
|
Reference in a new issue