output: rename i argument to state
This commit is contained in:
parent
4976085b72
commit
0e9b564f8c
6 changed files with 26 additions and 26 deletions
|
@ -214,8 +214,8 @@ void output_t::emit_reductions() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void output_t::emit_states() {
|
void output_t::emit_states() {
|
||||||
for (size_t i = 0; i < get_generator()->get_state_count(); i++)
|
for (size_t state = 0; state < get_generator()->get_state_count(); state++)
|
||||||
emit_state(i);
|
emit_state(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void output_t::emit_header_include() {
|
void output_t::emit_header_include() {
|
||||||
|
|
|
@ -72,7 +72,7 @@ protected:
|
||||||
void initialize();
|
void initialize();
|
||||||
|
|
||||||
virtual const generator_t * get_generator() = 0;
|
virtual const generator_t * get_generator() = 0;
|
||||||
virtual void emit_state(unsigned i) = 0;
|
virtual void emit_state(unsigned state) = 0;
|
||||||
|
|
||||||
output_t(const char *header, const char *source);
|
output_t(const char *header, const char *source);
|
||||||
|
|
||||||
|
|
|
@ -29,16 +29,16 @@
|
||||||
|
|
||||||
namespace solar {
|
namespace solar {
|
||||||
|
|
||||||
void output_lr0_t::emit_state_shift(unsigned i) {
|
void output_lr0_t::emit_state_shift(unsigned state) {
|
||||||
std::fprintf(source_file, "\t\t\tswitch (token) {\n");
|
std::fprintf(source_file, "\t\t\tswitch (token) {\n");
|
||||||
|
|
||||||
if (generator->get_shifts().find(std::make_pair(i, symbol_t::make_nonterm(""))) != generator->get_shifts().end()) {
|
if (generator->get_shifts().find(std::make_pair(state, symbol_t::make_nonterm(""))) != generator->get_shifts().end()) {
|
||||||
std::fprintf(source_file, "\t\t\tcase 0:\n");
|
std::fprintf(source_file, "\t\t\tcase 0:\n");
|
||||||
std::fprintf(source_file, "\t\t\t\treturn 0;\n\n");
|
std::fprintf(source_file, "\t\t\t\treturn 0;\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto &token : generator->get_terminals()) {
|
for (const auto &token : generator->get_terminals()) {
|
||||||
auto it = generator->get_shifts().find(std::make_pair(i, token));
|
auto it = generator->get_shifts().find(std::make_pair(state, token));
|
||||||
if (it == generator->get_shifts().end())
|
if (it == generator->get_shifts().end())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -124,12 +124,12 @@ void output_lr0_t::emit_state_reduce(const item_t &item, int rule_id) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void output_lr0_t::emit_state(unsigned i) {
|
void output_lr0_t::emit_state(unsigned state) {
|
||||||
std::fprintf(source_file, "\t\tcase %u:\n", i);
|
std::fprintf(source_file, "\t\tcase %u:\n", state);
|
||||||
|
|
||||||
auto it = generator->get_reductions().find(i);
|
auto it = generator->get_reductions().find(state);
|
||||||
if (it == generator->get_reductions().end()) {
|
if (it == generator->get_reductions().end()) {
|
||||||
emit_state_shift(i);
|
emit_state_shift(state);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const rule_t &rule = generator->get_grammar().rules[it->second];
|
const rule_t &rule = generator->get_grammar().rules[it->second];
|
||||||
|
|
|
@ -36,7 +36,7 @@ class output_lr0_t : public output_t {
|
||||||
private:
|
private:
|
||||||
const generator_lr0_t *generator;
|
const generator_lr0_t *generator;
|
||||||
|
|
||||||
void emit_state_shift(unsigned i);
|
void emit_state_shift(unsigned state);
|
||||||
void emit_state_reduce(const item_t &item, int rule_id);
|
void emit_state_reduce(const item_t &item, int rule_id);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -44,7 +44,7 @@ protected:
|
||||||
return generator;
|
return generator;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void emit_state(unsigned i);
|
virtual void emit_state(unsigned state);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
output_lr0_t(const generator_lr0_t *generator0, const char *header, const char *source) : output_t(header, source), generator(generator0) {
|
output_lr0_t(const generator_lr0_t *generator0, const char *header, const char *source) : output_t(header, source), generator(generator0) {
|
||||||
|
|
|
@ -33,8 +33,8 @@
|
||||||
|
|
||||||
namespace solar {
|
namespace solar {
|
||||||
|
|
||||||
void output_slr_t::emit_state_shift(unsigned i, const symbol_t &token) {
|
void output_slr_t::emit_state_shift(unsigned state, const symbol_t &token) {
|
||||||
auto it = generator->get_shifts().find(std::make_pair(i, token));
|
auto it = generator->get_shifts().find(std::make_pair(state, token));
|
||||||
if (it == generator->get_shifts().end())
|
if (it == generator->get_shifts().end())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ void output_slr_t::emit_state_reduce(const item_t &item, const symbol_t &token,
|
||||||
|
|
||||||
std::fprintf(source_file, "\t\t\t\tcase %u:\n", unsigned(i));
|
std::fprintf(source_file, "\t\t\t\tcase %u:\n", unsigned(i));
|
||||||
std::fprintf(source_file, "\t\t\t\t\tparser->stack[++parser->top].state = %u;\n", unsigned(it->second));
|
std::fprintf(source_file, "\t\t\t\t\tparser->stack[++parser->top].state = %u;\n", unsigned(it->second));
|
||||||
std::fprintf(source_file, "\t\t\t\t\tbreak;\n");
|
std::fprintf(source_file, "\t\t\t\t\tbreak;\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -118,10 +118,10 @@ void output_slr_t::emit_state_reduce(const item_t &item, const symbol_t &token,
|
||||||
std::fprintf(source_file, "\t\t\t\tbreak;\n\n");
|
std::fprintf(source_file, "\t\t\t\tbreak;\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void output_slr_t::do_emit_state(unsigned i, const symbol_t &token) {
|
void output_slr_t::do_emit_state(unsigned state, const symbol_t &token) {
|
||||||
auto it = generator->get_reductions().find(std::make_pair(i, token));
|
auto it = generator->get_reductions().find(std::make_pair(state, token));
|
||||||
if (it == generator->get_reductions().end()) {
|
if (it == generator->get_reductions().end()) {
|
||||||
emit_state_shift(i, token);
|
emit_state_shift(state, token);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const rule_t &rule = generator->get_grammar().rules[it->second];
|
const rule_t &rule = generator->get_grammar().rules[it->second];
|
||||||
|
@ -129,19 +129,19 @@ void output_slr_t::do_emit_state(unsigned i, const symbol_t &token) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void output_slr_t::emit_state(unsigned i) {
|
void output_slr_t::emit_state(unsigned state) {
|
||||||
std::fprintf(source_file, "\t\tcase %u:\n", i);
|
std::fprintf(source_file, "\t\tcase %u:\n", state);
|
||||||
std::fprintf(source_file, "\t\t\tswitch (token) {\n");
|
std::fprintf(source_file, "\t\t\tswitch (token) {\n");
|
||||||
|
|
||||||
if (generator->get_shifts().find(std::make_pair(i, symbol_t::make_nonterm(""))) != generator->get_shifts().end()) {
|
if (generator->get_shifts().find(std::make_pair(state, symbol_t::make_nonterm(""))) != generator->get_shifts().end()) {
|
||||||
std::fprintf(source_file, "\t\t\tcase 0:\n");
|
std::fprintf(source_file, "\t\t\tcase 0:\n");
|
||||||
std::fprintf(source_file, "\t\t\t\treturn 0;\n\n");
|
std::fprintf(source_file, "\t\t\t\treturn 0;\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
do_emit_state(i, symbol_t::empty());
|
do_emit_state(state, symbol_t::empty());
|
||||||
|
|
||||||
for (const symbol_t &token : generator->get_terminals())
|
for (const symbol_t &token : generator->get_terminals())
|
||||||
do_emit_state(i, token);
|
do_emit_state(state, token);
|
||||||
|
|
||||||
std::fprintf(source_file, "\t\t\tdefault:\n");
|
std::fprintf(source_file, "\t\t\tdefault:\n");
|
||||||
std::fprintf(source_file, "\t\t\t\treturn -1;\n");
|
std::fprintf(source_file, "\t\t\t\treturn -1;\n");
|
||||||
|
|
|
@ -36,16 +36,16 @@ class output_slr_t : public output_t {
|
||||||
private:
|
private:
|
||||||
const generator_slr_t *generator;
|
const generator_slr_t *generator;
|
||||||
|
|
||||||
void emit_state_shift(unsigned i, const symbol_t &token);
|
void emit_state_shift(unsigned state, const symbol_t &token);
|
||||||
void emit_state_reduce(const item_t &item, const symbol_t &token, int rule_id);
|
void emit_state_reduce(const item_t &item, const symbol_t &token, int rule_id);
|
||||||
void do_emit_state(unsigned i, const symbol_t &token);
|
void do_emit_state(unsigned state, const symbol_t &token);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual const generator_t * get_generator() {
|
virtual const generator_t * get_generator() {
|
||||||
return generator;
|
return generator;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void emit_state(unsigned i);
|
virtual void emit_state(unsigned state);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
output_slr_t(const generator_slr_t *generator0, const char *header, const char *source) : output_t(header, source), generator(generator0) {
|
output_slr_t(const generator_slr_t *generator0, const char *header, const char *source) : output_t(header, source), generator(generator0) {
|
||||||
|
|
Reference in a new issue