1
0
mirror of https://github.com/fwbuilder/fwbuilder synced 2025-11-06 18:52:58 +01:00

split ifconfig.g to keep linux and bsd grammars separate

This commit is contained in:
Vadim Kurland 2011-06-01 16:55:52 -07:00
parent d1f83311f1
commit b9dfdd5d2c
22 changed files with 3448 additions and 631 deletions

View File

@ -25,8 +25,11 @@
#include "IfconfigImporter.h"
#include "../parsers/IfconfigCfgLexer.hpp"
#include "../parsers/IfconfigCfgParser.hpp"
#include "../parsers/IfconfigLinuxCfgLexer.hpp"
#include "../parsers/IfconfigLinuxCfgParser.hpp"
#include "../parsers/IfconfigBSDCfgLexer.hpp"
#include "../parsers/IfconfigBSDCfgParser.hpp"
#include <ios>
@ -45,8 +48,9 @@ using namespace libfwbuilder;
IfconfigImporter::IfconfigImporter(FWObject *lib,
std::istringstream &input,
Logger *log,
const std::string &host_os,
const std::string &fwname) :
Importer(lib, "", input, log, fwname)
Importer(lib, host_os, input, log, fwname)
{
}
@ -95,15 +99,41 @@ void IfconfigImporter::run()
QString gen_err = QObject::tr("Error:");
std::ostringstream parser_debug;
IfconfigCfgLexer lexer(input);
IfconfigCfgParser parser(lexer);
parser.importer = this;
if (fwbdebug) parser.dbg = &std::cerr;
else parser.dbg = &parser_debug;
ANTLR_USE_NAMESPACE(antlr)CharScanner *lexer = NULL;
ANTLR_USE_NAMESPACE(antlr)LLkParser *parser = NULL;
// IfconfigCfgLexer *lexer = NULL;
// IfconfigCfgParser *parser = NULL;
if (platform == "linux24")
{
lexer = new IfconfigLinuxCfgLexer(input);
IfconfigLinuxCfgParser* p = new IfconfigLinuxCfgParser(*lexer);
parser = p;
p->importer = this;
if (fwbdebug) p->dbg = &std::cerr;
else p->dbg = &parser_debug;
}
if (platform == "openbsd" || platform == "freebsd")
{
lexer = new IfconfigBSDCfgLexer(input);
IfconfigBSDCfgParser *p = new IfconfigBSDCfgParser(*lexer);
parser = p;
p->importer = this;
if (fwbdebug) p->dbg = &std::cerr;
else p->dbg = &parser_debug;
}
if (lexer == NULL)
{
*logger << "Have no importer for ifconfig output for " << platform;
return;
}
try
{
parser.cfgfile();
parser->cfgfile();
} catch(ANTLR_USE_NAMESPACE(antlr)ANTLRException &e)
{
err << parser_err + " " + e.toString().c_str();
@ -120,6 +150,9 @@ void IfconfigImporter::run()
if (!err.isEmpty())
*logger << err.join("\n").toUtf8().constData();
delete parser;
delete lexer;
}

View File

@ -46,6 +46,7 @@ public:
IfconfigImporter(libfwbuilder::FWObject *lib,
std::istringstream &input,
libfwbuilder::Logger *log,
const std::string &host_os,
const std::string &fwname);
~IfconfigImporter();

View File

@ -39,6 +39,7 @@ public:
bool neg;
std::string name;
std::string label;
std::list<AddressSpec> as;
std::string hwaddr;
std::list<std::string> groups;
@ -47,12 +48,14 @@ public:
{
neg = false;
name = "";
label = "";
}
InterfaceSpec(const InterfaceSpec &other)
{
neg = other.neg;
name = other.name;
label = other.label;
as = other.as;
hwaddr = other.hwaddr;
groups = other.groups;
@ -69,7 +72,8 @@ public:
{
QStringList str;
str << "InterfaceSpec";
str << name.c_str();
str << QString("name:%1").arg(name.c_str());
str << QString("label:%1").arg(label.c_str());
str << QString((neg)? "neg:true" : "neg:false");
str << QString("hwaddr:%1").arg(hwaddr.c_str());

View File

@ -0,0 +1,1579 @@
/* $ANTLR 2.7.7 (20100319): "ifconfig_bsd.g" -> "IfconfigBSDCfgLexer.cpp"$ */
#line 43 "ifconfig_bsd.g"
// gets inserted before the antlr generated includes in the cpp
// file
#line 8 "IfconfigBSDCfgLexer.cpp"
#include "IfconfigBSDCfgLexer.hpp"
#include <antlr/CharBuffer.hpp>
#include <antlr/TokenStreamException.hpp>
#include <antlr/TokenStreamIOException.hpp>
#include <antlr/TokenStreamRecognitionException.hpp>
#include <antlr/CharStreamException.hpp>
#include <antlr/CharStreamIOException.hpp>
#include <antlr/NoViableAltForCharException.hpp>
#line 49 "ifconfig_bsd.g"
// gets inserted after the antlr generated includes in the cpp
// file
#include <antlr/Token.hpp>
#include <antlr/TokenBuffer.hpp>
#line 25 "IfconfigBSDCfgLexer.cpp"
#line 1 "ifconfig_bsd.g"
#line 27 "IfconfigBSDCfgLexer.cpp"
IfconfigBSDCfgLexer::IfconfigBSDCfgLexer(ANTLR_USE_NAMESPACE(std)istream& in)
: ANTLR_USE_NAMESPACE(antlr)CharScanner(new ANTLR_USE_NAMESPACE(antlr)CharBuffer(in),true)
{
initLiterals();
}
IfconfigBSDCfgLexer::IfconfigBSDCfgLexer(ANTLR_USE_NAMESPACE(antlr)InputBuffer& ib)
: ANTLR_USE_NAMESPACE(antlr)CharScanner(ib,true)
{
initLiterals();
}
IfconfigBSDCfgLexer::IfconfigBSDCfgLexer(const ANTLR_USE_NAMESPACE(antlr)LexerSharedInputState& state)
: ANTLR_USE_NAMESPACE(antlr)CharScanner(state,true)
{
initLiterals();
}
void IfconfigBSDCfgLexer::initLiterals()
{
literals["priority"] = 7;
literals["broadcast"] = 21;
literals["Scope"] = 35;
literals["scopeid"] = 26;
literals["Host"] = 30;
literals["UP"] = 39;
literals["groups"] = 27;
literals["HWaddr"] = 49;
literals["encap"] = 37;
literals["NOARP"] = 43;
literals["Mask"] = 34;
literals["netmask"] = 19;
literals["RUNNING"] = 44;
literals["inet"] = 17;
literals["media"] = 8;
literals["BROADCAST"] = 40;
literals["P-t-P"] = 33;
literals["prefixlen"] = 25;
literals["Loopback"] = 38;
literals["Interrupt"] = 48;
literals["Bcast"] = 32;
literals["mtu"] = 36;
literals["inet6"] = 22;
literals["status"] = 9;
literals["LOOPBACK"] = 42;
literals["Link"] = 28;
literals["TX"] = 46;
literals["addr"] = 31;
literals["RX"] = 45;
literals["Global"] = 29;
literals["POINTOPOINT"] = 41;
literals["flags"] = 12;
literals["lladdr"] = 50;
literals["collisions"] = 47;
}
ANTLR_USE_NAMESPACE(antlr)RefToken IfconfigBSDCfgLexer::nextToken()
{
ANTLR_USE_NAMESPACE(antlr)RefToken theRetToken;
for (;;) {
ANTLR_USE_NAMESPACE(antlr)RefToken theRetToken;
int _ttype = ANTLR_USE_NAMESPACE(antlr)Token::INVALID_TYPE;
resetText();
try { // for lexical and char stream error handling
switch ( LA(1)) {
case 0x23 /* '#' */ :
{
mLINE_COMMENT(true);
theRetToken=_returnToken;
break;
}
case 0xa /* '\n' */ :
case 0xd /* '\r' */ :
{
mNEWLINE(true);
theRetToken=_returnToken;
break;
}
case 0x30 /* '0' */ :
case 0x31 /* '1' */ :
case 0x32 /* '2' */ :
case 0x33 /* '3' */ :
case 0x34 /* '4' */ :
case 0x35 /* '5' */ :
case 0x36 /* '6' */ :
case 0x37 /* '7' */ :
case 0x38 /* '8' */ :
case 0x39 /* '9' */ :
case 0x3a /* ':' */ :
case 0x41 /* 'A' */ :
case 0x42 /* 'B' */ :
case 0x43 /* 'C' */ :
case 0x44 /* 'D' */ :
case 0x45 /* 'E' */ :
case 0x46 /* 'F' */ :
case 0x47 /* 'G' */ :
case 0x48 /* 'H' */ :
case 0x49 /* 'I' */ :
case 0x4a /* 'J' */ :
case 0x4b /* 'K' */ :
case 0x4c /* 'L' */ :
case 0x4d /* 'M' */ :
case 0x4e /* 'N' */ :
case 0x4f /* 'O' */ :
case 0x50 /* 'P' */ :
case 0x51 /* 'Q' */ :
case 0x52 /* 'R' */ :
case 0x53 /* 'S' */ :
case 0x54 /* 'T' */ :
case 0x55 /* 'U' */ :
case 0x56 /* 'V' */ :
case 0x57 /* 'W' */ :
case 0x58 /* 'X' */ :
case 0x59 /* 'Y' */ :
case 0x5a /* 'Z' */ :
case 0x61 /* 'a' */ :
case 0x62 /* 'b' */ :
case 0x63 /* 'c' */ :
case 0x64 /* 'd' */ :
case 0x65 /* 'e' */ :
case 0x66 /* 'f' */ :
case 0x67 /* 'g' */ :
case 0x68 /* 'h' */ :
case 0x69 /* 'i' */ :
case 0x6a /* 'j' */ :
case 0x6b /* 'k' */ :
case 0x6c /* 'l' */ :
case 0x6d /* 'm' */ :
case 0x6e /* 'n' */ :
case 0x6f /* 'o' */ :
case 0x70 /* 'p' */ :
case 0x71 /* 'q' */ :
case 0x72 /* 'r' */ :
case 0x73 /* 's' */ :
case 0x74 /* 't' */ :
case 0x75 /* 'u' */ :
case 0x76 /* 'v' */ :
case 0x77 /* 'w' */ :
case 0x78 /* 'x' */ :
case 0x79 /* 'y' */ :
case 0x7a /* 'z' */ :
{
mNUMBER_ADDRESS_OR_WORD(true);
theRetToken=_returnToken;
break;
}
case 0x25 /* '%' */ :
{
mPERCENT(true);
theRetToken=_returnToken;
break;
}
case 0x26 /* '&' */ :
{
mAMPERSAND(true);
theRetToken=_returnToken;
break;
}
case 0x2a /* '*' */ :
{
mSTAR(true);
theRetToken=_returnToken;
break;
}
case 0x2d /* '-' */ :
{
mMINUS(true);
theRetToken=_returnToken;
break;
}
case 0x2e /* '.' */ :
{
mDOT(true);
theRetToken=_returnToken;
break;
}
case 0x2f /* '/' */ :
{
mSLASH(true);
theRetToken=_returnToken;
break;
}
case 0x3d /* '=' */ :
{
mEQUAL(true);
theRetToken=_returnToken;
break;
}
case 0x3f /* '?' */ :
{
mQUESTION(true);
theRetToken=_returnToken;
break;
}
case 0x28 /* '(' */ :
{
mOPENING_PAREN(true);
theRetToken=_returnToken;
break;
}
case 0x29 /* ')' */ :
{
mCLOSING_PAREN(true);
theRetToken=_returnToken;
break;
}
case 0x5b /* '[' */ :
{
mOPENING_SQUARE(true);
theRetToken=_returnToken;
break;
}
case 0x5d /* ']' */ :
{
mCLOSING_SQUARE(true);
theRetToken=_returnToken;
break;
}
case 0x7b /* '{' */ :
{
mOPENING_BRACE(true);
theRetToken=_returnToken;
break;
}
case 0x7d /* '}' */ :
{
mCLOSING_BRACE(true);
theRetToken=_returnToken;
break;
}
case 0x3c /* '<' */ :
{
mLESS_THAN(true);
theRetToken=_returnToken;
break;
}
case 0x3e /* '>' */ :
{
mGREATER_THAN(true);
theRetToken=_returnToken;
break;
}
default:
if ((_tokenSet_0.member(LA(1)))) {
mWhitespace(true);
theRetToken=_returnToken;
}
else {
if (LA(1)==EOF_CHAR)
{
uponEOF();
_returnToken = makeToken(ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE);
}
else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
}
if ( !_returnToken )
goto tryAgain; // found SKIP token
_ttype = _returnToken->getType();
_ttype = testLiteralsTable(_ttype);
_returnToken->setType(_ttype);
return _returnToken;
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& e) {
throw ANTLR_USE_NAMESPACE(antlr)TokenStreamRecognitionException(e);
}
catch (ANTLR_USE_NAMESPACE(antlr)CharStreamIOException& csie) {
throw ANTLR_USE_NAMESPACE(antlr)TokenStreamIOException(csie.io);
}
catch (ANTLR_USE_NAMESPACE(antlr)CharStreamException& cse) {
throw ANTLR_USE_NAMESPACE(antlr)TokenStreamException(cse.getMessage());
}
tryAgain:;
}
}
void IfconfigBSDCfgLexer::mLINE_COMMENT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = LINE_COMMENT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match("#");
{ // ( ... )*
for (;;) {
if ((_tokenSet_1.member(LA(1)))) {
{
match(_tokenSet_1);
}
}
else {
goto _loop18;
}
}
_loop18:;
} // ( ... )*
mNEWLINE(false);
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mNEWLINE(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = NEWLINE;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
{
if ((LA(1) == 0xd /* '\r' */ ) && (LA(2) == 0xa /* '\n' */ )) {
match("\r\n");
}
else if ((LA(1) == 0xd /* '\r' */ ) && (true)) {
match('\r' /* charlit */ );
}
else if ((LA(1) == 0xa /* '\n' */ )) {
match('\n' /* charlit */ );
}
else {
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
}
}
if ( inputState->guessing==0 ) {
#line 388 "ifconfig_bsd.g"
newline();
#line 357 "IfconfigBSDCfgLexer.cpp"
}
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mWhitespace(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = Whitespace;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
{
switch ( LA(1)) {
case 0x3 /* '\3' */ :
case 0x4 /* '\4' */ :
case 0x5 /* '\5' */ :
case 0x6 /* '\6' */ :
case 0x7 /* '\7' */ :
case 0x8 /* '\10' */ :
{
matchRange('\3','\10');
break;
}
case 0x9 /* '\t' */ :
{
match('\t' /* charlit */ );
break;
}
case 0xb /* '\13' */ :
{
match('\13' /* charlit */ );
break;
}
case 0xc /* '\14' */ :
{
match('\14' /* charlit */ );
break;
}
case 0xe /* '\16' */ :
case 0xf /* '\17' */ :
case 0x10 /* '\20' */ :
case 0x11 /* '\21' */ :
case 0x12 /* '\22' */ :
case 0x13 /* '\23' */ :
case 0x14 /* '\24' */ :
case 0x15 /* '\25' */ :
case 0x16 /* '\26' */ :
case 0x17 /* '\27' */ :
case 0x18 /* '\30' */ :
case 0x19 /* '\31' */ :
case 0x1a /* '\32' */ :
case 0x1b /* '\33' */ :
case 0x1c /* '\34' */ :
case 0x1d /* '\35' */ :
case 0x1e /* '\36' */ :
case 0x1f /* '\37' */ :
{
matchRange('\16','\37');
break;
}
case 0x20 /* ' ' */ :
{
match(' ' /* charlit */ );
break;
}
default:
if (((LA(1) >= 0x7f && LA(1) <= 0xff))) {
matchRange('\177',static_cast<unsigned char>('\377'));
}
else {
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
}
}
}
if ( inputState->guessing==0 ) {
#line 294 "ifconfig_bsd.g"
_ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
#line 438 "IfconfigBSDCfgLexer.cpp"
}
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mINT_CONST(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = INT_CONST;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mHEX_CONST(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = HEX_CONST;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mNUMBER(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = NUMBER;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mNEG_INT_CONST(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = NEG_INT_CONST;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mCOLON(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = COLON;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mHEX_DIGIT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = HEX_DIGIT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
{
switch ( LA(1)) {
case 0x30 /* '0' */ :
case 0x31 /* '1' */ :
case 0x32 /* '2' */ :
case 0x33 /* '3' */ :
case 0x34 /* '4' */ :
case 0x35 /* '5' */ :
case 0x36 /* '6' */ :
case 0x37 /* '7' */ :
case 0x38 /* '8' */ :
case 0x39 /* '9' */ :
{
matchRange('0','9');
break;
}
case 0x61 /* 'a' */ :
case 0x62 /* 'b' */ :
case 0x63 /* 'c' */ :
case 0x64 /* 'd' */ :
case 0x65 /* 'e' */ :
case 0x66 /* 'f' */ :
{
matchRange('a','f');
break;
}
case 0x41 /* 'A' */ :
case 0x42 /* 'B' */ :
case 0x43 /* 'C' */ :
case 0x44 /* 'D' */ :
case 0x45 /* 'E' */ :
case 0x46 /* 'F' */ :
{
matchRange('A','F');
break;
}
default:
{
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
}
}
}
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mDIGIT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = DIGIT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
matchRange('0','9');
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mNUM_3DIGIT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = NUM_3DIGIT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
{
matchRange('0','9');
}
{
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
{
matchRange('0','9');
}
{
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
matchRange('0','9');
}
else {
}
}
}
else {
}
}
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mNUM_HEX_4DIGIT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = NUM_HEX_4DIGIT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
mHEX_DIGIT(false);
{
if ((_tokenSet_2.member(LA(1)))) {
{
mHEX_DIGIT(false);
}
{
if ((_tokenSet_2.member(LA(1)))) {
{
mHEX_DIGIT(false);
}
{
if ((_tokenSet_2.member(LA(1)))) {
mHEX_DIGIT(false);
}
else {
}
}
}
else {
}
}
}
else {
}
}
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mMAC_ADDRESS(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = MAC_ADDRESS;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = NUMBER_ADDRESS_OR_WORD;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
bool synPredMatched43 = false;
if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_3.member(LA(2))) && (_tokenSet_3.member(LA(3))))) {
int _m43 = mark();
synPredMatched43 = true;
inputState->guessing++;
try {
{
mNUM_3DIGIT(false);
match('.' /* charlit */ );
mNUM_3DIGIT(false);
match('.' /* charlit */ );
}
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
synPredMatched43 = false;
}
rewind(_m43);
inputState->guessing--;
}
if ( synPredMatched43 ) {
{
mNUM_3DIGIT(false);
match('.' /* charlit */ );
mNUM_3DIGIT(false);
match('.' /* charlit */ );
mNUM_3DIGIT(false);
match('.' /* charlit */ );
mNUM_3DIGIT(false);
}
if ( inputState->guessing==0 ) {
#line 336 "ifconfig_bsd.g"
_ttype = IPV4;
#line 708 "IfconfigBSDCfgLexer.cpp"
}
}
else {
bool synPredMatched47 = false;
if (((_tokenSet_2.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) {
int _m47 = mark();
synPredMatched47 = true;
inputState->guessing++;
try {
{
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
{
match(_tokenSet_5);
}
}
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
synPredMatched47 = false;
}
rewind(_m47);
inputState->guessing--;
}
if ( synPredMatched47 ) {
{
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
}
if ( inputState->guessing==0 ) {
#line 348 "ifconfig_bsd.g"
_ttype = MAC_ADDRESS;
#line 758 "IfconfigBSDCfgLexer.cpp"
}
}
else {
bool synPredMatched50 = false;
if (((_tokenSet_2.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) {
int _m50 = mark();
synPredMatched50 = true;
inputState->guessing++;
try {
{
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
}
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
synPredMatched50 = false;
}
rewind(_m50);
inputState->guessing--;
}
if ( synPredMatched50 ) {
{
bool synPredMatched55 = false;
if (((_tokenSet_2.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) {
int _m55 = mark();
synPredMatched55 = true;
inputState->guessing++;
try {
{
{ // ( ... )+
int _cnt54=0;
for (;;) {
if ((_tokenSet_2.member(LA(1)))) {
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
}
else {
if ( _cnt54>=1 ) { goto _loop54; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt54++;
}
_loop54:;
} // ( ... )+
match(':' /* charlit */ );
}
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
synPredMatched55 = false;
}
rewind(_m55);
inputState->guessing--;
}
if ( synPredMatched55 ) {
{
{ // ( ... )+
int _cnt58=0;
for (;;) {
if ((_tokenSet_2.member(LA(1)))) {
mNUM_HEX_4DIGIT(false);
match(':' /* charlit */ );
}
else {
if ( _cnt58>=1 ) { goto _loop58; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt58++;
}
_loop58:;
} // ( ... )+
match(':' /* charlit */ );
{
if ((_tokenSet_2.member(LA(1)))) {
mNUM_HEX_4DIGIT(false);
{ // ( ... )*
for (;;) {
if ((LA(1) == 0x3a /* ':' */ )) {
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
}
else {
goto _loop61;
}
}
_loop61:;
} // ( ... )*
}
else {
}
}
}
if ( inputState->guessing==0 ) {
#line 357 "ifconfig_bsd.g"
_ttype = IPV6;
#line 855 "IfconfigBSDCfgLexer.cpp"
}
}
else if ((_tokenSet_2.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) {
mNUM_HEX_4DIGIT(false);
{ // ( ... )+
int _cnt63=0;
for (;;) {
if ((LA(1) == 0x3a /* ':' */ )) {
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
}
else {
if ( _cnt63>=1 ) { goto _loop63; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt63++;
}
_loop63:;
} // ( ... )+
if ( inputState->guessing==0 ) {
#line 360 "ifconfig_bsd.g"
_ttype = IPV6;
#line 878 "IfconfigBSDCfgLexer.cpp"
}
}
else {
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
}
}
if ( inputState->guessing==0 ) {
#line 362 "ifconfig_bsd.g"
_ttype = IPV6;
#line 889 "IfconfigBSDCfgLexer.cpp"
}
}
else {
bool synPredMatched65 = false;
if (((LA(1) == 0x3a /* ':' */ ) && (LA(2) == 0x3a /* ':' */ ) && (_tokenSet_2.member(LA(3))))) {
int _m65 = mark();
synPredMatched65 = true;
inputState->guessing++;
try {
{
match(':' /* charlit */ );
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
}
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
synPredMatched65 = false;
}
rewind(_m65);
inputState->guessing--;
}
if ( synPredMatched65 ) {
match(':' /* charlit */ );
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
{ // ( ... )*
for (;;) {
if ((LA(1) == 0x3a /* ':' */ )) {
match(':' /* charlit */ );
mNUM_HEX_4DIGIT(false);
}
else {
goto _loop67;
}
}
_loop67:;
} // ( ... )*
if ( inputState->guessing==0 ) {
#line 365 "ifconfig_bsd.g"
_ttype = IPV6;
#line 931 "IfconfigBSDCfgLexer.cpp"
}
}
else {
bool synPredMatched73 = false;
if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_3.member(LA(2))) && (_tokenSet_3.member(LA(3))))) {
int _m73 = mark();
synPredMatched73 = true;
inputState->guessing++;
try {
{
{ // ( ... )+
int _cnt70=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt70>=1 ) { goto _loop70; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt70++;
}
_loop70:;
} // ( ... )+
match('.' /* charlit */ );
{ // ( ... )+
int _cnt72=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt72>=1 ) { goto _loop72; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt72++;
}
_loop72:;
} // ( ... )+
}
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
synPredMatched73 = false;
}
rewind(_m73);
inputState->guessing--;
}
if ( synPredMatched73 ) {
{
{ // ( ... )+
int _cnt76=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt76>=1 ) { goto _loop76; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt76++;
}
_loop76:;
} // ( ... )+
match('.' /* charlit */ );
{ // ( ... )+
int _cnt78=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt78>=1 ) { goto _loop78; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt78++;
}
_loop78:;
} // ( ... )+
}
if ( inputState->guessing==0 ) {
#line 372 "ifconfig_bsd.g"
_ttype = NUMBER;
#line 1014 "IfconfigBSDCfgLexer.cpp"
}
}
else if ((LA(1) == 0x3a /* ':' */ ) && (LA(2) == 0x3a /* ':' */ ) && (true)) {
match(':' /* charlit */ );
match(':' /* charlit */ );
if ( inputState->guessing==0 ) {
#line 367 "ifconfig_bsd.g"
_ttype = IPV6;
#line 1023 "IfconfigBSDCfgLexer.cpp"
}
}
else if ((LA(1) == 0x30 /* '0' */ ) && (LA(2) == 0x58 /* 'X' */ || LA(2) == 0x78 /* 'x' */ )) {
match('0' /* charlit */ );
{
switch ( LA(1)) {
case 0x78 /* 'x' */ :
{
match('x' /* charlit */ );
break;
}
case 0x58 /* 'X' */ :
{
match('X' /* charlit */ );
break;
}
default:
{
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
}
}
}
mHEX_DIGIT(false);
{ // ( ... )*
for (;;) {
if ((_tokenSet_2.member(LA(1)))) {
mHEX_DIGIT(false);
}
else {
goto _loop83;
}
}
_loop83:;
} // ( ... )*
if ( inputState->guessing==0 ) {
#line 376 "ifconfig_bsd.g"
_ttype = HEX_CONST;
#line 1062 "IfconfigBSDCfgLexer.cpp"
}
}
else if ((LA(1) == 0x3a /* ':' */ ) && (true)) {
match(':' /* charlit */ );
if ( inputState->guessing==0 ) {
#line 369 "ifconfig_bsd.g"
_ttype = COLON;
#line 1070 "IfconfigBSDCfgLexer.cpp"
}
}
else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true)) {
{ // ( ... )+
int _cnt80=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt80>=1 ) { goto _loop80; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt80++;
}
_loop80:;
} // ( ... )+
if ( inputState->guessing==0 ) {
#line 374 "ifconfig_bsd.g"
_ttype = INT_CONST;
#line 1091 "IfconfigBSDCfgLexer.cpp"
}
}
else if ((_tokenSet_6.member(LA(1))) && (true) && (true)) {
{
switch ( LA(1)) {
case 0x61 /* 'a' */ :
case 0x62 /* 'b' */ :
case 0x63 /* 'c' */ :
case 0x64 /* 'd' */ :
case 0x65 /* 'e' */ :
case 0x66 /* 'f' */ :
case 0x67 /* 'g' */ :
case 0x68 /* 'h' */ :
case 0x69 /* 'i' */ :
case 0x6a /* 'j' */ :
case 0x6b /* 'k' */ :
case 0x6c /* 'l' */ :
case 0x6d /* 'm' */ :
case 0x6e /* 'n' */ :
case 0x6f /* 'o' */ :
case 0x70 /* 'p' */ :
case 0x71 /* 'q' */ :
case 0x72 /* 'r' */ :
case 0x73 /* 's' */ :
case 0x74 /* 't' */ :
case 0x75 /* 'u' */ :
case 0x76 /* 'v' */ :
case 0x77 /* 'w' */ :
case 0x78 /* 'x' */ :
case 0x79 /* 'y' */ :
case 0x7a /* 'z' */ :
{
matchRange('a','z');
break;
}
case 0x41 /* 'A' */ :
case 0x42 /* 'B' */ :
case 0x43 /* 'C' */ :
case 0x44 /* 'D' */ :
case 0x45 /* 'E' */ :
case 0x46 /* 'F' */ :
case 0x47 /* 'G' */ :
case 0x48 /* 'H' */ :
case 0x49 /* 'I' */ :
case 0x4a /* 'J' */ :
case 0x4b /* 'K' */ :
case 0x4c /* 'L' */ :
case 0x4d /* 'M' */ :
case 0x4e /* 'N' */ :
case 0x4f /* 'O' */ :
case 0x50 /* 'P' */ :
case 0x51 /* 'Q' */ :
case 0x52 /* 'R' */ :
case 0x53 /* 'S' */ :
case 0x54 /* 'T' */ :
case 0x55 /* 'U' */ :
case 0x56 /* 'V' */ :
case 0x57 /* 'W' */ :
case 0x58 /* 'X' */ :
case 0x59 /* 'Y' */ :
case 0x5a /* 'Z' */ :
{
matchRange('A','Z');
break;
}
default:
{
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
}
}
}
{ // ( ... )*
for (;;) {
switch ( LA(1)) {
case 0x22 /* '\"' */ :
{
match('\"' /* charlit */ );
break;
}
case 0x24 /* '$' */ :
{
match('$' /* charlit */ );
break;
}
case 0x25 /* '%' */ :
{
match('%' /* charlit */ );
break;
}
case 0x26 /* '&' */ :
{
match('&' /* charlit */ );
break;
}
case 0x2d /* '-' */ :
{
match('-' /* charlit */ );
break;
}
case 0x30 /* '0' */ :
case 0x31 /* '1' */ :
case 0x32 /* '2' */ :
case 0x33 /* '3' */ :
case 0x34 /* '4' */ :
case 0x35 /* '5' */ :
case 0x36 /* '6' */ :
case 0x37 /* '7' */ :
case 0x38 /* '8' */ :
case 0x39 /* '9' */ :
{
matchRange('0','9');
break;
}
case 0x3b /* ';' */ :
{
match(';' /* charlit */ );
break;
}
case 0x3f /* '?' */ :
{
match('?' /* charlit */ );
break;
}
case 0x40 /* '@' */ :
{
match('@' /* charlit */ );
break;
}
case 0x41 /* 'A' */ :
case 0x42 /* 'B' */ :
case 0x43 /* 'C' */ :
case 0x44 /* 'D' */ :
case 0x45 /* 'E' */ :
case 0x46 /* 'F' */ :
case 0x47 /* 'G' */ :
case 0x48 /* 'H' */ :
case 0x49 /* 'I' */ :
case 0x4a /* 'J' */ :
case 0x4b /* 'K' */ :
case 0x4c /* 'L' */ :
case 0x4d /* 'M' */ :
case 0x4e /* 'N' */ :
case 0x4f /* 'O' */ :
case 0x50 /* 'P' */ :
case 0x51 /* 'Q' */ :
case 0x52 /* 'R' */ :
case 0x53 /* 'S' */ :
case 0x54 /* 'T' */ :
case 0x55 /* 'U' */ :
case 0x56 /* 'V' */ :
case 0x57 /* 'W' */ :
case 0x58 /* 'X' */ :
case 0x59 /* 'Y' */ :
case 0x5a /* 'Z' */ :
{
matchRange('A','Z');
break;
}
case 0x5c /* '\\' */ :
{
match('\\' /* charlit */ );
break;
}
case 0x5e /* '^' */ :
{
match('^' /* charlit */ );
break;
}
case 0x5f /* '_' */ :
{
match('_' /* charlit */ );
break;
}
case 0x60 /* '`' */ :
{
match('`' /* charlit */ );
break;
}
case 0x61 /* 'a' */ :
case 0x62 /* 'b' */ :
case 0x63 /* 'c' */ :
case 0x64 /* 'd' */ :
case 0x65 /* 'e' */ :
case 0x66 /* 'f' */ :
case 0x67 /* 'g' */ :
case 0x68 /* 'h' */ :
case 0x69 /* 'i' */ :
case 0x6a /* 'j' */ :
case 0x6b /* 'k' */ :
case 0x6c /* 'l' */ :
case 0x6d /* 'm' */ :
case 0x6e /* 'n' */ :
case 0x6f /* 'o' */ :
case 0x70 /* 'p' */ :
case 0x71 /* 'q' */ :
case 0x72 /* 'r' */ :
case 0x73 /* 's' */ :
case 0x74 /* 't' */ :
case 0x75 /* 'u' */ :
case 0x76 /* 'v' */ :
case 0x77 /* 'w' */ :
case 0x78 /* 'x' */ :
case 0x79 /* 'y' */ :
case 0x7a /* 'z' */ :
{
matchRange('a','z');
break;
}
default:
{
goto _loop86;
}
}
}
_loop86:;
} // ( ... )*
if ( inputState->guessing==0 ) {
#line 384 "ifconfig_bsd.g"
_ttype = WORD;
#line 1311 "IfconfigBSDCfgLexer.cpp"
}
}
else {
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
}
}}}}
_ttype = testLiteralsTable(_ttype);
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mPERCENT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = PERCENT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('%' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mAMPERSAND(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = AMPERSAND;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('&' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mSTAR(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = STAR;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('*' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mMINUS(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = MINUS;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('-' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mDOT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = DOT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('.' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mSLASH(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = SLASH;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('/' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mEQUAL(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = EQUAL;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('=' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mQUESTION(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = QUESTION;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('?' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mOPENING_PAREN(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = OPENING_PAREN;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('(' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mCLOSING_PAREN(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = CLOSING_PAREN;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match(')' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mOPENING_SQUARE(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = OPENING_SQUARE;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('[' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mCLOSING_SQUARE(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = CLOSING_SQUARE;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match(']' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mOPENING_BRACE(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = OPENING_BRACE;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('{' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mCLOSING_BRACE(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = CLOSING_BRACE;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('}' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mLESS_THAN(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = LESS_THAN;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('<' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void IfconfigBSDCfgLexer::mGREATER_THAN(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = GREATER_THAN;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
match('>' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
const unsigned long IfconfigBSDCfgLexer::_tokenSet_0_data_[] = { 4294958072UL, 1UL, 0UL, 2147483648UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12 0x13 0x14
// 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgLexer::_tokenSet_0(_tokenSet_0_data_,16);
const unsigned long IfconfigBSDCfgLexer::_tokenSet_1_data_[] = { 4294958072UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12 0x13 0x14
// 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f ! \" # $ %
// & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G
// H
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgLexer::_tokenSet_1(_tokenSet_1_data_,16);
const unsigned long IfconfigBSDCfgLexer::_tokenSet_2_data_[] = { 0UL, 67043328UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgLexer::_tokenSet_2(_tokenSet_2_data_,10);
const unsigned long IfconfigBSDCfgLexer::_tokenSet_3_data_[] = { 0UL, 67059712UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// . 0 1 2 3 4 5 6 7 8 9
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgLexer::_tokenSet_3(_tokenSet_3_data_,10);
const unsigned long IfconfigBSDCfgLexer::_tokenSet_4_data_[] = { 0UL, 134152192UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// 0 1 2 3 4 5 6 7 8 9 : A B C D E F
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgLexer::_tokenSet_4(_tokenSet_4_data_,10);
const unsigned long IfconfigBSDCfgLexer::_tokenSet_5_data_[] = { 4294967288UL, 4227858431UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10 0x11 0x12 0x13
// 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f ! \" #
// $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 ; < = > ? @ A B C D E F
// G H
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgLexer::_tokenSet_5(_tokenSet_5_data_,16);
const unsigned long IfconfigBSDCfgLexer::_tokenSet_6_data_[] = { 0UL, 0UL, 134217726UL, 134217726UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// A B C D E F G H
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgLexer::_tokenSet_6(_tokenSet_6_data_,10);

View File

@ -1,21 +1,21 @@
#ifndef INC_IfconfigCfgLexer_hpp_
#define INC_IfconfigCfgLexer_hpp_
#ifndef INC_IfconfigBSDCfgLexer_hpp_
#define INC_IfconfigBSDCfgLexer_hpp_
#line 25 "ifconfig.g"
#line 25 "ifconfig_bsd.g"
// gets inserted before antlr generated includes in the header
// file
#include "IfconfigImporter.h"
#line 11 "IfconfigCfgLexer.hpp"
#line 11 "IfconfigBSDCfgLexer.hpp"
#include <antlr/config.hpp>
/* $ANTLR 2.7.7 (20090306): "ifconfig.g" -> "IfconfigCfgLexer.hpp"$ */
/* $ANTLR 2.7.7 (20100319): "ifconfig_bsd.g" -> "IfconfigBSDCfgLexer.hpp"$ */
#include <antlr/CommonToken.hpp>
#include <antlr/InputBuffer.hpp>
#include <antlr/BitSet.hpp>
#include "IfconfigCfgParserTokenTypes.hpp"
#include "IfconfigBSDCfgParserTokenTypes.hpp"
#include <antlr/CharScanner.hpp>
#line 32 "ifconfig.g"
#line 32 "ifconfig_bsd.g"
// gets inserted after antlr generated includes in the header file
// outside any generated namespace specifications
@ -25,17 +25,17 @@
class IfconfigImporter;
#line 29 "IfconfigCfgLexer.hpp"
#line 57 "ifconfig.g"
#line 29 "IfconfigBSDCfgLexer.hpp"
#line 57 "ifconfig_bsd.g"
// gets inserted after generated namespace specifications in the
// header file. But outside the generated class.
#line 35 "IfconfigCfgLexer.hpp"
class CUSTOM_API IfconfigCfgLexer : public ANTLR_USE_NAMESPACE(antlr)CharScanner, public IfconfigCfgParserTokenTypes
#line 35 "IfconfigBSDCfgLexer.hpp"
class CUSTOM_API IfconfigBSDCfgLexer : public ANTLR_USE_NAMESPACE(antlr)CharScanner, public IfconfigBSDCfgParserTokenTypes
{
#line 1 "ifconfig.g"
#line 39 "IfconfigCfgLexer.hpp"
#line 1 "ifconfig_bsd.g"
#line 39 "IfconfigBSDCfgLexer.hpp"
private:
void initLiterals();
public:
@ -44,9 +44,9 @@ public:
return true;
}
public:
IfconfigCfgLexer(ANTLR_USE_NAMESPACE(std)istream& in);
IfconfigCfgLexer(ANTLR_USE_NAMESPACE(antlr)InputBuffer& ib);
IfconfigCfgLexer(const ANTLR_USE_NAMESPACE(antlr)LexerSharedInputState& state);
IfconfigBSDCfgLexer(ANTLR_USE_NAMESPACE(std)istream& in);
IfconfigBSDCfgLexer(ANTLR_USE_NAMESPACE(antlr)InputBuffer& ib);
IfconfigBSDCfgLexer(const ANTLR_USE_NAMESPACE(antlr)LexerSharedInputState& state);
ANTLR_USE_NAMESPACE(antlr)RefToken nextToken();
public: void mLINE_COMMENT(bool _createToken);
public: void mNEWLINE(bool _createToken);
@ -96,4 +96,4 @@ private:
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_6;
};
#endif /*INC_IfconfigCfgLexer_hpp_*/
#endif /*INC_IfconfigBSDCfgLexer_hpp_*/

View File

@ -0,0 +1,420 @@
/* $ANTLR 2.7.7 (20100319): "ifconfig_bsd.g" -> "IfconfigBSDCfgParser.cpp"$ */
#line 43 "ifconfig_bsd.g"
// gets inserted before the antlr generated includes in the cpp
// file
#line 8 "IfconfigBSDCfgParser.cpp"
#include "IfconfigBSDCfgParser.hpp"
#include <antlr/NoViableAltException.hpp>
#include <antlr/SemanticException.hpp>
#include <antlr/ASTFactory.hpp>
#line 49 "ifconfig_bsd.g"
// gets inserted after the antlr generated includes in the cpp
// file
#include <antlr/Token.hpp>
#include <antlr/TokenBuffer.hpp>
#line 20 "IfconfigBSDCfgParser.cpp"
#line 1 "ifconfig_bsd.g"
#line 22 "IfconfigBSDCfgParser.cpp"
IfconfigBSDCfgParser::IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf, int k)
: ANTLR_USE_NAMESPACE(antlr)LLkParser(tokenBuf,k)
{
}
IfconfigBSDCfgParser::IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf)
: ANTLR_USE_NAMESPACE(antlr)LLkParser(tokenBuf,2)
{
}
IfconfigBSDCfgParser::IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer, int k)
: ANTLR_USE_NAMESPACE(antlr)LLkParser(lexer,k)
{
}
IfconfigBSDCfgParser::IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer)
: ANTLR_USE_NAMESPACE(antlr)LLkParser(lexer,2)
{
}
IfconfigBSDCfgParser::IfconfigBSDCfgParser(const ANTLR_USE_NAMESPACE(antlr)ParserSharedInputState& state)
: ANTLR_USE_NAMESPACE(antlr)LLkParser(state,2)
{
}
void IfconfigBSDCfgParser::cfgfile() {
Tracer traceInOut(this, "cfgfile");
try { // for error handling
{ // ( ... )*
for (;;) {
switch ( LA(1)) {
case LINE_COMMENT:
{
comment();
break;
}
case LLADDR:
{
hwaddr_line();
break;
}
case INET:
{
inet_address();
break;
}
case INET6:
{
inet6_address();
break;
}
case GROUPS:
{
groups();
break;
}
case NEWLINE:
{
match(NEWLINE);
break;
}
case DOUBLE_NEWLINE:
{
match(DOUBLE_NEWLINE);
break;
}
default:
if ((LA(1) == WORD) && (LA(2) == COLON)) {
interface_line();
}
else if (((LA(1) >= PRIORITY && LA(1) <= WORD)) && (_tokenSet_0.member(LA(2)))) {
unknown_line();
}
else {
goto _loop3;
}
}
}
_loop3:;
} // ( ... )*
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_1);
}
}
void IfconfigBSDCfgParser::comment() {
Tracer traceInOut(this, "comment");
try { // for error handling
match(LINE_COMMENT);
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_0);
}
}
void IfconfigBSDCfgParser::interface_line() {
Tracer traceInOut(this, "interface_line");
ANTLR_USE_NAMESPACE(antlr)RefToken in = ANTLR_USE_NAMESPACE(antlr)nullToken;
#line 165 "ifconfig_bsd.g"
InterfaceSpec is;
#line 128 "IfconfigBSDCfgParser.cpp"
try { // for error handling
in = LT(1);
match(WORD);
match(COLON);
match(FLAGS);
match(EQUAL);
match(INT_CONST);
#line 168 "ifconfig_bsd.g"
// interface name and status
is.name = in->getText();
importer->newInterface(is);
consumeUntil(NEWLINE);
#line 144 "IfconfigBSDCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_0);
}
}
void IfconfigBSDCfgParser::hwaddr_line() {
Tracer traceInOut(this, "hwaddr_line");
ANTLR_USE_NAMESPACE(antlr)RefToken addr = ANTLR_USE_NAMESPACE(antlr)nullToken;
try { // for error handling
match(LLADDR);
addr = LT(1);
match(MAC_ADDRESS);
#line 181 "ifconfig_bsd.g"
importer->HwAddressForCurrentInterface(addr->getText());
#line 164 "IfconfigBSDCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_0);
}
}
void IfconfigBSDCfgParser::inet_address() {
Tracer traceInOut(this, "inet_address");
ANTLR_USE_NAMESPACE(antlr)RefToken addr = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefToken netm = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefToken bcast = ANTLR_USE_NAMESPACE(antlr)nullToken;
#line 190 "ifconfig_bsd.g"
AddressSpec as;
#line 179 "IfconfigBSDCfgParser.cpp"
try { // for error handling
match(INET);
addr = LT(1);
match(IPV4);
match(NETMASK);
netm = LT(1);
match(HEX_CONST);
match(BROADCAST);
bcast = LT(1);
match(IPV4);
#line 193 "ifconfig_bsd.g"
as.at = AddressSpec::INTERFACE_CONFIGURATION;
as.address = addr->getText();
as.netmask = netm->getText();
as.broadcast = bcast->getText();
importer->inetConfigurationForCurrentInterface(as);
#line 199 "IfconfigBSDCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_0);
}
}
void IfconfigBSDCfgParser::inet6_address() {
Tracer traceInOut(this, "inet6_address");
ANTLR_USE_NAMESPACE(antlr)RefToken addr = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefToken netm = ANTLR_USE_NAMESPACE(antlr)nullToken;
#line 205 "ifconfig_bsd.g"
AddressSpec as;
#line 213 "IfconfigBSDCfgParser.cpp"
try { // for error handling
match(INET6);
addr = LT(1);
match(IPV6);
match(PERCENT);
match(WORD);
match(PREFIXLEN);
netm = LT(1);
match(INT_CONST);
match(SCOPEID);
match(HEX_CONST);
#line 208 "ifconfig_bsd.g"
as.at = AddressSpec::INTERFACE_CONFIGURATION;
as.address = addr->getText();
as.netmask = netm->getText();
importer->inet6ConfigurationForCurrentInterface(as);
#line 233 "IfconfigBSDCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_0);
}
}
void IfconfigBSDCfgParser::groups() {
Tracer traceInOut(this, "groups");
try { // for error handling
match(GROUPS);
match(COLON);
groups_list();
match(NEWLINE);
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_0);
}
}
void IfconfigBSDCfgParser::unknown_line() {
Tracer traceInOut(this, "unknown_line");
try { // for error handling
{
switch ( LA(1)) {
case PRIORITY:
{
match(PRIORITY);
break;
}
case MEDIA:
{
match(MEDIA);
break;
}
case STATUS:
{
match(STATUS);
break;
}
case WORD:
{
match(WORD);
break;
}
default:
{
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
}
}
}
#line 152 "ifconfig_bsd.g"
consumeUntil(NEWLINE);
#line 292 "IfconfigBSDCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_0);
}
}
void IfconfigBSDCfgParser::groups_list() {
Tracer traceInOut(this, "groups_list");
try { // for error handling
match(WORD);
#line 224 "ifconfig_bsd.g"
importer->addGroupToCurrentInterface(LT(0)->getText());
#line 307 "IfconfigBSDCfgParser.cpp"
{ // ( ... )*
for (;;) {
if ((LA(1) == WORD)) {
match(WORD);
#line 226 "ifconfig_bsd.g"
importer->addGroupToCurrentInterface(LT(0)->getText());
#line 314 "IfconfigBSDCfgParser.cpp"
}
else {
goto _loop14;
}
}
_loop14:;
} // ( ... )*
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_2);
}
}
void IfconfigBSDCfgParser::initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& )
{
}
const char* IfconfigBSDCfgParser::tokenNames[] = {
"<0>",
"EOF",
"<2>",
"NULL_TREE_LOOKAHEAD",
"NEWLINE",
"DOUBLE_NEWLINE",
"LINE_COMMENT",
"\"priority\"",
"\"media\"",
"\"status\"",
"WORD",
"COLON",
"\"flags\"",
"EQUAL",
"INT_CONST",
"LLADDR",
"MAC_ADDRESS",
"\"inet\"",
"IPV4",
"\"netmask\"",
"HEX_CONST",
"\"broadcast\"",
"\"inet6\"",
"IPV6",
"PERCENT",
"\"prefixlen\"",
"\"scopeid\"",
"\"groups\"",
"\"Link\"",
"\"Global\"",
"\"Host\"",
"\"addr\"",
"\"Bcast\"",
"\"P-t-P\"",
"\"Mask\"",
"\"Scope\"",
"\"mtu\"",
"\"encap\"",
"\"Loopback\"",
"\"UP\"",
"\"BROADCAST\"",
"\"POINTOPOINT\"",
"\"LOOPBACK\"",
"\"NOARP\"",
"\"RUNNING\"",
"\"RX\"",
"\"TX\"",
"\"collisions\"",
"\"Interrupt\"",
"\"HWaddr\"",
"\"lladdr\"",
"Whitespace",
"NUMBER",
"NEG_INT_CONST",
"HEX_DIGIT",
"DIGIT",
"NUM_3DIGIT",
"NUM_HEX_4DIGIT",
"NUMBER_ADDRESS_OR_WORD",
"AMPERSAND",
"STAR",
"MINUS",
"DOT",
"SLASH",
"QUESTION",
"OPENING_PAREN",
"CLOSING_PAREN",
"OPENING_SQUARE",
"CLOSING_SQUARE",
"OPENING_BRACE",
"CLOSING_BRACE",
"LESS_THAN",
"GREATER_THAN",
0
};
const unsigned long IfconfigBSDCfgParser::_tokenSet_0_data_[] = { 138577906UL, 0UL, 0UL, 0UL };
// EOF NEWLINE DOUBLE_NEWLINE LINE_COMMENT "priority" "media" "status"
// WORD LLADDR "inet" "inet6" "groups"
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgParser::_tokenSet_0(_tokenSet_0_data_,4);
const unsigned long IfconfigBSDCfgParser::_tokenSet_1_data_[] = { 2UL, 0UL, 0UL, 0UL };
// EOF
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgParser::_tokenSet_1(_tokenSet_1_data_,4);
const unsigned long IfconfigBSDCfgParser::_tokenSet_2_data_[] = { 16UL, 0UL, 0UL, 0UL };
// NEWLINE
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgParser::_tokenSet_2(_tokenSet_2_data_,4);

View File

@ -0,0 +1,127 @@
#ifndef INC_IfconfigBSDCfgParser_hpp_
#define INC_IfconfigBSDCfgParser_hpp_
#line 25 "ifconfig_bsd.g"
// gets inserted before antlr generated includes in the header
// file
#include "IfconfigImporter.h"
#line 11 "IfconfigBSDCfgParser.hpp"
#include <antlr/config.hpp>
/* $ANTLR 2.7.7 (20100319): "ifconfig_bsd.g" -> "IfconfigBSDCfgParser.hpp"$ */
#include <antlr/TokenStream.hpp>
#include <antlr/TokenBuffer.hpp>
#include "IfconfigBSDCfgParserTokenTypes.hpp"
#include <antlr/LLkParser.hpp>
#line 32 "ifconfig_bsd.g"
// gets inserted after antlr generated includes in the header file
// outside any generated namespace specifications
#include <iostream>
#include <sstream>
class IfconfigImporter;
#line 29 "IfconfigBSDCfgParser.hpp"
#line 57 "ifconfig_bsd.g"
// gets inserted after generated namespace specifications in the
// header file. But outside the generated class.
#line 35 "IfconfigBSDCfgParser.hpp"
class CUSTOM_API IfconfigBSDCfgParser : public ANTLR_USE_NAMESPACE(antlr)LLkParser, public IfconfigBSDCfgParserTokenTypes
{
#line 82 "ifconfig_bsd.g"
// additional methods and members
public:
std::ostream *dbg;
IfconfigImporter *importer;
/// Parser error-reporting function can be overridden in subclass
virtual void reportError(const ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex)
{
importer->addMessageToLog("Parser error: " + ex.toString());
std::cerr << ex.toString() << std::endl;
}
/// Parser error-reporting function can be overridden in subclass
virtual void reportError(const ANTLR_USE_NAMESPACE(std)string& s)
{
importer->addMessageToLog("Parser error: " + s);
std::cerr << s << std::endl;
}
/// Parser warning-reporting function can be overridden in subclass
virtual void reportWarning(const ANTLR_USE_NAMESPACE(std)string& s)
{
importer->addMessageToLog("Parser warning: " + s);
std::cerr << s << std::endl;
}
#line 39 "IfconfigBSDCfgParser.hpp"
public:
void initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& factory );
protected:
IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf, int k);
public:
IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf);
protected:
IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer, int k);
public:
IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer);
IfconfigBSDCfgParser(const ANTLR_USE_NAMESPACE(antlr)ParserSharedInputState& state);
int getNumTokens() const
{
return IfconfigBSDCfgParser::NUM_TOKENS;
}
const char* getTokenName( int type ) const
{
if( type > getNumTokens() ) return 0;
return IfconfigBSDCfgParser::tokenNames[type];
}
const char* const* getTokenNames() const
{
return IfconfigBSDCfgParser::tokenNames;
}
public: void cfgfile();
public: void comment();
public: void interface_line();
public: void hwaddr_line();
public: void inet_address();
public: void inet6_address();
public: void groups();
public: void unknown_line();
public: void groups_list();
public:
ANTLR_USE_NAMESPACE(antlr)RefAST getAST()
{
return returnAST;
}
protected:
ANTLR_USE_NAMESPACE(antlr)RefAST returnAST;
private:
static const char* tokenNames[];
#ifndef NO_STATIC_CONSTS
static const int NUM_TOKENS = 73;
#else
enum {
NUM_TOKENS = 73
};
#endif
static const unsigned long _tokenSet_0_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_0;
static const unsigned long _tokenSet_1_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_1;
static const unsigned long _tokenSet_2_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_2;
};
#endif /*INC_IfconfigBSDCfgParser_hpp_*/

View File

@ -0,0 +1,89 @@
#ifndef INC_IfconfigBSDCfgParserTokenTypes_hpp_
#define INC_IfconfigBSDCfgParserTokenTypes_hpp_
/* $ANTLR 2.7.7 (20100319): "ifconfig_bsd.g" -> "IfconfigBSDCfgParserTokenTypes.hpp"$ */
#ifndef CUSTOM_API
# define CUSTOM_API
#endif
#ifdef __cplusplus
struct CUSTOM_API IfconfigBSDCfgParserTokenTypes {
#endif
enum {
EOF_ = 1,
NEWLINE = 4,
DOUBLE_NEWLINE = 5,
LINE_COMMENT = 6,
PRIORITY = 7,
MEDIA = 8,
STATUS = 9,
WORD = 10,
COLON = 11,
FLAGS = 12,
EQUAL = 13,
INT_CONST = 14,
LLADDR = 15,
MAC_ADDRESS = 16,
INET = 17,
IPV4 = 18,
NETMASK = 19,
HEX_CONST = 20,
BROADCAST = 21,
INET6 = 22,
IPV6 = 23,
PERCENT = 24,
PREFIXLEN = 25,
SCOPEID = 26,
GROUPS = 27,
LINK = 28,
GLOBAL = 29,
HOST = 30,
ADDR = 31,
BCAST = 32,
P_T_P = 33,
MASK = 34,
SCOPE = 35,
MTU = 36,
ENCAP = 37,
LOOPBACK = 38,
UP = 39,
UPPER_BROADCAST = 40,
UPPER_POINTOPOINT = 41,
UPPER_LOOPBACK = 42,
UPPER_NOARP = 43,
UPPER_RUNNING = 44,
RX = 45,
TX = 46,
COLLISIONS = 47,
INTERRUPT = 48,
HWADDR = 49,
LLADR = 50,
Whitespace = 51,
NUMBER = 52,
NEG_INT_CONST = 53,
HEX_DIGIT = 54,
DIGIT = 55,
NUM_3DIGIT = 56,
NUM_HEX_4DIGIT = 57,
NUMBER_ADDRESS_OR_WORD = 58,
AMPERSAND = 59,
STAR = 60,
MINUS = 61,
DOT = 62,
SLASH = 63,
QUESTION = 64,
OPENING_PAREN = 65,
CLOSING_PAREN = 66,
OPENING_SQUARE = 67,
CLOSING_SQUARE = 68,
OPENING_BRACE = 69,
CLOSING_BRACE = 70,
LESS_THAN = 71,
GREATER_THAN = 72,
NULL_TREE_LOOKAHEAD = 3
};
#ifdef __cplusplus
};
#endif
#endif /*INC_IfconfigBSDCfgParserTokenTypes_hpp_*/

View File

@ -0,0 +1,71 @@
// $ANTLR 2.7.7 (20100319): ifconfig_bsd.g -> IfconfigBSDCfgParserTokenTypes.txt$
IfconfigBSDCfgParser // output token vocab name
NEWLINE=4
DOUBLE_NEWLINE=5
LINE_COMMENT=6
PRIORITY="priority"=7
MEDIA="media"=8
STATUS="status"=9
WORD=10
COLON=11
FLAGS="flags"=12
EQUAL=13
INT_CONST=14
LLADDR=15
MAC_ADDRESS=16
INET="inet"=17
IPV4=18
NETMASK="netmask"=19
HEX_CONST=20
BROADCAST="broadcast"=21
INET6="inet6"=22
IPV6=23
PERCENT=24
PREFIXLEN="prefixlen"=25
SCOPEID="scopeid"=26
GROUPS="groups"=27
LINK="Link"=28
GLOBAL="Global"=29
HOST="Host"=30
ADDR="addr"=31
BCAST="Bcast"=32
P_T_P="P-t-P"=33
MASK="Mask"=34
SCOPE="Scope"=35
MTU="mtu"=36
ENCAP="encap"=37
LOOPBACK="Loopback"=38
UP="UP"=39
UPPER_BROADCAST="BROADCAST"=40
UPPER_POINTOPOINT="POINTOPOINT"=41
UPPER_LOOPBACK="LOOPBACK"=42
UPPER_NOARP="NOARP"=43
UPPER_RUNNING="RUNNING"=44
RX="RX"=45
TX="TX"=46
COLLISIONS="collisions"=47
INTERRUPT="Interrupt"=48
HWADDR="HWaddr"=49
LLADR="lladdr"=50
Whitespace=51
NUMBER=52
NEG_INT_CONST=53
HEX_DIGIT=54
DIGIT=55
NUM_3DIGIT=56
NUM_HEX_4DIGIT=57
NUMBER_ADDRESS_OR_WORD=58
AMPERSAND=59
STAR=60
MINUS=61
DOT=62
SLASH=63
QUESTION=64
OPENING_PAREN=65
CLOSING_PAREN=66
OPENING_SQUARE=67
CLOSING_SQUARE=68
OPENING_BRACE=69
CLOSING_BRACE=70
LESS_THAN=71
GREATER_THAN=72

View File

@ -1,88 +0,0 @@
#ifndef INC_IfconfigCfgParserTokenTypes_hpp_
#define INC_IfconfigCfgParserTokenTypes_hpp_
/* $ANTLR 2.7.7 (20090306): "ifconfig.g" -> "IfconfigCfgParserTokenTypes.hpp"$ */
#ifndef CUSTOM_API
# define CUSTOM_API
#endif
#ifdef __cplusplus
struct CUSTOM_API IfconfigCfgParserTokenTypes {
#endif
enum {
EOF_ = 1,
NEWLINE = 4,
DOUBLE_NEWLINE = 5,
LINE_COMMENT = 6,
PRIORITY = 7,
MEDIA = 8,
STATUS = 9,
WORD = 10,
UP = 11,
UPPER_BROADCAST = 12,
UPPER_POINTOPOINT = 13,
UPPER_LOOPBACK = 14,
UPPER_NOARP = 15,
UPPER_RUNNING = 16,
LOOPBACK = 17,
COLLISIONS = 18,
COLON = 19,
RX = 20,
TX = 21,
FLAGS = 22,
EQUAL = 23,
INT_CONST = 24,
LINK = 25,
ENCAP = 26,
LLADDR = 27,
MAC_ADDRESS = 28,
HWADDR = 29,
INET = 30,
IPV4 = 31,
NETMASK = 32,
HEX_CONST = 33,
BROADCAST = 34,
ADDR = 35,
BCAST = 36,
MASK = 37,
P_T_P = 38,
INET6 = 39,
IPV6 = 40,
PERCENT = 41,
PREFIXLEN = 42,
SCOPEID = 43,
SLASH = 44,
SCOPE = 45,
HOST = 46,
GLOBAL = 47,
GROUPS = 48,
MTU = 49,
LLADR = 50,
Whitespace = 51,
NUMBER = 52,
NEG_INT_CONST = 53,
HEX_DIGIT = 54,
DIGIT = 55,
NUM_3DIGIT = 56,
NUM_HEX_4DIGIT = 57,
NUMBER_ADDRESS_OR_WORD = 58,
AMPERSAND = 59,
STAR = 60,
MINUS = 61,
DOT = 62,
QUESTION = 63,
OPENING_PAREN = 64,
CLOSING_PAREN = 65,
OPENING_SQUARE = 66,
CLOSING_SQUARE = 67,
OPENING_BRACE = 68,
CLOSING_BRACE = 69,
LESS_THAN = 70,
GREATER_THAN = 71,
NULL_TREE_LOOKAHEAD = 3
};
#ifdef __cplusplus
};
#endif
#endif /*INC_IfconfigCfgParserTokenTypes_hpp_*/

View File

@ -1,70 +0,0 @@
// $ANTLR 2.7.7 (20090306): ifconfig.g -> IfconfigCfgParserTokenTypes.txt$
IfconfigCfgParser // output token vocab name
NEWLINE=4
DOUBLE_NEWLINE=5
LINE_COMMENT=6
PRIORITY="priority"=7
MEDIA="media"=8
STATUS="status"=9
WORD=10
UP="UP"=11
UPPER_BROADCAST="BROADCAST"=12
UPPER_POINTOPOINT="POINTOPOINT"=13
UPPER_LOOPBACK="LOOPBACK"=14
UPPER_NOARP="NOARP"=15
UPPER_RUNNING="RUNNING"=16
LOOPBACK="Loopback"=17
COLLISIONS="collisions"=18
COLON=19
RX="RX"=20
TX="TX"=21
FLAGS="flags"=22
EQUAL=23
INT_CONST=24
LINK="Link"=25
ENCAP="encap"=26
LLADDR=27
MAC_ADDRESS=28
HWADDR="HWaddr"=29
INET="inet"=30
IPV4=31
NETMASK="netmask"=32
HEX_CONST=33
BROADCAST="broadcast"=34
ADDR="addr"=35
BCAST="Bcast"=36
MASK="Mask"=37
P_T_P="P-t-P"=38
INET6="inet6"=39
IPV6=40
PERCENT=41
PREFIXLEN="prefixlen"=42
SCOPEID="scopeid"=43
SLASH=44
SCOPE="Scope"=45
HOST="Host"=46
GLOBAL="Global"=47
GROUPS="groups"=48
MTU="mtu"=49
LLADR="lladdr"=50
Whitespace=51
NUMBER=52
NEG_INT_CONST=53
HEX_DIGIT=54
DIGIT=55
NUM_3DIGIT=56
NUM_HEX_4DIGIT=57
NUMBER_ADDRESS_OR_WORD=58
AMPERSAND=59
STAR=60
MINUS=61
DOT=62
QUESTION=63
OPENING_PAREN=64
CLOSING_PAREN=65
OPENING_SQUARE=66
CLOSING_SQUARE=67
OPENING_BRACE=68
CLOSING_BRACE=69
LESS_THAN=70
GREATER_THAN=71

View File

@ -1,11 +1,11 @@
/* $ANTLR 2.7.7 (20090306): "ifconfig.g" -> "IfconfigCfgLexer.cpp"$ */
#line 43 "ifconfig.g"
/* $ANTLR 2.7.7 (20100319): "ifconfig_linux.g" -> "IfconfigLinuxCfgLexer.cpp"$ */
#line 43 "ifconfig_linux.g"
// gets inserted before the antlr generated includes in the cpp
// file
#line 8 "IfconfigCfgLexer.cpp"
#include "IfconfigCfgLexer.hpp"
#line 8 "IfconfigLinuxCfgLexer.cpp"
#include "IfconfigLinuxCfgLexer.hpp"
#include <antlr/CharBuffer.hpp>
#include <antlr/TokenStreamException.hpp>
#include <antlr/TokenStreamIOException.hpp>
@ -14,72 +14,73 @@
#include <antlr/CharStreamIOException.hpp>
#include <antlr/NoViableAltForCharException.hpp>
#line 49 "ifconfig.g"
#line 49 "ifconfig_linux.g"
// gets inserted after the antlr generated includes in the cpp
// file
#include <antlr/Token.hpp>
#include <antlr/TokenBuffer.hpp>
#line 25 "IfconfigCfgLexer.cpp"
#line 1 "ifconfig.g"
#line 27 "IfconfigCfgLexer.cpp"
IfconfigCfgLexer::IfconfigCfgLexer(ANTLR_USE_NAMESPACE(std)istream& in)
#line 25 "IfconfigLinuxCfgLexer.cpp"
#line 1 "ifconfig_linux.g"
#line 27 "IfconfigLinuxCfgLexer.cpp"
IfconfigLinuxCfgLexer::IfconfigLinuxCfgLexer(ANTLR_USE_NAMESPACE(std)istream& in)
: ANTLR_USE_NAMESPACE(antlr)CharScanner(new ANTLR_USE_NAMESPACE(antlr)CharBuffer(in),true)
{
initLiterals();
}
IfconfigCfgLexer::IfconfigCfgLexer(ANTLR_USE_NAMESPACE(antlr)InputBuffer& ib)
IfconfigLinuxCfgLexer::IfconfigLinuxCfgLexer(ANTLR_USE_NAMESPACE(antlr)InputBuffer& ib)
: ANTLR_USE_NAMESPACE(antlr)CharScanner(ib,true)
{
initLiterals();
}
IfconfigCfgLexer::IfconfigCfgLexer(const ANTLR_USE_NAMESPACE(antlr)LexerSharedInputState& state)
IfconfigLinuxCfgLexer::IfconfigLinuxCfgLexer(const ANTLR_USE_NAMESPACE(antlr)LexerSharedInputState& state)
: ANTLR_USE_NAMESPACE(antlr)CharScanner(state,true)
{
initLiterals();
}
void IfconfigCfgLexer::initLiterals()
void IfconfigLinuxCfgLexer::initLiterals()
{
literals["priority"] = 7;
literals["broadcast"] = 34;
literals["Scope"] = 45;
literals["scopeid"] = 43;
literals["Host"] = 46;
literals["broadcast"] = 43;
literals["Scope"] = 38;
literals["scopeid"] = 46;
literals["Host"] = 39;
literals["UP"] = 11;
literals["groups"] = 48;
literals["HWaddr"] = 29;
literals["groups"] = 41;
literals["HWaddr"] = 27;
literals["encap"] = 26;
literals["NOARP"] = 15;
literals["Mask"] = 37;
literals["Mask"] = 33;
literals["netmask"] = 44;
literals["RUNNING"] = 16;
literals["netmask"] = 32;
literals["inet"] = 30;
literals["inet"] = 29;
literals["media"] = 8;
literals["BROADCAST"] = 12;
literals["P-t-P"] = 38;
literals["prefixlen"] = 42;
literals["P-t-P"] = 34;
literals["prefixlen"] = 45;
literals["Loopback"] = 17;
literals["Bcast"] = 36;
literals["mtu"] = 49;
literals["inet6"] = 39;
literals["Interrupt"] = 18;
literals["Bcast"] = 32;
literals["mtu"] = 47;
literals["inet6"] = 35;
literals["status"] = 9;
literals["LOOPBACK"] = 14;
literals["Link"] = 25;
literals["TX"] = 21;
literals["RX"] = 20;
literals["addr"] = 35;
literals["Global"] = 47;
literals["TX"] = 22;
literals["addr"] = 30;
literals["RX"] = 21;
literals["Global"] = 40;
literals["POINTOPOINT"] = 13;
literals["flags"] = 22;
literals["lladdr"] = 50;
literals["collisions"] = 18;
literals["flags"] = 42;
literals["lladdr"] = 48;
literals["collisions"] = 19;
}
ANTLR_USE_NAMESPACE(antlr)RefToken IfconfigCfgLexer::nextToken()
ANTLR_USE_NAMESPACE(antlr)RefToken IfconfigLinuxCfgLexer::nextToken()
{
ANTLR_USE_NAMESPACE(antlr)RefToken theRetToken;
for (;;) {
@ -300,7 +301,7 @@ tryAgain:;
}
}
void IfconfigCfgLexer::mLINE_COMMENT(bool _createToken) {
void IfconfigLinuxCfgLexer::mLINE_COMMENT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = LINE_COMMENT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -329,7 +330,7 @@ void IfconfigCfgLexer::mLINE_COMMENT(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mNEWLINE(bool _createToken) {
void IfconfigLinuxCfgLexer::mNEWLINE(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = NEWLINE;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -350,9 +351,9 @@ void IfconfigCfgLexer::mNEWLINE(bool _createToken) {
}
if ( inputState->guessing==0 ) {
#line 497 "ifconfig.g"
#line 448 "ifconfig_linux.g"
newline();
#line 356 "IfconfigCfgLexer.cpp"
#line 357 "IfconfigLinuxCfgLexer.cpp"
}
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
@ -362,7 +363,7 @@ void IfconfigCfgLexer::mNEWLINE(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mWhitespace(bool _createToken) {
void IfconfigLinuxCfgLexer::mWhitespace(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = Whitespace;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -431,9 +432,9 @@ void IfconfigCfgLexer::mWhitespace(bool _createToken) {
}
}
if ( inputState->guessing==0 ) {
#line 403 "ifconfig.g"
#line 354 "ifconfig_linux.g"
_ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
#line 437 "IfconfigCfgLexer.cpp"
#line 438 "IfconfigLinuxCfgLexer.cpp"
}
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
_token = makeToken(_ttype);
@ -443,7 +444,7 @@ void IfconfigCfgLexer::mWhitespace(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mINT_CONST(bool _createToken) {
void IfconfigLinuxCfgLexer::mINT_CONST(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = INT_CONST;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -456,7 +457,7 @@ void IfconfigCfgLexer::mINT_CONST(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mHEX_CONST(bool _createToken) {
void IfconfigLinuxCfgLexer::mHEX_CONST(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = HEX_CONST;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -469,7 +470,7 @@ void IfconfigCfgLexer::mHEX_CONST(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mNUMBER(bool _createToken) {
void IfconfigLinuxCfgLexer::mNUMBER(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = NUMBER;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -482,7 +483,7 @@ void IfconfigCfgLexer::mNUMBER(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mNEG_INT_CONST(bool _createToken) {
void IfconfigLinuxCfgLexer::mNEG_INT_CONST(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = NEG_INT_CONST;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -495,7 +496,7 @@ void IfconfigCfgLexer::mNEG_INT_CONST(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mCOLON(bool _createToken) {
void IfconfigLinuxCfgLexer::mCOLON(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = COLON;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -508,7 +509,7 @@ void IfconfigCfgLexer::mCOLON(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mHEX_DIGIT(bool _createToken) {
void IfconfigLinuxCfgLexer::mHEX_DIGIT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = HEX_DIGIT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -563,7 +564,7 @@ void IfconfigCfgLexer::mHEX_DIGIT(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mDIGIT(bool _createToken) {
void IfconfigLinuxCfgLexer::mDIGIT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = DIGIT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -577,7 +578,7 @@ void IfconfigCfgLexer::mDIGIT(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mNUM_3DIGIT(bool _createToken) {
void IfconfigLinuxCfgLexer::mNUM_3DIGIT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = NUM_3DIGIT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -611,7 +612,7 @@ void IfconfigCfgLexer::mNUM_3DIGIT(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mNUM_HEX_4DIGIT(bool _createToken) {
void IfconfigLinuxCfgLexer::mNUM_HEX_4DIGIT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = NUM_HEX_4DIGIT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -653,7 +654,7 @@ void IfconfigCfgLexer::mNUM_HEX_4DIGIT(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mMAC_ADDRESS(bool _createToken) {
void IfconfigLinuxCfgLexer::mMAC_ADDRESS(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = MAC_ADDRESS;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -666,7 +667,7 @@ void IfconfigCfgLexer::mMAC_ADDRESS(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
void IfconfigLinuxCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = NUMBER_ADDRESS_OR_WORD;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -701,9 +702,9 @@ void IfconfigCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
mNUM_3DIGIT(false);
}
if ( inputState->guessing==0 ) {
#line 445 "ifconfig.g"
#line 396 "ifconfig_linux.g"
_ttype = IPV4;
#line 707 "IfconfigCfgLexer.cpp"
#line 708 "IfconfigLinuxCfgLexer.cpp"
}
}
else {
@ -751,9 +752,9 @@ void IfconfigCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
mNUM_HEX_4DIGIT(false);
}
if ( inputState->guessing==0 ) {
#line 457 "ifconfig.g"
#line 408 "ifconfig_linux.g"
_ttype = MAC_ADDRESS;
#line 757 "IfconfigCfgLexer.cpp"
#line 758 "IfconfigLinuxCfgLexer.cpp"
}
}
else {
@ -848,9 +849,9 @@ void IfconfigCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
}
}
if ( inputState->guessing==0 ) {
#line 466 "ifconfig.g"
#line 417 "ifconfig_linux.g"
_ttype = IPV6;
#line 854 "IfconfigCfgLexer.cpp"
#line 855 "IfconfigLinuxCfgLexer.cpp"
}
}
else if ((_tokenSet_2.member(LA(1))) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3)))) {
@ -871,9 +872,9 @@ void IfconfigCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
_loop77:;
} // ( ... )+
if ( inputState->guessing==0 ) {
#line 469 "ifconfig.g"
#line 420 "ifconfig_linux.g"
_ttype = IPV6;
#line 877 "IfconfigCfgLexer.cpp"
#line 878 "IfconfigLinuxCfgLexer.cpp"
}
}
else {
@ -882,9 +883,9 @@ void IfconfigCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
}
if ( inputState->guessing==0 ) {
#line 471 "ifconfig.g"
#line 422 "ifconfig_linux.g"
_ttype = IPV6;
#line 888 "IfconfigCfgLexer.cpp"
#line 889 "IfconfigLinuxCfgLexer.cpp"
}
}
else {
@ -924,9 +925,9 @@ void IfconfigCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
_loop81:;
} // ( ... )*
if ( inputState->guessing==0 ) {
#line 474 "ifconfig.g"
#line 425 "ifconfig_linux.g"
_ttype = IPV6;
#line 930 "IfconfigCfgLexer.cpp"
#line 931 "IfconfigLinuxCfgLexer.cpp"
}
}
else {
@ -1007,18 +1008,18 @@ void IfconfigCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
} // ( ... )+
}
if ( inputState->guessing==0 ) {
#line 481 "ifconfig.g"
#line 432 "ifconfig_linux.g"
_ttype = NUMBER;
#line 1013 "IfconfigCfgLexer.cpp"
#line 1014 "IfconfigLinuxCfgLexer.cpp"
}
}
else if ((LA(1) == 0x3a /* ':' */ ) && (LA(2) == 0x3a /* ':' */ ) && (true)) {
match(':' /* charlit */ );
match(':' /* charlit */ );
if ( inputState->guessing==0 ) {
#line 476 "ifconfig.g"
#line 427 "ifconfig_linux.g"
_ttype = IPV6;
#line 1022 "IfconfigCfgLexer.cpp"
#line 1023 "IfconfigLinuxCfgLexer.cpp"
}
}
else if ((LA(1) == 0x30 /* '0' */ ) && (LA(2) == 0x58 /* 'X' */ || LA(2) == 0x78 /* 'x' */ )) {
@ -1055,17 +1056,17 @@ void IfconfigCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
_loop97:;
} // ( ... )*
if ( inputState->guessing==0 ) {
#line 485 "ifconfig.g"
#line 436 "ifconfig_linux.g"
_ttype = HEX_CONST;
#line 1061 "IfconfigCfgLexer.cpp"
#line 1062 "IfconfigLinuxCfgLexer.cpp"
}
}
else if ((LA(1) == 0x3a /* ':' */ ) && (true)) {
match(':' /* charlit */ );
if ( inputState->guessing==0 ) {
#line 478 "ifconfig.g"
#line 429 "ifconfig_linux.g"
_ttype = COLON;
#line 1069 "IfconfigCfgLexer.cpp"
#line 1070 "IfconfigLinuxCfgLexer.cpp"
}
}
else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true)) {
@ -1084,9 +1085,9 @@ void IfconfigCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
_loop94:;
} // ( ... )+
if ( inputState->guessing==0 ) {
#line 483 "ifconfig.g"
#line 434 "ifconfig_linux.g"
_ttype = INT_CONST;
#line 1090 "IfconfigCfgLexer.cpp"
#line 1091 "IfconfigLinuxCfgLexer.cpp"
}
}
else if ((_tokenSet_6.member(LA(1))) && (true) && (true)) {
@ -1304,9 +1305,9 @@ void IfconfigCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
_loop100:;
} // ( ... )*
if ( inputState->guessing==0 ) {
#line 493 "ifconfig.g"
#line 444 "ifconfig_linux.g"
_ttype = WORD;
#line 1310 "IfconfigCfgLexer.cpp"
#line 1311 "IfconfigLinuxCfgLexer.cpp"
}
}
else {
@ -1322,7 +1323,7 @@ void IfconfigCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mPERCENT(bool _createToken) {
void IfconfigLinuxCfgLexer::mPERCENT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = PERCENT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1336,7 +1337,7 @@ void IfconfigCfgLexer::mPERCENT(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mAMPERSAND(bool _createToken) {
void IfconfigLinuxCfgLexer::mAMPERSAND(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = AMPERSAND;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1350,7 +1351,7 @@ void IfconfigCfgLexer::mAMPERSAND(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mSTAR(bool _createToken) {
void IfconfigLinuxCfgLexer::mSTAR(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = STAR;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1364,7 +1365,7 @@ void IfconfigCfgLexer::mSTAR(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mMINUS(bool _createToken) {
void IfconfigLinuxCfgLexer::mMINUS(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = MINUS;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1378,7 +1379,7 @@ void IfconfigCfgLexer::mMINUS(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mDOT(bool _createToken) {
void IfconfigLinuxCfgLexer::mDOT(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = DOT;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1392,7 +1393,7 @@ void IfconfigCfgLexer::mDOT(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mSLASH(bool _createToken) {
void IfconfigLinuxCfgLexer::mSLASH(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = SLASH;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1406,7 +1407,7 @@ void IfconfigCfgLexer::mSLASH(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mEQUAL(bool _createToken) {
void IfconfigLinuxCfgLexer::mEQUAL(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = EQUAL;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1420,7 +1421,7 @@ void IfconfigCfgLexer::mEQUAL(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mQUESTION(bool _createToken) {
void IfconfigLinuxCfgLexer::mQUESTION(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = QUESTION;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1434,7 +1435,7 @@ void IfconfigCfgLexer::mQUESTION(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mOPENING_PAREN(bool _createToken) {
void IfconfigLinuxCfgLexer::mOPENING_PAREN(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = OPENING_PAREN;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1448,7 +1449,7 @@ void IfconfigCfgLexer::mOPENING_PAREN(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mCLOSING_PAREN(bool _createToken) {
void IfconfigLinuxCfgLexer::mCLOSING_PAREN(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = CLOSING_PAREN;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1462,7 +1463,7 @@ void IfconfigCfgLexer::mCLOSING_PAREN(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mOPENING_SQUARE(bool _createToken) {
void IfconfigLinuxCfgLexer::mOPENING_SQUARE(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = OPENING_SQUARE;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1476,7 +1477,7 @@ void IfconfigCfgLexer::mOPENING_SQUARE(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mCLOSING_SQUARE(bool _createToken) {
void IfconfigLinuxCfgLexer::mCLOSING_SQUARE(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = CLOSING_SQUARE;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1490,7 +1491,7 @@ void IfconfigCfgLexer::mCLOSING_SQUARE(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mOPENING_BRACE(bool _createToken) {
void IfconfigLinuxCfgLexer::mOPENING_BRACE(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = OPENING_BRACE;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1504,7 +1505,7 @@ void IfconfigCfgLexer::mOPENING_BRACE(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mCLOSING_BRACE(bool _createToken) {
void IfconfigLinuxCfgLexer::mCLOSING_BRACE(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = CLOSING_BRACE;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1518,7 +1519,7 @@ void IfconfigCfgLexer::mCLOSING_BRACE(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mLESS_THAN(bool _createToken) {
void IfconfigLinuxCfgLexer::mLESS_THAN(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = LESS_THAN;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1532,7 +1533,7 @@ void IfconfigCfgLexer::mLESS_THAN(bool _createToken) {
_saveIndex=0;
}
void IfconfigCfgLexer::mGREATER_THAN(bool _createToken) {
void IfconfigLinuxCfgLexer::mGREATER_THAN(bool _createToken) {
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
_ttype = GREATER_THAN;
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
@ -1547,31 +1548,31 @@ void IfconfigCfgLexer::mGREATER_THAN(bool _createToken) {
}
const unsigned long IfconfigCfgLexer::_tokenSet_0_data_[] = { 4294958072UL, 1UL, 0UL, 2147483648UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const unsigned long IfconfigLinuxCfgLexer::_tokenSet_0_data_[] = { 4294958072UL, 1UL, 0UL, 2147483648UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12 0x13 0x14
// 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigCfgLexer::_tokenSet_0(_tokenSet_0_data_,16);
const unsigned long IfconfigCfgLexer::_tokenSet_1_data_[] = { 4294958072UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigLinuxCfgLexer::_tokenSet_0(_tokenSet_0_data_,16);
const unsigned long IfconfigLinuxCfgLexer::_tokenSet_1_data_[] = { 4294958072UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12 0x13 0x14
// 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f ! \" # $ %
// & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigCfgLexer::_tokenSet_1(_tokenSet_1_data_,16);
const unsigned long IfconfigCfgLexer::_tokenSet_2_data_[] = { 0UL, 67043328UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigLinuxCfgLexer::_tokenSet_1(_tokenSet_1_data_,16);
const unsigned long IfconfigLinuxCfgLexer::_tokenSet_2_data_[] = { 0UL, 67043328UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigCfgLexer::_tokenSet_2(_tokenSet_2_data_,10);
const unsigned long IfconfigCfgLexer::_tokenSet_3_data_[] = { 0UL, 67059712UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigLinuxCfgLexer::_tokenSet_2(_tokenSet_2_data_,10);
const unsigned long IfconfigLinuxCfgLexer::_tokenSet_3_data_[] = { 0UL, 67059712UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// . 0 1 2 3 4 5 6 7 8 9
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigCfgLexer::_tokenSet_3(_tokenSet_3_data_,10);
const unsigned long IfconfigCfgLexer::_tokenSet_4_data_[] = { 0UL, 134152192UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigLinuxCfgLexer::_tokenSet_3(_tokenSet_3_data_,10);
const unsigned long IfconfigLinuxCfgLexer::_tokenSet_4_data_[] = { 0UL, 134152192UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// 0 1 2 3 4 5 6 7 8 9 : A B C D E F
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigCfgLexer::_tokenSet_4(_tokenSet_4_data_,10);
const unsigned long IfconfigCfgLexer::_tokenSet_5_data_[] = { 4294967288UL, 4227858431UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigLinuxCfgLexer::_tokenSet_4(_tokenSet_4_data_,10);
const unsigned long IfconfigLinuxCfgLexer::_tokenSet_5_data_[] = { 4294967288UL, 4227858431UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10 0x11 0x12 0x13
// 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f ! \" #
// $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 ; < = > ? @ A B C D E F
// G
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigCfgLexer::_tokenSet_5(_tokenSet_5_data_,16);
const unsigned long IfconfigCfgLexer::_tokenSet_6_data_[] = { 0UL, 0UL, 134217726UL, 134217726UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigLinuxCfgLexer::_tokenSet_5(_tokenSet_5_data_,16);
const unsigned long IfconfigLinuxCfgLexer::_tokenSet_6_data_[] = { 0UL, 0UL, 134217726UL, 134217726UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
// A B C D E F G
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigCfgLexer::_tokenSet_6(_tokenSet_6_data_,10);
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigLinuxCfgLexer::_tokenSet_6(_tokenSet_6_data_,10);

View File

@ -0,0 +1,99 @@
#ifndef INC_IfconfigLinuxCfgLexer_hpp_
#define INC_IfconfigLinuxCfgLexer_hpp_
#line 25 "ifconfig_linux.g"
// gets inserted before antlr generated includes in the header
// file
#include "IfconfigImporter.h"
#line 11 "IfconfigLinuxCfgLexer.hpp"
#include <antlr/config.hpp>
/* $ANTLR 2.7.7 (20100319): "ifconfig_linux.g" -> "IfconfigLinuxCfgLexer.hpp"$ */
#include <antlr/CommonToken.hpp>
#include <antlr/InputBuffer.hpp>
#include <antlr/BitSet.hpp>
#include "IfconfigLinuxCfgParserTokenTypes.hpp"
#include <antlr/CharScanner.hpp>
#line 32 "ifconfig_linux.g"
// gets inserted after antlr generated includes in the header file
// outside any generated namespace specifications
#include <iostream>
#include <sstream>
class IfconfigImporter;
#line 29 "IfconfigLinuxCfgLexer.hpp"
#line 57 "ifconfig_linux.g"
// gets inserted after generated namespace specifications in the
// header file. But outside the generated class.
#line 35 "IfconfigLinuxCfgLexer.hpp"
class CUSTOM_API IfconfigLinuxCfgLexer : public ANTLR_USE_NAMESPACE(antlr)CharScanner, public IfconfigLinuxCfgParserTokenTypes
{
#line 1 "ifconfig_linux.g"
#line 39 "IfconfigLinuxCfgLexer.hpp"
private:
void initLiterals();
public:
bool getCaseSensitiveLiterals() const
{
return true;
}
public:
IfconfigLinuxCfgLexer(ANTLR_USE_NAMESPACE(std)istream& in);
IfconfigLinuxCfgLexer(ANTLR_USE_NAMESPACE(antlr)InputBuffer& ib);
IfconfigLinuxCfgLexer(const ANTLR_USE_NAMESPACE(antlr)LexerSharedInputState& state);
ANTLR_USE_NAMESPACE(antlr)RefToken nextToken();
public: void mLINE_COMMENT(bool _createToken);
public: void mNEWLINE(bool _createToken);
public: void mWhitespace(bool _createToken);
protected: void mINT_CONST(bool _createToken);
protected: void mHEX_CONST(bool _createToken);
protected: void mNUMBER(bool _createToken);
protected: void mNEG_INT_CONST(bool _createToken);
protected: void mCOLON(bool _createToken);
protected: void mHEX_DIGIT(bool _createToken);
protected: void mDIGIT(bool _createToken);
protected: void mNUM_3DIGIT(bool _createToken);
protected: void mNUM_HEX_4DIGIT(bool _createToken);
protected: void mMAC_ADDRESS(bool _createToken);
public: void mNUMBER_ADDRESS_OR_WORD(bool _createToken);
public: void mPERCENT(bool _createToken);
public: void mAMPERSAND(bool _createToken);
public: void mSTAR(bool _createToken);
public: void mMINUS(bool _createToken);
public: void mDOT(bool _createToken);
public: void mSLASH(bool _createToken);
public: void mEQUAL(bool _createToken);
public: void mQUESTION(bool _createToken);
public: void mOPENING_PAREN(bool _createToken);
public: void mCLOSING_PAREN(bool _createToken);
public: void mOPENING_SQUARE(bool _createToken);
public: void mCLOSING_SQUARE(bool _createToken);
public: void mOPENING_BRACE(bool _createToken);
public: void mCLOSING_BRACE(bool _createToken);
public: void mLESS_THAN(bool _createToken);
public: void mGREATER_THAN(bool _createToken);
private:
static const unsigned long _tokenSet_0_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_0;
static const unsigned long _tokenSet_1_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_1;
static const unsigned long _tokenSet_2_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_2;
static const unsigned long _tokenSet_3_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_3;
static const unsigned long _tokenSet_4_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_4;
static const unsigned long _tokenSet_5_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_5;
static const unsigned long _tokenSet_6_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_6;
};
#endif /*INC_IfconfigLinuxCfgLexer_hpp_*/

View File

@ -1,50 +1,50 @@
/* $ANTLR 2.7.7 (20090306): "ifconfig.g" -> "IfconfigCfgParser.cpp"$ */
#line 43 "ifconfig.g"
/* $ANTLR 2.7.7 (20100319): "ifconfig_linux.g" -> "IfconfigLinuxCfgParser.cpp"$ */
#line 43 "ifconfig_linux.g"
// gets inserted before the antlr generated includes in the cpp
// file
#line 8 "IfconfigCfgParser.cpp"
#include "IfconfigCfgParser.hpp"
#line 8 "IfconfigLinuxCfgParser.cpp"
#include "IfconfigLinuxCfgParser.hpp"
#include <antlr/NoViableAltException.hpp>
#include <antlr/SemanticException.hpp>
#include <antlr/ASTFactory.hpp>
#line 49 "ifconfig.g"
#line 49 "ifconfig_linux.g"
// gets inserted after the antlr generated includes in the cpp
// file
#include <antlr/Token.hpp>
#include <antlr/TokenBuffer.hpp>
#line 20 "IfconfigCfgParser.cpp"
#line 1 "ifconfig.g"
#line 22 "IfconfigCfgParser.cpp"
IfconfigCfgParser::IfconfigCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf, int k)
#line 20 "IfconfigLinuxCfgParser.cpp"
#line 1 "ifconfig_linux.g"
#line 22 "IfconfigLinuxCfgParser.cpp"
IfconfigLinuxCfgParser::IfconfigLinuxCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf, int k)
: ANTLR_USE_NAMESPACE(antlr)LLkParser(tokenBuf,k)
{
}
IfconfigCfgParser::IfconfigCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf)
IfconfigLinuxCfgParser::IfconfigLinuxCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf)
: ANTLR_USE_NAMESPACE(antlr)LLkParser(tokenBuf,2)
{
}
IfconfigCfgParser::IfconfigCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer, int k)
IfconfigLinuxCfgParser::IfconfigLinuxCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer, int k)
: ANTLR_USE_NAMESPACE(antlr)LLkParser(lexer,k)
{
}
IfconfigCfgParser::IfconfigCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer)
IfconfigLinuxCfgParser::IfconfigLinuxCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer)
: ANTLR_USE_NAMESPACE(antlr)LLkParser(lexer,2)
{
}
IfconfigCfgParser::IfconfigCfgParser(const ANTLR_USE_NAMESPACE(antlr)ParserSharedInputState& state)
IfconfigLinuxCfgParser::IfconfigLinuxCfgParser(const ANTLR_USE_NAMESPACE(antlr)ParserSharedInputState& state)
: ANTLR_USE_NAMESPACE(antlr)LLkParser(state,2)
{
}
void IfconfigCfgParser::cfgfile() {
void IfconfigLinuxCfgParser::cfgfile() {
Tracer traceInOut(this, "cfgfile");
try { // for error handling
@ -56,14 +56,19 @@ void IfconfigCfgParser::cfgfile() {
comment();
break;
}
case LLADDR:
{
bsd_hwaddr_line();
break;
}
case HWADDR:
{
linux_hwaddr_line();
hwaddr_line();
break;
}
case INET:
{
inet_address();
break;
}
case INET6:
{
inet6_address();
break;
}
case GROUPS:
@ -79,14 +84,15 @@ void IfconfigCfgParser::cfgfile() {
case UPPER_RUNNING:
case LOOPBACK:
{
linux_interface_flags();
interface_flags();
break;
}
case INTERRUPT:
case COLLISIONS:
case RX:
case TX:
{
linux_interface_statistics();
interface_statistics();
break;
}
case NEWLINE:
@ -100,23 +106,8 @@ void IfconfigCfgParser::cfgfile() {
break;
}
default:
if ((LA(1) == WORD) && (LA(2) == COLON)) {
bsd_interface_line();
}
else if ((LA(1) == WORD) && (LA(2) == LINK)) {
linux_interface_line();
}
else if ((LA(1) == INET) && (LA(2) == IPV4)) {
bsd_inet_address();
}
else if ((LA(1) == INET) && (LA(2) == ADDR)) {
linux_inet_address();
}
else if ((LA(1) == INET6) && (LA(2) == IPV6)) {
bsd_inet6_address();
}
else if ((LA(1) == INET6) && (LA(2) == ADDR)) {
linux_inet6_address();
if ((LA(1) == WORD) && (LA(2) == COLON || LA(2) == DOT || LA(2) == LINK)) {
interface_line();
}
else if (((LA(1) >= PRIORITY && LA(1) <= WORD)) && (_tokenSet_0.member(LA(2)))) {
unknown_line();
@ -135,7 +126,7 @@ void IfconfigCfgParser::cfgfile() {
}
}
void IfconfigCfgParser::comment() {
void IfconfigLinuxCfgParser::comment() {
Tracer traceInOut(this, "comment");
try { // for error handling
@ -147,56 +138,90 @@ void IfconfigCfgParser::comment() {
}
}
void IfconfigCfgParser::bsd_interface_line() {
Tracer traceInOut(this, "bsd_interface_line");
ANTLR_USE_NAMESPACE(antlr)RefToken in = ANTLR_USE_NAMESPACE(antlr)nullToken;
#line 213 "ifconfig.g"
void IfconfigLinuxCfgParser::interface_line() {
Tracer traceInOut(this, "interface_line");
ANTLR_USE_NAMESPACE(antlr)RefToken in1 = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefToken in2 = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefToken lbl1 = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefToken lbl2 = ANTLR_USE_NAMESPACE(antlr)nullToken;
#line 206 "ifconfig_linux.g"
InterfaceSpec is;
#line 156 "IfconfigCfgParser.cpp"
#line 150 "IfconfigLinuxCfgParser.cpp"
try { // for error handling
in = LT(1);
match(WORD);
match(COLON);
match(FLAGS);
match(EQUAL);
match(INT_CONST);
#line 216 "ifconfig.g"
// interface name and status
is.name = in->getText();
importer->newInterface(is);
consumeUntil(NEWLINE);
#line 172 "IfconfigCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_0);
}
}
void IfconfigCfgParser::linux_interface_line() {
Tracer traceInOut(this, "linux_interface_line");
ANTLR_USE_NAMESPACE(antlr)RefToken in = ANTLR_USE_NAMESPACE(antlr)nullToken;
#line 229 "ifconfig.g"
InterfaceSpec is;
#line 185 "IfconfigCfgParser.cpp"
try { // for error handling
in = LT(1);
in1 = LT(1);
match(WORD);
{
switch ( LA(1)) {
case DOT:
{
match(DOT);
in2 = LT(1);
match(INT_CONST);
break;
}
case COLON:
case LINK:
{
break;
}
default:
{
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
}
}
}
{
switch ( LA(1)) {
case COLON:
{
match(COLON);
{
switch ( LA(1)) {
case WORD:
{
lbl1 = LT(1);
match(WORD);
break;
}
case INT_CONST:
{
lbl2 = LT(1);
match(INT_CONST);
break;
}
default:
{
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
}
}
}
break;
}
case LINK:
{
break;
}
default:
{
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
}
}
}
match(LINK);
match(ENCAP);
match(COLON);
match(WORD);
#line 232 "ifconfig.g"
#line 212 "ifconfig_linux.g"
// interface name and status
is.name = in->getText();
if (in2) is.name = in1->getText() + "." + in2->getText();
else is.name = in1->getText();
if (lbl1) is.label = lbl1->getText();
if (lbl2) is.label = lbl2->getText();
importer->newInterface(is);
#line 200 "IfconfigCfgParser.cpp"
#line 225 "IfconfigLinuxCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
@ -204,39 +229,19 @@ void IfconfigCfgParser::linux_interface_line() {
}
}
void IfconfigCfgParser::bsd_hwaddr_line() {
Tracer traceInOut(this, "bsd_hwaddr_line");
ANTLR_USE_NAMESPACE(antlr)RefToken addr = ANTLR_USE_NAMESPACE(antlr)nullToken;
try { // for error handling
match(LLADDR);
addr = LT(1);
match(MAC_ADDRESS);
#line 244 "ifconfig.g"
importer->HwAddressForCurrentInterface(addr->getText());
#line 220 "IfconfigCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_0);
}
}
void IfconfigCfgParser::linux_hwaddr_line() {
Tracer traceInOut(this, "linux_hwaddr_line");
void IfconfigLinuxCfgParser::hwaddr_line() {
Tracer traceInOut(this, "hwaddr_line");
ANTLR_USE_NAMESPACE(antlr)RefToken addr = ANTLR_USE_NAMESPACE(antlr)nullToken;
try { // for error handling
match(HWADDR);
addr = LT(1);
match(MAC_ADDRESS);
#line 252 "ifconfig.g"
#line 227 "ifconfig_linux.g"
importer->HwAddressForCurrentInterface(addr->getText());
#line 240 "IfconfigCfgParser.cpp"
#line 245 "IfconfigLinuxCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
@ -244,49 +249,14 @@ void IfconfigCfgParser::linux_hwaddr_line() {
}
}
void IfconfigCfgParser::bsd_inet_address() {
Tracer traceInOut(this, "bsd_inet_address");
ANTLR_USE_NAMESPACE(antlr)RefToken addr = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefToken netm = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefToken bcast = ANTLR_USE_NAMESPACE(antlr)nullToken;
#line 261 "ifconfig.g"
AddressSpec as;
#line 255 "IfconfigCfgParser.cpp"
try { // for error handling
match(INET);
addr = LT(1);
match(IPV4);
match(NETMASK);
netm = LT(1);
match(HEX_CONST);
match(BROADCAST);
bcast = LT(1);
match(IPV4);
#line 264 "ifconfig.g"
as.at = AddressSpec::INTERFACE_CONFIGURATION;
as.address = addr->getText();
as.netmask = netm->getText();
as.broadcast = bcast->getText();
importer->inetConfigurationForCurrentInterface(as);
#line 275 "IfconfigCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_0);
}
}
void IfconfigCfgParser::linux_inet_address() {
Tracer traceInOut(this, "linux_inet_address");
void IfconfigLinuxCfgParser::inet_address() {
Tracer traceInOut(this, "inet_address");
ANTLR_USE_NAMESPACE(antlr)RefToken addr = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefToken bcast = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefToken netm = ANTLR_USE_NAMESPACE(antlr)nullToken;
#line 274 "ifconfig.g"
#line 236 "ifconfig_linux.g"
AddressSpec as;
#line 290 "IfconfigCfgParser.cpp"
#line 260 "IfconfigLinuxCfgParser.cpp"
try { // for error handling
match(INET);
@ -294,12 +264,12 @@ void IfconfigCfgParser::linux_inet_address() {
match(COLON);
addr = LT(1);
match(IPV4);
#line 278 "ifconfig.g"
#line 240 "ifconfig_linux.g"
as.at = AddressSpec::INTERFACE_CONFIGURATION;
as.address = addr->getText();
#line 303 "IfconfigCfgParser.cpp"
#line 273 "IfconfigLinuxCfgParser.cpp"
{
switch ( LA(1)) {
case BCAST:
@ -331,12 +301,12 @@ void IfconfigCfgParser::linux_inet_address() {
netm = LT(1);
match(IPV4);
}
#line 284 "ifconfig.g"
#line 246 "ifconfig_linux.g"
as.netmask = netm->getText();
if (bcast) as.broadcast = bcast->getText();
#line 340 "IfconfigCfgParser.cpp"
#line 310 "IfconfigLinuxCfgParser.cpp"
break;
}
case P_T_P:
@ -349,11 +319,11 @@ void IfconfigCfgParser::linux_inet_address() {
match(COLON);
match(IPV4);
}
#line 290 "ifconfig.g"
#line 252 "ifconfig_linux.g"
// we do not support p2p interfaces at this time
#line 357 "IfconfigCfgParser.cpp"
#line 327 "IfconfigLinuxCfgParser.cpp"
break;
}
default:
@ -362,11 +332,11 @@ void IfconfigCfgParser::linux_inet_address() {
}
}
}
#line 294 "ifconfig.g"
#line 256 "ifconfig_linux.g"
importer->inetConfigurationForCurrentInterface(as);
#line 370 "IfconfigCfgParser.cpp"
#line 340 "IfconfigLinuxCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
@ -374,47 +344,13 @@ void IfconfigCfgParser::linux_inet_address() {
}
}
void IfconfigCfgParser::bsd_inet6_address() {
Tracer traceInOut(this, "bsd_inet6_address");
void IfconfigLinuxCfgParser::inet6_address() {
Tracer traceInOut(this, "inet6_address");
ANTLR_USE_NAMESPACE(antlr)RefToken addr = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefToken netm = ANTLR_USE_NAMESPACE(antlr)nullToken;
#line 302 "ifconfig.g"
#line 264 "ifconfig_linux.g"
AddressSpec as;
#line 384 "IfconfigCfgParser.cpp"
try { // for error handling
match(INET6);
addr = LT(1);
match(IPV6);
match(PERCENT);
match(WORD);
match(PREFIXLEN);
netm = LT(1);
match(INT_CONST);
match(SCOPEID);
match(HEX_CONST);
#line 305 "ifconfig.g"
as.at = AddressSpec::INTERFACE_CONFIGURATION;
as.address = addr->getText();
as.netmask = netm->getText();
importer->inet6ConfigurationForCurrentInterface(as);
#line 404 "IfconfigCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
recover(ex,_tokenSet_0);
}
}
void IfconfigCfgParser::linux_inet6_address() {
Tracer traceInOut(this, "linux_inet6_address");
ANTLR_USE_NAMESPACE(antlr)RefToken addr = ANTLR_USE_NAMESPACE(antlr)nullToken;
ANTLR_USE_NAMESPACE(antlr)RefToken netm = ANTLR_USE_NAMESPACE(antlr)nullToken;
#line 314 "ifconfig.g"
AddressSpec as;
#line 418 "IfconfigCfgParser.cpp"
#line 354 "IfconfigLinuxCfgParser.cpp"
try { // for error handling
match(INET6);
@ -455,14 +391,14 @@ void IfconfigCfgParser::linux_inet6_address() {
}
}
}
#line 317 "ifconfig.g"
#line 267 "ifconfig_linux.g"
as.at = AddressSpec::INTERFACE_CONFIGURATION;
as.address = addr->getText();
as.netmask = netm->getText();
importer->inet6ConfigurationForCurrentInterface(as);
#line 466 "IfconfigCfgParser.cpp"
#line 402 "IfconfigLinuxCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
@ -470,7 +406,7 @@ void IfconfigCfgParser::linux_inet6_address() {
}
}
void IfconfigCfgParser::groups() {
void IfconfigLinuxCfgParser::groups() {
Tracer traceInOut(this, "groups");
try { // for error handling
@ -485,8 +421,8 @@ void IfconfigCfgParser::groups() {
}
}
void IfconfigCfgParser::linux_interface_flags() {
Tracer traceInOut(this, "linux_interface_flags");
void IfconfigLinuxCfgParser::interface_flags() {
Tracer traceInOut(this, "interface_flags");
try { // for error handling
{
@ -532,11 +468,11 @@ void IfconfigCfgParser::linux_interface_flags() {
}
}
}
#line 186 "ifconfig.g"
#line 178 "ifconfig_linux.g"
consumeUntil(NEWLINE);
#line 540 "IfconfigCfgParser.cpp"
#line 476 "IfconfigLinuxCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
@ -544,16 +480,34 @@ void IfconfigCfgParser::linux_interface_flags() {
}
}
void IfconfigCfgParser::linux_interface_statistics() {
Tracer traceInOut(this, "linux_interface_statistics");
void IfconfigLinuxCfgParser::interface_statistics() {
Tracer traceInOut(this, "interface_statistics");
try { // for error handling
{
switch ( LA(1)) {
case INTERRUPT:
case COLLISIONS:
{
{
match(COLLISIONS);
{
switch ( LA(1)) {
case INTERRUPT:
{
match(INTERRUPT);
break;
}
case COLLISIONS:
{
match(COLLISIONS);
break;
}
default:
{
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
}
}
}
match(COLON);
}
break;
@ -574,11 +528,11 @@ void IfconfigCfgParser::linux_interface_statistics() {
}
}
}
#line 200 "ifconfig.g"
#line 192 "ifconfig_linux.g"
consumeUntil(NEWLINE);
#line 582 "IfconfigCfgParser.cpp"
#line 536 "IfconfigLinuxCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
@ -586,7 +540,7 @@ void IfconfigCfgParser::linux_interface_statistics() {
}
}
void IfconfigCfgParser::unknown_line() {
void IfconfigLinuxCfgParser::unknown_line() {
Tracer traceInOut(this, "unknown_line");
try { // for error handling
@ -618,11 +572,11 @@ void IfconfigCfgParser::unknown_line() {
}
}
}
#line 164 "ifconfig.g"
#line 156 "ifconfig_linux.g"
consumeUntil(NEWLINE);
#line 626 "IfconfigCfgParser.cpp"
#line 580 "IfconfigLinuxCfgParser.cpp"
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
reportError(ex);
@ -630,21 +584,21 @@ void IfconfigCfgParser::unknown_line() {
}
}
void IfconfigCfgParser::groups_list() {
void IfconfigLinuxCfgParser::groups_list() {
Tracer traceInOut(this, "groups_list");
try { // for error handling
match(WORD);
#line 334 "ifconfig.g"
#line 284 "ifconfig_linux.g"
importer->addGroupToCurrentInterface(LT(0)->getText());
#line 641 "IfconfigCfgParser.cpp"
#line 595 "IfconfigLinuxCfgParser.cpp"
{ // ( ... )*
for (;;) {
if ((LA(1) == WORD)) {
match(WORD);
#line 336 "ifconfig.g"
#line 286 "ifconfig_linux.g"
importer->addGroupToCurrentInterface(LT(0)->getText());
#line 648 "IfconfigCfgParser.cpp"
#line 602 "IfconfigLinuxCfgParser.cpp"
}
else {
goto _loop28;
@ -660,10 +614,10 @@ void IfconfigCfgParser::groups_list() {
}
}
void IfconfigCfgParser::initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& )
void IfconfigLinuxCfgParser::initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& )
{
}
const char* IfconfigCfgParser::tokenNames[] = {
const char* IfconfigLinuxCfgParser::tokenNames[] = {
"<0>",
"EOF",
"<2>",
@ -682,40 +636,39 @@ const char* IfconfigCfgParser::tokenNames[] = {
"\"NOARP\"",
"\"RUNNING\"",
"\"Loopback\"",
"\"Interrupt\"",
"\"collisions\"",
"COLON",
"\"RX\"",
"\"TX\"",
"\"flags\"",
"EQUAL",
"DOT",
"INT_CONST",
"\"Link\"",
"\"encap\"",
"LLADDR",
"MAC_ADDRESS",
"\"HWaddr\"",
"MAC_ADDRESS",
"\"inet\"",
"IPV4",
"\"netmask\"",
"HEX_CONST",
"\"broadcast\"",
"\"addr\"",
"IPV4",
"\"Bcast\"",
"\"Mask\"",
"\"P-t-P\"",
"\"inet6\"",
"IPV6",
"PERCENT",
"\"prefixlen\"",
"\"scopeid\"",
"SLASH",
"\"Scope\"",
"\"Host\"",
"\"Global\"",
"\"groups\"",
"\"flags\"",
"\"broadcast\"",
"\"netmask\"",
"\"prefixlen\"",
"\"scopeid\"",
"\"mtu\"",
"\"lladdr\"",
"Whitespace",
"HEX_CONST",
"NUMBER",
"NEG_INT_CONST",
"HEX_DIGIT",
@ -723,10 +676,11 @@ const char* IfconfigCfgParser::tokenNames[] = {
"NUM_3DIGIT",
"NUM_HEX_4DIGIT",
"NUMBER_ADDRESS_OR_WORD",
"PERCENT",
"AMPERSAND",
"STAR",
"MINUS",
"DOT",
"EQUAL",
"QUESTION",
"OPENING_PAREN",
"CLOSING_PAREN",
@ -739,16 +693,16 @@ const char* IfconfigCfgParser::tokenNames[] = {
0
};
const unsigned long IfconfigCfgParser::_tokenSet_0_data_[] = { 1748500466UL, 65664UL, 0UL, 0UL };
const unsigned long IfconfigLinuxCfgParser::_tokenSet_0_data_[] = { 678428658UL, 520UL, 0UL, 0UL };
// EOF NEWLINE DOUBLE_NEWLINE LINE_COMMENT "priority" "media" "status"
// WORD "UP" "BROADCAST" "POINTOPOINT" "LOOPBACK" "NOARP" "RUNNING" "Loopback"
// "collisions" "RX" "TX" LLADDR "HWaddr" "inet" "inet6" "groups"
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigCfgParser::_tokenSet_0(_tokenSet_0_data_,4);
const unsigned long IfconfigCfgParser::_tokenSet_1_data_[] = { 2UL, 0UL, 0UL, 0UL };
// "Interrupt" "collisions" "RX" "TX" "HWaddr" "inet" "inet6" "groups"
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigLinuxCfgParser::_tokenSet_0(_tokenSet_0_data_,4);
const unsigned long IfconfigLinuxCfgParser::_tokenSet_1_data_[] = { 2UL, 0UL, 0UL, 0UL };
// EOF
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigCfgParser::_tokenSet_1(_tokenSet_1_data_,4);
const unsigned long IfconfigCfgParser::_tokenSet_2_data_[] = { 16UL, 0UL, 0UL, 0UL };
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigLinuxCfgParser::_tokenSet_1(_tokenSet_1_data_,4);
const unsigned long IfconfigLinuxCfgParser::_tokenSet_2_data_[] = { 16UL, 0UL, 0UL, 0UL };
// NEWLINE
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigCfgParser::_tokenSet_2(_tokenSet_2_data_,4);
const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigLinuxCfgParser::_tokenSet_2(_tokenSet_2_data_,4);

View File

@ -1,21 +1,21 @@
#ifndef INC_IfconfigCfgParser_hpp_
#define INC_IfconfigCfgParser_hpp_
#ifndef INC_IfconfigLinuxCfgParser_hpp_
#define INC_IfconfigLinuxCfgParser_hpp_
#line 25 "ifconfig.g"
#line 25 "ifconfig_linux.g"
// gets inserted before antlr generated includes in the header
// file
#include "IfconfigImporter.h"
#line 11 "IfconfigCfgParser.hpp"
#line 11 "IfconfigLinuxCfgParser.hpp"
#include <antlr/config.hpp>
/* $ANTLR 2.7.7 (20090306): "ifconfig.g" -> "IfconfigCfgParser.hpp"$ */
/* $ANTLR 2.7.7 (20100319): "ifconfig_linux.g" -> "IfconfigLinuxCfgParser.hpp"$ */
#include <antlr/TokenStream.hpp>
#include <antlr/TokenBuffer.hpp>
#include "IfconfigCfgParserTokenTypes.hpp"
#include "IfconfigLinuxCfgParserTokenTypes.hpp"
#include <antlr/LLkParser.hpp>
#line 32 "ifconfig.g"
#line 32 "ifconfig_linux.g"
// gets inserted after antlr generated includes in the header file
// outside any generated namespace specifications
@ -25,16 +25,16 @@
class IfconfigImporter;
#line 29 "IfconfigCfgParser.hpp"
#line 57 "ifconfig.g"
#line 29 "IfconfigLinuxCfgParser.hpp"
#line 57 "ifconfig_linux.g"
// gets inserted after generated namespace specifications in the
// header file. But outside the generated class.
#line 35 "IfconfigCfgParser.hpp"
class CUSTOM_API IfconfigCfgParser : public ANTLR_USE_NAMESPACE(antlr)LLkParser, public IfconfigCfgParserTokenTypes
#line 35 "IfconfigLinuxCfgParser.hpp"
class CUSTOM_API IfconfigLinuxCfgParser : public ANTLR_USE_NAMESPACE(antlr)LLkParser, public IfconfigLinuxCfgParserTokenTypes
{
#line 82 "ifconfig.g"
#line 82 "ifconfig_linux.g"
// additional methods and members
@ -64,44 +64,40 @@ class CUSTOM_API IfconfigCfgParser : public ANTLR_USE_NAMESPACE(antlr)LLkParser,
std::cerr << s << std::endl;
}
#line 39 "IfconfigCfgParser.hpp"
#line 39 "IfconfigLinuxCfgParser.hpp"
public:
void initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& factory );
protected:
IfconfigCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf, int k);
IfconfigLinuxCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf, int k);
public:
IfconfigCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf);
IfconfigLinuxCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf);
protected:
IfconfigCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer, int k);
IfconfigLinuxCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer, int k);
public:
IfconfigCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer);
IfconfigCfgParser(const ANTLR_USE_NAMESPACE(antlr)ParserSharedInputState& state);
IfconfigLinuxCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer);
IfconfigLinuxCfgParser(const ANTLR_USE_NAMESPACE(antlr)ParserSharedInputState& state);
int getNumTokens() const
{
return IfconfigCfgParser::NUM_TOKENS;
return IfconfigLinuxCfgParser::NUM_TOKENS;
}
const char* getTokenName( int type ) const
{
if( type > getNumTokens() ) return 0;
return IfconfigCfgParser::tokenNames[type];
return IfconfigLinuxCfgParser::tokenNames[type];
}
const char* const* getTokenNames() const
{
return IfconfigCfgParser::tokenNames;
return IfconfigLinuxCfgParser::tokenNames;
}
public: void cfgfile();
public: void comment();
public: void bsd_interface_line();
public: void linux_interface_line();
public: void bsd_hwaddr_line();
public: void linux_hwaddr_line();
public: void bsd_inet_address();
public: void linux_inet_address();
public: void bsd_inet6_address();
public: void linux_inet6_address();
public: void interface_line();
public: void hwaddr_line();
public: void inet_address();
public: void inet6_address();
public: void groups();
public: void linux_interface_flags();
public: void linux_interface_statistics();
public: void interface_flags();
public: void interface_statistics();
public: void unknown_line();
public: void groups_list();
public:
@ -130,4 +126,4 @@ private:
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_2;
};
#endif /*INC_IfconfigCfgParser_hpp_*/
#endif /*INC_IfconfigLinuxCfgParser_hpp_*/

View File

@ -0,0 +1,88 @@
#ifndef INC_IfconfigLinuxCfgParserTokenTypes_hpp_
#define INC_IfconfigLinuxCfgParserTokenTypes_hpp_
/* $ANTLR 2.7.7 (20100319): "ifconfig_linux.g" -> "IfconfigLinuxCfgParserTokenTypes.hpp"$ */
#ifndef CUSTOM_API
# define CUSTOM_API
#endif
#ifdef __cplusplus
struct CUSTOM_API IfconfigLinuxCfgParserTokenTypes {
#endif
enum {
EOF_ = 1,
NEWLINE = 4,
DOUBLE_NEWLINE = 5,
LINE_COMMENT = 6,
PRIORITY = 7,
MEDIA = 8,
STATUS = 9,
WORD = 10,
UP = 11,
UPPER_BROADCAST = 12,
UPPER_POINTOPOINT = 13,
UPPER_LOOPBACK = 14,
UPPER_NOARP = 15,
UPPER_RUNNING = 16,
LOOPBACK = 17,
INTERRUPT = 18,
COLLISIONS = 19,
COLON = 20,
RX = 21,
TX = 22,
DOT = 23,
INT_CONST = 24,
LINK = 25,
ENCAP = 26,
HWADDR = 27,
MAC_ADDRESS = 28,
INET = 29,
ADDR = 30,
IPV4 = 31,
BCAST = 32,
MASK = 33,
P_T_P = 34,
INET6 = 35,
IPV6 = 36,
SLASH = 37,
SCOPE = 38,
HOST = 39,
GLOBAL = 40,
GROUPS = 41,
FLAGS = 42,
BROADCAST = 43,
NETMASK = 44,
PREFIXLEN = 45,
SCOPEID = 46,
MTU = 47,
LLADR = 48,
Whitespace = 49,
HEX_CONST = 50,
NUMBER = 51,
NEG_INT_CONST = 52,
HEX_DIGIT = 53,
DIGIT = 54,
NUM_3DIGIT = 55,
NUM_HEX_4DIGIT = 56,
NUMBER_ADDRESS_OR_WORD = 57,
PERCENT = 58,
AMPERSAND = 59,
STAR = 60,
MINUS = 61,
EQUAL = 62,
QUESTION = 63,
OPENING_PAREN = 64,
CLOSING_PAREN = 65,
OPENING_SQUARE = 66,
CLOSING_SQUARE = 67,
OPENING_BRACE = 68,
CLOSING_BRACE = 69,
LESS_THAN = 70,
GREATER_THAN = 71,
NULL_TREE_LOOKAHEAD = 3
};
#ifdef __cplusplus
};
#endif
#endif /*INC_IfconfigLinuxCfgParserTokenTypes_hpp_*/

View File

@ -0,0 +1,70 @@
// $ANTLR 2.7.7 (20100319): ifconfig_linux.g -> IfconfigLinuxCfgParserTokenTypes.txt$
IfconfigLinuxCfgParser // output token vocab name
NEWLINE=4
DOUBLE_NEWLINE=5
LINE_COMMENT=6
PRIORITY="priority"=7
MEDIA="media"=8
STATUS="status"=9
WORD=10
UP="UP"=11
UPPER_BROADCAST="BROADCAST"=12
UPPER_POINTOPOINT="POINTOPOINT"=13
UPPER_LOOPBACK="LOOPBACK"=14
UPPER_NOARP="NOARP"=15
UPPER_RUNNING="RUNNING"=16
LOOPBACK="Loopback"=17
INTERRUPT="Interrupt"=18
COLLISIONS="collisions"=19
COLON=20
RX="RX"=21
TX="TX"=22
DOT=23
INT_CONST=24
LINK="Link"=25
ENCAP="encap"=26
HWADDR="HWaddr"=27
MAC_ADDRESS=28
INET="inet"=29
ADDR="addr"=30
IPV4=31
BCAST="Bcast"=32
MASK="Mask"=33
P_T_P="P-t-P"=34
INET6="inet6"=35
IPV6=36
SLASH=37
SCOPE="Scope"=38
HOST="Host"=39
GLOBAL="Global"=40
GROUPS="groups"=41
FLAGS="flags"=42
BROADCAST="broadcast"=43
NETMASK="netmask"=44
PREFIXLEN="prefixlen"=45
SCOPEID="scopeid"=46
MTU="mtu"=47
LLADR="lladdr"=48
Whitespace=49
HEX_CONST=50
NUMBER=51
NEG_INT_CONST=52
HEX_DIGIT=53
DIGIT=54
NUM_3DIGIT=55
NUM_HEX_4DIGIT=56
NUMBER_ADDRESS_OR_WORD=57
PERCENT=58
AMPERSAND=59
STAR=60
MINUS=61
EQUAL=62
QUESTION=63
OPENING_PAREN=64
CLOSING_PAREN=65
OPENING_SQUARE=66
CLOSING_SQUARE=67
OPENING_BRACE=68
CLOSING_BRACE=69
LESS_THAN=70
GREATER_THAN=71

428
src/parsers/ifconfig_bsd.g Normal file
View File

@ -0,0 +1,428 @@
/*
Firewall Builder
Copyright (C) 2011 NetCitadel, LLC
Author: Vadim Kurland vadim@fwbuilder.org
This program is free software which we release under the GNU General Public
License. You may redistribute and/or modify this program under the terms
of that license as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
To get a copy of the GNU General Public License, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
header "pre_include_hpp"
{
// gets inserted before antlr generated includes in the header
// file
#include "IfconfigImporter.h"
}
header "post_include_hpp"
{
// gets inserted after antlr generated includes in the header file
// outside any generated namespace specifications
#include <iostream>
#include <sstream>
class IfconfigImporter;
}
header "pre_include_cpp"
{
// gets inserted before the antlr generated includes in the cpp
// file
}
header "post_include_cpp"
{
// gets inserted after the antlr generated includes in the cpp
// file
#include <antlr/Token.hpp>
#include <antlr/TokenBuffer.hpp>
}
header
{
// gets inserted after generated namespace specifications in the
// header file. But outside the generated class.
}
options
{
language="Cpp";
}
class IfconfigBSDCfgParser extends Parser;
options
{
k = 2;
// when default error handler is disabled, parser errors cause
// exception and terminate parsing process. We can catch the exception
// and make the error appear in importer log, but import process
// terminates which is not always optimal
//
// defaultErrorHandler = false;
// see http://www.antlr2.org/doc/options.html
}
{
// additional methods and members
public:
std::ostream *dbg;
IfconfigImporter *importer;
/// Parser error-reporting function can be overridden in subclass
virtual void reportError(const ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex)
{
importer->addMessageToLog("Parser error: " + ex.toString());
std::cerr << ex.toString() << std::endl;
}
/// Parser error-reporting function can be overridden in subclass
virtual void reportError(const ANTLR_USE_NAMESPACE(std)string& s)
{
importer->addMessageToLog("Parser error: " + s);
std::cerr << s << std::endl;
}
/// Parser warning-reporting function can be overridden in subclass
virtual void reportWarning(const ANTLR_USE_NAMESPACE(std)string& s)
{
importer->addMessageToLog("Parser warning: " + s);
std::cerr << s << std::endl;
}
}
cfgfile
:
(
comment
|
interface_line
|
hwaddr_line
|
inet_address
|
inet6_address
|
groups
|
unknown_line
|
NEWLINE
|
DOUBLE_NEWLINE
)*
;
//****************************************************************
comment
: LINE_COMMENT ;
//****************************************************************
unknown_line
:
(
PRIORITY
|
MEDIA
|
STATUS
|
WORD
)
{
consumeUntil(NEWLINE);
}
;
//****************************************************************
//
// lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33200
// vic0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
// enc0: flags=0<> mtu 1536
//
interface_line { InterfaceSpec is; }
:
in:WORD COLON FLAGS EQUAL INT_CONST
{
// interface name and status
is.name = in->getText();
importer->newInterface(is);
consumeUntil(NEWLINE);
}
;
//****************************************************************
hwaddr_line
:
LLADDR addr:MAC_ADDRESS
{
importer->HwAddressForCurrentInterface(addr->getText());
}
;
//****************************************************************
//
// BSD: inet 10.3.14.81 netmask 0xffffff00 broadcast 10.3.14.255
inet_address { AddressSpec as; }
:
INET addr:IPV4 NETMASK netm:HEX_CONST BROADCAST bcast:IPV4
{
as.at = AddressSpec::INTERFACE_CONFIGURATION;
as.address = addr->getText();
as.netmask = netm->getText();
as.broadcast = bcast->getText();
importer->inetConfigurationForCurrentInterface(as);
}
;
//****************************************************************
// BSD: inet6 fe80::20c:29ff:fe3f:ac3c%vic0 prefixlen 64 scopeid 0x1
inet6_address { AddressSpec as; }
:
INET6 addr:IPV6 PERCENT WORD PREFIXLEN netm:INT_CONST SCOPEID HEX_CONST
{
as.at = AddressSpec::INTERFACE_CONFIGURATION;
as.address = addr->getText();
as.netmask = netm->getText();
importer->inet6ConfigurationForCurrentInterface(as);
}
;
//****************************************************************
groups
:
GROUPS COLON groups_list NEWLINE
;
groups_list
:
WORD { importer->addGroupToCurrentInterface(LT(0)->getText()); }
(
WORD { importer->addGroupToCurrentInterface(LT(0)->getText()); }
)*
;
//****************************************************************
class IfconfigBSDCfgLexer extends Lexer;
options
{
k = 3;
// ASCII only
charVocabulary = '\3'..'\377';
}
tokens
{
INET = "inet";
INET6 = "inet6";
FLAGS = "flags";
LINK = "Link";
GLOBAL = "Global";
HOST = "Host";
ADDR = "addr";
BCAST = "Bcast";
P_T_P = "P-t-P";
MASK = "Mask";
BROADCAST = "broadcast";
NETMASK = "netmask";
PREFIXLEN = "prefixlen";
SCOPEID = "scopeid";
SCOPE = "Scope";
GROUPS = "groups";
MTU = "mtu";
ENCAP = "encap";
LOOPBACK = "Loopback";
UP = "UP";
UPPER_BROADCAST = "BROADCAST";
UPPER_POINTOPOINT = "POINTOPOINT";
UPPER_LOOPBACK = "LOOPBACK";
UPPER_NOARP = "NOARP";
UPPER_RUNNING = "RUNNING";
RX = "RX";
TX = "TX";
COLLISIONS = "collisions";
INTERRUPT = "Interrupt";
PRIORITY = "priority";
MEDIA = "media";
STATUS = "status";
HWADDR = "HWaddr";
LLADR = "lladdr";
}
LINE_COMMENT : "#" (~('\r' | '\n'))* NEWLINE ;
Whitespace : ( '\003'..'\010' | '\t' | '\013' | '\f' | '\016'.. '\037' | '\177'..'\377' | ' ' )
{ $setType(ANTLR_USE_NAMESPACE(antlr)Token::SKIP); } ;
protected
INT_CONST:;
protected
HEX_CONST:;
protected
NUMBER:;
protected
NEG_INT_CONST:;
protected
COLON : ;
protected
HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ;
protected
DIGIT : '0'..'9' ;
protected
NUM_3DIGIT: ('0'..'9') (('0'..'9') ('0'..'9')?)? ;
protected
NUM_HEX_4DIGIT: HEX_DIGIT ((HEX_DIGIT) ((HEX_DIGIT) (HEX_DIGIT)?)?)? ;
protected
MAC_ADDRESS : ;
NUMBER_ADDRESS_OR_WORD
options {
testLiterals = true;
}
:
( NUM_3DIGIT '.' NUM_3DIGIT '.' ) =>
(NUM_3DIGIT '.' NUM_3DIGIT '.' NUM_3DIGIT '.' NUM_3DIGIT)
{ $setType(IPV4); }
//
// MAC adress rule - exactly 6 COLON separated ints
//
| (NUM_HEX_4DIGIT ':' NUM_HEX_4DIGIT ':'
NUM_HEX_4DIGIT ':' NUM_HEX_4DIGIT ':'
NUM_HEX_4DIGIT ':' NUM_HEX_4DIGIT ~(':') )=>
(
NUM_HEX_4DIGIT ':' NUM_HEX_4DIGIT ':'
NUM_HEX_4DIGIT ':' NUM_HEX_4DIGIT ':'
NUM_HEX_4DIGIT ':' NUM_HEX_4DIGIT
) { $setType(MAC_ADDRESS); }
// IPv6 RULE
| (NUM_HEX_4DIGIT ':')=>
(
((NUM_HEX_4DIGIT ':')+ ':')=>
(
(NUM_HEX_4DIGIT ':')+ ':'
(NUM_HEX_4DIGIT (':' NUM_HEX_4DIGIT)*)?
) { $setType(IPV6); }
| NUM_HEX_4DIGIT (':' NUM_HEX_4DIGIT)+
{ $setType(IPV6); }
) { $setType(IPV6); }
| (':' ':' NUM_HEX_4DIGIT)=>
':' ':' NUM_HEX_4DIGIT (':' NUM_HEX_4DIGIT)* { $setType(IPV6); }
| ':' ':' { $setType(IPV6); }
| ':' { $setType(COLON); }
| ( (DIGIT)+ '.' (DIGIT)+ )=> ( (DIGIT)+ '.' (DIGIT)+ )
{ $setType(NUMBER); }
| ( DIGIT )+ { $setType(INT_CONST); }
| '0' ('x' | 'X') HEX_DIGIT ( HEX_DIGIT )* { $setType(HEX_CONST); }
// making sure ',' '(' ')' '=' '<' '>' '+' are not part of WORD
// double quote " should be included, without it STRING does not match
| ( 'a'..'z' | 'A'..'Z' )
( '"' | '$' | '%' | '&' | '-' | '0'..'9' | ';' |
'?' | '@' | 'A'..'Z' | '\\' | '^' | '_' | '`' | 'a'..'z' )*
{ $setType(WORD); }
;
NEWLINE : ( "\r\n" | '\r' | '\n' ) { newline(); } ;
// DOUBLE_NEWLINE : NEWLINE NEWLINE ;
// protected
// NEWLINE :;
// protected
// DOUBLE_NEWLINE : ;
// NEWLINES
// :
// ( ( "\r\n" | '\r' | '\n' ) ~('\r' | '\n') ) =>
// ( "\r\n" | '\r' | '\n' ) { $setType(NEWLINE); }
// |
// ( "\r\n\r\n" | "\r\r" | "\n\n" ) { $setType(DOUBLE_NEWLINE); }
// ;
PERCENT : '%' ;
AMPERSAND : '&' ;
STAR : '*' ;
MINUS : '-' ;
DOT : '.' ;
SLASH : '/' ;
EQUAL : '=';
QUESTION : '?' ;
OPENING_PAREN : '(' ;
CLOSING_PAREN : ')' ;
OPENING_SQUARE : '[' ;
CLOSING_SQUARE : ']' ;
OPENING_BRACE : '{' ;
CLOSING_BRACE : '}' ;
LESS_THAN : '<' ;
GREATER_THAN : '>' ;

View File

@ -65,7 +65,7 @@ options
}
class IfconfigCfgParser extends Parser;
class IfconfigLinuxCfgParser extends Parser;
options
{
k = 2;
@ -115,27 +115,19 @@ cfgfile
(
comment
|
bsd_interface_line
interface_line
|
linux_interface_line
hwaddr_line
|
bsd_hwaddr_line
inet_address
|
linux_hwaddr_line
|
bsd_inet_address
|
linux_inet_address
|
bsd_inet6_address
|
linux_inet6_address
inet6_address
|
groups
|
linux_interface_flags
interface_flags
|
linux_interface_statistics
interface_statistics
|
unknown_line
|
@ -166,7 +158,7 @@ unknown_line
}
;
linux_interface_flags
interface_flags
:
(
UP
@ -188,10 +180,10 @@ linux_interface_flags
}
;
linux_interface_statistics
interface_statistics
:
(
( COLLISIONS COLON )
( ( INTERRUPT | COLLISIONS ) COLON )
|
RX
|
@ -206,47 +198,30 @@ linux_interface_statistics
//****************************************************************
//
// lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33200
// vic0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
// enc0: flags=0<> mtu 1536
//
bsd_interface_line { InterfaceSpec is; }
:
in:WORD COLON FLAGS EQUAL INT_CONST
{
// interface name and status
is.name = in->getText();
importer->newInterface(is);
consumeUntil(NEWLINE);
}
;
// lo Link encap:Local Loopback
// eth0 Link encap:Ethernet HWaddr 00:0c:29:5f:12:cb
// he-ipv6 Link encap:IPv6-in-IPv4
// sit0 Link encap:IPv6-in-IPv4
//
linux_interface_line { InterfaceSpec is; }
interface_line { InterfaceSpec is; }
:
in:WORD LINK ENCAP COLON WORD
in1:WORD
( DOT in2:INT_CONST )?
( COLON ( lbl1:WORD | lbl2:INT_CONST ) )?
LINK ENCAP COLON WORD
{
// interface name and status
is.name = in->getText();
if (in2) is.name = in1->getText() + "." + in2->getText();
else is.name = in1->getText();
if (lbl1) is.label = lbl1->getText();
if (lbl2) is.label = lbl2->getText();
importer->newInterface(is);
}
;
//****************************************************************
bsd_hwaddr_line
:
LLADDR addr:MAC_ADDRESS
{
importer->HwAddressForCurrentInterface(addr->getText());
}
;
linux_hwaddr_line
hwaddr_line
:
HWADDR addr:MAC_ADDRESS
{
@ -257,21 +232,8 @@ linux_hwaddr_line
//****************************************************************
//
// BSD: inet 10.3.14.81 netmask 0xffffff00 broadcast 10.3.14.255
bsd_inet_address { AddressSpec as; }
:
INET addr:IPV4 NETMASK netm:HEX_CONST BROADCAST bcast:IPV4
{
as.at = AddressSpec::INTERFACE_CONFIGURATION;
as.address = addr->getText();
as.netmask = netm->getText();
as.broadcast = bcast->getText();
importer->inetConfigurationForCurrentInterface(as);
}
;
// Linux: inet addr:10.10.11.11 Bcast:10.10.11.255 Mask:255.255.255.0
linux_inet_address { AddressSpec as; }
inet_address { AddressSpec as; }
:
INET ADDR COLON
addr:IPV4
@ -298,20 +260,8 @@ linux_inet_address { AddressSpec as; }
//****************************************************************
// BSD: inet6 fe80::20c:29ff:fe3f:ac3c%vic0 prefixlen 64 scopeid 0x1
bsd_inet6_address { AddressSpec as; }
:
INET6 addr:IPV6 PERCENT WORD PREFIXLEN netm:INT_CONST SCOPEID HEX_CONST
{
as.at = AddressSpec::INTERFACE_CONFIGURATION;
as.address = addr->getText();
as.netmask = netm->getText();
importer->inet6ConfigurationForCurrentInterface(as);
}
;
// Linux: inet6 addr: fe80::20c:29ff:fe5f:12cb/64 Scope:Link
linux_inet6_address { AddressSpec as; }
inet6_address { AddressSpec as; }
:
INET6 ADDR COLON addr:IPV6 SLASH netm:INT_CONST SCOPE COLON (HOST | LINK | GLOBAL | INT_CONST)
{
@ -339,7 +289,7 @@ groups_list
//****************************************************************
class IfconfigCfgLexer extends Lexer;
class IfconfigLinuxCfgLexer extends Lexer;
options
{
k = 3;
@ -389,6 +339,7 @@ tokens
RX = "RX";
TX = "TX";
COLLISIONS = "collisions";
INTERRUPT = "Interrupt";
PRIORITY = "priority";
MEDIA = "media";

View File

@ -13,8 +13,10 @@ SOURCES = IOSCfgLexer.cpp \
PIXCfgParser.cpp \
PFCfgLexer.cpp \
PFCfgParser.cpp \
IfconfigCfgLexer.cpp \
IfconfigCfgParser.cpp
IfconfigLinuxCfgLexer.cpp \
IfconfigLinuxCfgParser.cpp \
IfconfigBSDCfgLexer.cpp \
IfconfigBSDCfgParser.cpp
HEADERS = ../../config.h \
IOSCfgLexer.hpp \
@ -29,9 +31,12 @@ HEADERS = ../../config.h \
PFCfgLexer.hpp \
PFCfgParser.hpp \
PFCfgParserTokenTypes.hpp \
IfconfigCfgLexer.hpp \
IfconfigCfgParser.hpp \
IfconfigCfgParserTokenTypes.hpp
IfconfigLinuxCfgLexer.hpp \
IfconfigLinuxCfgParser.hpp \
IfconfigLinuxCfgParserTokenTypes.hpp \
IfconfigBSDCfgLexer.hpp \
IfconfigBSDCfgParser.hpp \
IfconfigBSDCfgParserTokenTypes.hpp
CONFIG += staticlib

View File

@ -119,7 +119,8 @@ void IfconfigImporterTest::linuxIfconfigTest()
std::istringstream instream(
openTestFile("test_data/linux_ifconfig.test"));
IfconfigImporter* imp = new IfconfigImporter(lib, instream, logger, "test_fw");
IfconfigImporter* imp = new IfconfigImporter(
lib, instream, logger, "linux24", "test_fw");
CPPUNIT_ASSERT_NO_THROW( imp->run() );
imp->finalize();
@ -140,7 +141,8 @@ void IfconfigImporterTest::bsdIfconfigTest()
std::istringstream instream(
openTestFile("test_data/bsd_ifconfig.test"));
IfconfigImporter* imp = new IfconfigImporter(lib, instream, logger, "test_fw");
IfconfigImporter* imp = new IfconfigImporter(
lib, instream, logger, "openbsd", "test_fw");
CPPUNIT_ASSERT_NO_THROW( imp->run() );
imp->finalize();

View File

@ -8,6 +8,26 @@ eth0 Link encap:Ethernet HWaddr 00:0d:61:42:3e:87
collisions:0 txqueuelen:1000
RX bytes:1900107617 (1.9 GB) TX bytes:3300213065 (3.3 GB)
eth1 Link encap:Ethernet HWaddr 00:0c:29:1e:dc:b4
inet addr:10.1.1.1 Bcast:10.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe1e:dcb4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:23 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1380 (1.3 KB) TX bytes:468 (468.0 B)
Interrupt:19 Base address:0x2080
eth1:1 Link encap:Ethernet HWaddr 00:0c:29:1e:dc:b4
inet addr:192.168.123.123 Bcast:0.0.0.0 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:19 Base address:0x2080
eth1:foo Link encap:Ethernet HWaddr 00:0c:29:1e:dc:b4
inet addr:192.168.123.124 Bcast:0.0.0.0 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:19 Base address:0x2080
he-ipv6 Link encap:IPv6-in-IPv4
inet6 addr: 2001:db8:1f0e:162::2/64 Scope:Global
inet6 addr: fe80::4655:afaa/128 Scope:Link
@ -40,3 +60,40 @@ ppp0 Link encap:Point-to-Point Protocol
TX packets:397 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:253765 (247.8 Kb) TX bytes:62621 (61.1 Kb)
eth1.100 Link encap:Ethernet HWaddr 00:0c:29:1e:dc:b4
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth1.100:1 Link encap:Ethernet HWaddr 00:0c:29:1e:dc:b4
inet addr:192.168.222.1 Bcast:0.0.0.0 Mask:255.255.255.0
BROADCAST MULTICAST MTU:1500 Metric:1
eth1.100:foo Link encap:Ethernet HWaddr 00:0c:29:1e:dc:b4
inet addr:192.168.222.2 Bcast:0.0.0.0 Mask:255.255.255.0
BROADCAST MULTICAST MTU:1500 Metric:1
eth1.0100 Link encap:Ethernet HWaddr 00:0c:29:1e:dc:b4
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
vlan100 Link encap:Ethernet HWaddr 00:0c:29:1e:dc:b4
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
vlan0100 Link encap:Ethernet HWaddr 00:0c:29:1e:dc:b4
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)