tree-sitter/src/compiler/rules/rules.cpp

63 lines
1.6 KiB
C++
Raw Normal View History

#include "tree_sitter/compiler.h"
2014-02-18 09:07:00 -08:00
#include "./rule.h"
#include "./blank.h"
#include "./symbol.h"
#include "./choice.h"
#include "./seq.h"
#include "./string.h"
#include "./pattern.h"
#include "./character_set.h"
#include "./repeat.h"
namespace tree_sitter {
using std::make_shared;
using std::string;
using std::set;
using std::vector;
namespace rules {
rule_ptr blank() {
return make_shared<Blank>();
}
2014-02-11 13:15:44 -08:00
rule_ptr character(const set<CharacterRange> &ranges) {
return make_shared<CharacterSet>(ranges);
}
2014-02-11 13:15:44 -08:00
rule_ptr character(const set<CharacterRange> &ranges, bool sign) {
if (sign)
return character(ranges);
else
return CharacterSet(ranges).complement().copy();
}
rule_ptr choice(const vector<rule_ptr> &rules) {
return Choice::Build(rules);
}
rule_ptr pattern(const string &value) {
return make_shared<Pattern>(value);
}
rule_ptr repeat(const rule_ptr content) {
return std::make_shared<Repeat>(content);
}
rule_ptr seq(const vector<rule_ptr> &rules) {
return Seq::Build(rules);
}
rule_ptr str(const string &value) {
return make_shared<String>(value);
}
2014-02-11 13:15:44 -08:00
rule_ptr sym(const string &name) {
return make_shared<Symbol>(name);
}
rule_ptr _sym(const string &name) {
return make_shared<Symbol>(name, SymbolTypeHidden);
2014-01-03 01:02:24 -08:00
}
}
}