tree-sitter/src/compiler/lex_table.h

51 lines
1 KiB
C
Raw Normal View History

2014-03-09 22:05:17 -07:00
#ifndef COMPILER_LEX_TABLE_H_
#define COMPILER_LEX_TABLE_H_
2014-01-11 15:14:17 -08:00
2014-03-09 21:37:21 -07:00
#include <map>
2014-01-11 15:14:17 -08:00
#include <vector>
#include <set>
2014-03-09 21:37:21 -07:00
#include <string>
2015-10-05 18:02:59 -07:00
#include "compiler/precedence_range.h"
#include "compiler/rules/symbol.h"
2014-03-09 21:37:21 -07:00
#include "compiler/rules/character_set.h"
2014-01-11 15:14:17 -08:00
namespace tree_sitter {
typedef int64_t LexStateId;
struct AdvanceAction {
AdvanceAction();
AdvanceAction(size_t, PrecedenceRange, bool);
bool operator==(const AdvanceAction &other) const;
LexStateId state_index;
2015-10-05 18:02:59 -07:00
PrecedenceRange precedence_range;
bool in_main_token;
};
struct AcceptTokenAction {
AcceptTokenAction();
AcceptTokenAction(rules::Symbol, int, bool);
bool is_present() const;
bool operator==(const AcceptTokenAction &action) const;
rules::Symbol symbol;
int precedence;
bool is_string;
};
2017-03-01 22:15:26 -08:00
struct LexState {
bool operator==(const LexState &) const;
std::map<rules::CharacterSet, AdvanceAction> advance_actions;
AcceptTokenAction accept_action;
};
2017-03-01 22:15:26 -08:00
struct LexTable {
std::vector<LexState> states;
};
} // namespace tree_sitter
2014-01-11 15:14:17 -08:00
2014-03-09 22:05:17 -07:00
#endif // COMPILER_LEX_TABLE_H_