本文整理汇总了C++中DFA::last方法的典型用法代码示例。如果您正苦于以下问题:C++ DFA::last方法的具体用法?C++ DFA::last怎么用?C++ DFA::last使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DFA
的用法示例。
在下文中一共展示了DFA::last方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: add
bool DFAMerger::add(const DFA& dfa) {
if (_start == -1) {
_start = new_state();
}
assert(_start >= 0);
size_t size = dfa.size();
size_t base = _trans.size();
_trans.resize(base + size);
for (size_t i = 0; i < size; i++) {
const DFATran& tran = dfa[i];
for (DFATran::const_iterator it = tran.begin();
it != tran.end(); ++it) {
_trans[base + i][it->first].insert(base + it->second);
}
const Tag& tag = dfa.tags(i);
if (!tag.empty()) {
Tag& to = _tags[base + i];
to.insert(tag.begin(), tag.end());
}
}
_trans[_start][EPSILON].insert(base + dfa.start());
const States& last = dfa.last();
for (States::const_iterator it = last.begin();
it != last.end(); ++it) {
_last.insert(base + *it);
}
return true;
}
示例2: print_dfa
void print_dfa(const DFA& dfa) {
cout << "start : " << dfa.start() << endl;
cout << "last : ";
const ::mpl::lexer::detail::States& last = dfa.last();
print_set(last);
cout << endl;
for (size_t i = 0; i < dfa.size(); i++) {
const ::mpl::lexer::detail::DFATran& tran = dfa[i];
for (::mpl::lexer::detail::DFATran::const_iterator it = tran.begin();
it != tran.end(); ++it) {
cout << i << "(";
if (it->first == ::mpl::lexer::detail::EPSILON) {
cout << "\\0";
} else if (it->first == ::mpl::lexer::detail::OTHER) {
cout << "-1";
} else {
//cout << it->first;
cout << "0x" << hex << (int)(it->first & 0xFF) << dec;
}
cout << ")";
cout << "\t->\t";
cout << it->second;
cout << endl;
}
}
for (::mpl::lexer::detail::States::const_iterator it = last.begin();
it != last.end(); ++it) {
const ::mpl::lexer::detail::Tag& tag = dfa.tags(*it);
cout << *it << ": ";
print_set(tag);
cout << endl;
}
}