First usable generator source.
Still issues with usage rules and error reporting, but functional.
This commit is contained in:
31
generator/templates/ArgGrammarScanner.cpp
Normal file
31
generator/templates/ArgGrammarScanner.cpp
Normal file
@@ -0,0 +1,31 @@
|
||||
{{=@@ @@=}}
|
||||
#include "@@{argspec}@@ArgGrammarScanner.hpp"
|
||||
#include "@@{argspec}@@ArgGrammarDriver.hpp"
|
||||
|
||||
namespace @@{argspec}@@ArgGrammar {
|
||||
Scanner::Scanner(int argc, char* argv[], Driver& driver)
|
||||
: yyFlexLexer{}, argc{ argc }, argv{ argv }, argi{ 1 }, streamInput{}, resetVal{}, driver{
|
||||
driver
|
||||
} {
|
||||
if (argi < argc)
|
||||
streamInput << argv[argi];
|
||||
|
||||
switch_streams(&streamInput);
|
||||
}
|
||||
|
||||
int Scanner::yywrap() {
|
||||
++argi;
|
||||
bool more = (argi < argc);
|
||||
|
||||
if (more) {
|
||||
streamInput << argv[argi];
|
||||
resetOnWrap();
|
||||
}
|
||||
|
||||
return more ? 0 : 1;
|
||||
}
|
||||
|
||||
void Scanner::setResult(Scanner::Result result) {
|
||||
driver.setResult(result);
|
||||
}
|
||||
} // namespace @@{argspec}@@ArgGrammar
|
||||
Reference in New Issue
Block a user