本文整理汇总了C++中NFA::set_final_state方法的典型用法代码示例。如果您正苦于以下问题:C++ NFA::set_final_state方法的具体用法?C++ NFA::set_final_state怎么用?C++ NFA::set_final_state使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NFA
的用法示例。
在下文中一共展示了NFA::set_final_state方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: or_selection
NFA or_selection(vector<NFA> selections, int no_of_selections) {
NFA result;
int vertex_count = 2;
int i, j;
NFA med;
trans new_trans;
for(i = 0; i < no_of_selections; i++) {
vertex_count += selections.at(i).get_vertex_count();
}
result.set_vertex(vertex_count);
int adder_track = 1;
for(i = 0; i < no_of_selections; i++) {
result.set_transition(0, adder_track, '^');
med = selections.at(i);
for(j = 0; j < med.transitions.size(); j++) {
new_trans = med.transitions.at(j);
result.set_transition(new_trans.vertex_from + adder_track, new_trans.vertex_to + adder_track, new_trans.trans_symbol);
}
adder_track += med.get_vertex_count();
result.set_transition(adder_track - 1, vertex_count - 1, '^');
}
result.set_final_state(vertex_count - 1);
return result;
}
示例2: kleene
NFA kleene(NFA a) {
NFA result;
int i;
trans new_trans;
result.set_vertex(a.get_vertex_count() + 2);
result.set_transition(0, 1, '^');
for(i = 0; i < a.transitions.size(); i++) {
new_trans = a.transitions.at(i);
result.set_transition(new_trans.vertex_from + 1, new_trans.vertex_to + 1, new_trans.trans_symbol);
}
result.set_transition(a.get_vertex_count(), a.get_vertex_count() + 1, '^');
result.set_transition(a.get_vertex_count(), 1, '^');
result.set_transition(0, a.get_vertex_count() + 1, '^');
result.set_final_state(a.get_vertex_count() + 1);
return result;
}
示例3: concat
NFA concat(NFA a, NFA b) {
NFA result;
result.set_vertex(a.get_vertex_count() + b.get_vertex_count());
int i;
trans new_trans;
for(i = 0; i < a.transitions.size(); i++) {
new_trans = a.transitions.at(i);
result.set_transition(new_trans.vertex_from, new_trans.vertex_to, new_trans.trans_symbol);
}
result.set_transition(a.get_final_state(), a.get_vertex_count(), '^');
for(i = 0; i < b.transitions.size(); i++) {
new_trans = b.transitions.at(i);
result.set_transition(new_trans.vertex_from + a.get_vertex_count(), new_trans.vertex_to + a.get_vertex_count(), new_trans.trans_symbol);
}
result.set_final_state(a.get_vertex_count() + b.get_vertex_count() - 1);
return result;
}