#include "rule_helpers.h" #include #include "compiler/rules/symbol.h" namespace tree_sitter { using std::make_shared; using std::set; using std::map; namespace rules { rule_ptr character(const set &ranges) { return make_shared(ranges); } rule_ptr character(const set &ranges, bool sign) { if (sign) return character(ranges); else return CharacterSet(ranges).complement().copy(); } rule_ptr i_sym(size_t index) { return make_shared(index); } rule_ptr i_aux_sym(size_t index) { return make_shared(index, SymbolOptionAuxiliary); } rule_ptr i_token(size_t index) { return make_shared(index, SymbolOptionToken); } rule_ptr i_aux_token(size_t index) { return make_shared(index, SymbolOption(SymbolOptionAuxiliary|SymbolOptionToken)); } rule_ptr metadata(rule_ptr rule, map values) { return make_shared(rule, values); } } }