本文整理汇总了C++中DFA::Match方法的典型用法代码示例。如果您正苦于以下问题:C++ DFA::Match方法的具体用法?C++ DFA::Match怎么用?C++ DFA::Match使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DFA
的用法示例。
在下文中一共展示了DFA::Match方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Run
int Program::Run(int argc, char* argv[])
{
string regex = "";
bool showDiag = false;
switch (argc)
{
case 1:
// empty regular expression
break;
case 2:
// one regular expression
regex = argv[1];
break;
case 3:
// -a <regexp>
// 'debug' mode
regex = argv[1];
if (strcmp("-a", argv[2]) != 0)
{
cout << argv[0] << " error: wrong argument '" << argv[2] << "'. Please specify '-a' to enter debug mode." << endl;
regex = argv[1];
return 1;
}
showDiag = true;
break;
default:
// too many arguments
cout << argv[0] << " error: too many arguments." << endl;
return 1;
}
try
{
if (regex == "")
regex = "()";
LexerSequence sequence = Lexer::parse(regex);
DFA dfa = RegexpSyntaxAnalyzer::parse(sequence);
string s;
if (showDiag)
{
dfa.Print();
}
else
{
while (getline(cin, s))
{
if (dfa.Match(s))
cout << s << endl;
}
}
}
catch (LexerException e)
{
cout << argv[0] << " error: lexical parser exception: '" << e.message().c_str() << "'." << endl;
return 1;
}
catch (SyntaxException e)
{
cout << argv[0] << " error: syntax analyzer exception: '" << e.message().c_str() << "'." << endl;
return 1;
}
catch (RegexpException e)
{
cout << argv[0] << " error: unknown filter exception: '" << e.message().c_str() << "'." << endl;
return 1;
}
catch (const char* s)
{
cout << argv[0] << " error: const char* exception: '" << s << "'." << endl;
return 1;
}
catch (...)
{
cout << argv[0] << " error: unknown exception." << endl;
return 1;
}
return 0;
}