RequirementLexer.cpp [plain text]
#include "RequirementLexer.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>
#include "requirement.h"
#include "reqmaker.h"
#include "csutilities.h"
#include <libDER/libDER.h>
#include <libDER/asn1Types.h>
#include <security_utilities/cfutilities.h>
#include <security_utilities/hashing.h>
#include <security_cdsa_utilities/cssmdata.h> // OID coding
#include <Security/SecCertificate.h>
using namespace CodeSigning;
typedef Requirement::Maker Maker;
extern "C" {
CFAbsoluteTime SecAbsoluteTimeFromDateContent(DERTag tag, const uint8_t *bytes,
size_t length);
}
ANTLR_BEGIN_NAMESPACE(Security_CodeSigning)
RequirementLexer::RequirementLexer(std::istream& in)
: antlr::CharScanner(new antlr::CharBuffer(in),true)
{
initLiterals();
}
RequirementLexer::RequirementLexer(antlr::InputBuffer& ib)
: antlr::CharScanner(ib,true)
{
initLiterals();
}
RequirementLexer::RequirementLexer(const antlr::LexerSharedInputState& state)
: antlr::CharScanner(state,true)
{
initLiterals();
}
void RequirementLexer::initLiterals()
{
literals["certificate"] = 26;
literals["always"] = 15;
literals["host"] = 6;
literals["guest"] = 5;
literals["cdhash"] = 20;
literals["entitlement"] = 30;
literals["library"] = 8;
literals["timestamp"] = 52;
literals["never"] = 17;
literals["cert"] = 27;
literals["plugin"] = 9;
literals["absent"] = 32;
literals["or"] = 10;
literals["leaf"] = 44;
literals["info"] = 29;
literals["designated"] = 7;
literals["apple"] = 24;
literals["trusted"] = 28;
literals["true"] = 16;
literals["notarized"] = 22;
literals["and"] = 11;
literals["root"] = 45;
literals["platform"] = 21;
literals["anchor"] = 23;
literals["false"] = 18;
literals["generic"] = 25;
literals["identifier"] = 19;
literals["exists"] = 31;
}
antlr::RefToken RequirementLexer::nextToken()
{
antlr::RefToken theRetToken;
for (;;) {
antlr::RefToken theRetToken;
int _ttype = antlr::Token::INVALID_TYPE;
resetText();
try { switch ( LA(1)) {
case 0x22 :
{
mSTRING(true);
theRetToken=_returnToken;
break;
}
case 0x3b :
{
mSEMI(true);
theRetToken=_returnToken;
break;
}
case 0x28 :
{
mLPAREN(true);
theRetToken=_returnToken;
break;
}
case 0x29 :
{
mRPAREN(true);
theRetToken=_returnToken;
break;
}
case 0x5b :
{
mLBRACK(true);
theRetToken=_returnToken;
break;
}
case 0x5d :
{
mRBRACK(true);
theRetToken=_returnToken;
break;
}
case 0x2c :
{
mCOMMA(true);
theRetToken=_returnToken;
break;
}
case 0x7e :
{
mSUBS(true);
theRetToken=_returnToken;
break;
}
case 0x2d :
{
mNEG(true);
theRetToken=_returnToken;
break;
}
case 0x21 :
{
mNOT(true);
theRetToken=_returnToken;
break;
}
case 0x2a :
{
mSTAR(true);
theRetToken=_returnToken;
break;
}
case 0x9 :
case 0xa :
case 0x20 :
{
mWS(true);
theRetToken=_returnToken;
break;
}
case 0x23 :
{
mSHELLCOMMENT(true);
theRetToken=_returnToken;
break;
}
default:
if ((LA(1) == 0x2f ) && (_tokenSet_0.member(LA(2)))) {
mPATHNAME(true);
theRetToken=_returnToken;
}
else if ((LA(1) == 0x48 ) && (LA(2) == 0x22 )) {
mHASHCONSTANT(true);
theRetToken=_returnToken;
}
else if ((LA(1) == 0x30 ) && (LA(2) == 0x78 )) {
mHEXCONSTANT(true);
theRetToken=_returnToken;
}
else if ((LA(1) == 0x3d ) && (LA(2) == 0x3e )) {
mARROW(true);
theRetToken=_returnToken;
}
else if ((LA(1) == 0x3c ) && (LA(2) == 0x3d )) {
mLE(true);
theRetToken=_returnToken;
}
else if ((LA(1) == 0x3e ) && (LA(2) == 0x3d )) {
mGE(true);
theRetToken=_returnToken;
}
else if ((LA(1) == 0x3d ) && (LA(2) == 0x3d )) {
mEQQL(true);
theRetToken=_returnToken;
}
else if ((LA(1) == 0x2f ) && (LA(2) == 0x2a )) {
mC_COMMENT(true);
theRetToken=_returnToken;
}
else if ((LA(1) == 0x2f ) && (LA(2) == 0x2f )) {
mCPP_COMMENT(true);
theRetToken=_returnToken;
}
else if ((_tokenSet_0.member(LA(1))) && (true)) {
mDOTKEY(true);
theRetToken=_returnToken;
}
else if (((LA(1) >= 0x30 && LA(1) <= 0x39 )) && (true)) {
mINTEGER(true);
theRetToken=_returnToken;
}
else if ((LA(1) == 0x3c ) && (true)) {
mLESS(true);
theRetToken=_returnToken;
}
else if ((LA(1) == 0x3e ) && (true)) {
mGT(true);
theRetToken=_returnToken;
}
else if ((LA(1) == 0x3d ) && (true)) {
mEQL(true);
theRetToken=_returnToken;
}
else {
if (LA(1)==EOF_CHAR)
{
uponEOF();
_returnToken = makeToken(antlr::Token::EOF_TYPE);
}
else {throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
}
if ( !_returnToken )
goto tryAgain;
_ttype = _returnToken->getType();
_returnToken->setType(_ttype);
return _returnToken;
}
catch (antlr::RecognitionException& e) {
throw antlr::TokenStreamRecognitionException(e);
}
catch (antlr::CharStreamIOException& csie) {
throw antlr::TokenStreamIOException(csie.io);
}
catch (antlr::CharStreamException& cse) {
throw antlr::TokenStreamException(cse.getMessage());
}
tryAgain:;
}
}
void RequirementLexer::mIDENT(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = IDENT;
std::string::size_type _saveIndex;
{
switch ( LA(1)) {
case 0x41 :
case 0x42 :
case 0x43 :
case 0x44 :
case 0x45 :
case 0x46 :
case 0x47 :
case 0x48 :
case 0x49 :
case 0x4a :
case 0x4b :
case 0x4c :
case 0x4d :
case 0x4e :
case 0x4f :
case 0x50 :
case 0x51 :
case 0x52 :
case 0x53 :
case 0x54 :
case 0x55 :
case 0x56 :
case 0x57 :
case 0x58 :
case 0x59 :
case 0x5a :
{
matchRange('A','Z');
break;
}
case 0x61 :
case 0x62 :
case 0x63 :
case 0x64 :
case 0x65 :
case 0x66 :
case 0x67 :
case 0x68 :
case 0x69 :
case 0x6a :
case 0x6b :
case 0x6c :
case 0x6d :
case 0x6e :
case 0x6f :
case 0x70 :
case 0x71 :
case 0x72 :
case 0x73 :
case 0x74 :
case 0x75 :
case 0x76 :
case 0x77 :
case 0x78 :
case 0x79 :
case 0x7a :
{
matchRange('a','z');
break;
}
default:
{
throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
}
}
}
{ for (;;) {
switch ( LA(1)) {
case 0x41 :
case 0x42 :
case 0x43 :
case 0x44 :
case 0x45 :
case 0x46 :
case 0x47 :
case 0x48 :
case 0x49 :
case 0x4a :
case 0x4b :
case 0x4c :
case 0x4d :
case 0x4e :
case 0x4f :
case 0x50 :
case 0x51 :
case 0x52 :
case 0x53 :
case 0x54 :
case 0x55 :
case 0x56 :
case 0x57 :
case 0x58 :
case 0x59 :
case 0x5a :
{
matchRange('A','Z');
break;
}
case 0x61 :
case 0x62 :
case 0x63 :
case 0x64 :
case 0x65 :
case 0x66 :
case 0x67 :
case 0x68 :
case 0x69 :
case 0x6a :
case 0x6b :
case 0x6c :
case 0x6d :
case 0x6e :
case 0x6f :
case 0x70 :
case 0x71 :
case 0x72 :
case 0x73 :
case 0x74 :
case 0x75 :
case 0x76 :
case 0x77 :
case 0x78 :
case 0x79 :
case 0x7a :
{
matchRange('a','z');
break;
}
case 0x30 :
case 0x31 :
case 0x32 :
case 0x33 :
case 0x34 :
case 0x35 :
case 0x36 :
case 0x37 :
case 0x38 :
case 0x39 :
{
matchRange('0','9');
break;
}
default:
{
goto _loop49;
}
}
}
_loop49:;
} _ttype = testLiteralsTable(text.substr(_begin, text.length()-_begin),_ttype);
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mDOTKEY(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = DOTKEY;
std::string::size_type _saveIndex;
mIDENT(false);
{ for (;;) {
if ((LA(1) == 0x2e )) {
match(".");
{
switch ( LA(1)) {
case 0x41 :
case 0x42 :
case 0x43 :
case 0x44 :
case 0x45 :
case 0x46 :
case 0x47 :
case 0x48 :
case 0x49 :
case 0x4a :
case 0x4b :
case 0x4c :
case 0x4d :
case 0x4e :
case 0x4f :
case 0x50 :
case 0x51 :
case 0x52 :
case 0x53 :
case 0x54 :
case 0x55 :
case 0x56 :
case 0x57 :
case 0x58 :
case 0x59 :
case 0x5a :
case 0x61 :
case 0x62 :
case 0x63 :
case 0x64 :
case 0x65 :
case 0x66 :
case 0x67 :
case 0x68 :
case 0x69 :
case 0x6a :
case 0x6b :
case 0x6c :
case 0x6d :
case 0x6e :
case 0x6f :
case 0x70 :
case 0x71 :
case 0x72 :
case 0x73 :
case 0x74 :
case 0x75 :
case 0x76 :
case 0x77 :
case 0x78 :
case 0x79 :
case 0x7a :
{
mIDENT(false);
break;
}
case 0x30 :
case 0x31 :
case 0x32 :
case 0x33 :
case 0x34 :
case 0x35 :
case 0x36 :
case 0x37 :
case 0x38 :
case 0x39 :
{
mINTEGER(false);
break;
}
default:
{
throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
}
}
}
}
else {
goto _loop53;
}
}
_loop53:;
} _ttype = testLiteralsTable(_ttype);
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mINTEGER(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = INTEGER;
std::string::size_type _saveIndex;
{ int _cnt71=0;
for (;;) {
if (((LA(1) >= 0x30 && LA(1) <= 0x39 ))) {
matchRange('0','9');
}
else {
if ( _cnt71>=1 ) { goto _loop71; } else {throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt71++;
}
_loop71:;
} if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mPATHNAME(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = PATHNAME;
std::string::size_type _saveIndex;
match("/");
mIDENT(false);
{ int _cnt56=0;
for (;;) {
if ((LA(1) == 0x2f )) {
match("/");
mIDENT(false);
}
else {
if ( _cnt56>=1 ) { goto _loop56; } else {throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt56++;
}
_loop56:;
} if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mHASHCONSTANT(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = HASHCONSTANT;
std::string::size_type _saveIndex;
_saveIndex = text.length();
match('H' );
text.erase(_saveIndex);
_saveIndex = text.length();
match('\"' );
text.erase(_saveIndex);
{ int _cnt59=0;
for (;;) {
if ((_tokenSet_1.member(LA(1)))) {
mHEX(false);
}
else {
if ( _cnt59>=1 ) { goto _loop59; } else {throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt59++;
}
_loop59:;
} _saveIndex = text.length();
match('\"' );
text.erase(_saveIndex);
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mHEX(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = HEX;
std::string::size_type _saveIndex;
switch ( LA(1)) {
case 0x30 :
case 0x31 :
case 0x32 :
case 0x33 :
case 0x34 :
case 0x35 :
case 0x36 :
case 0x37 :
case 0x38 :
case 0x39 :
{
matchRange('0','9');
break;
}
case 0x61 :
case 0x62 :
case 0x63 :
case 0x64 :
case 0x65 :
case 0x66 :
{
matchRange('a','f');
break;
}
case 0x41 :
case 0x42 :
case 0x43 :
case 0x44 :
case 0x45 :
case 0x46 :
{
matchRange('A','F');
break;
}
default:
{
throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
}
}
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mHEXCONSTANT(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = HEXCONSTANT;
std::string::size_type _saveIndex;
_saveIndex = text.length();
match('0' );
text.erase(_saveIndex);
_saveIndex = text.length();
match('x' );
text.erase(_saveIndex);
{ int _cnt62=0;
for (;;) {
if ((_tokenSet_1.member(LA(1)))) {
mHEX(false);
}
else {
if ( _cnt62>=1 ) { goto _loop62; } else {throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt62++;
}
_loop62:;
} if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mSTRING(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = STRING;
std::string::size_type _saveIndex;
_saveIndex = text.length();
match('\"' );
text.erase(_saveIndex);
{ for (;;) {
if ((LA(1) == 0x5c )) {
{
_saveIndex = text.length();
match('\\' );
text.erase(_saveIndex);
match('\"' );
}
}
else if ((_tokenSet_2.member(LA(1)))) {
{
{
match(_tokenSet_2);
}
}
}
else {
goto _loop68;
}
}
_loop68:;
} _saveIndex = text.length();
match('\"' );
text.erase(_saveIndex);
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mARROW(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = ARROW;
std::string::size_type _saveIndex;
match("=>");
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mSEMI(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = SEMI;
std::string::size_type _saveIndex;
match(';' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mLPAREN(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = LPAREN;
std::string::size_type _saveIndex;
match('(' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mRPAREN(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = RPAREN;
std::string::size_type _saveIndex;
match(')' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mLBRACK(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = LBRACK;
std::string::size_type _saveIndex;
match('[' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mRBRACK(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = RBRACK;
std::string::size_type _saveIndex;
match(']' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mLESS(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = LESS;
std::string::size_type _saveIndex;
match('<' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mGT(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = GT;
std::string::size_type _saveIndex;
match('>' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mLE(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = LE;
std::string::size_type _saveIndex;
match("<=");
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mGE(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = GE;
std::string::size_type _saveIndex;
match(">=");
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mCOMMA(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = COMMA;
std::string::size_type _saveIndex;
match(',' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mEQL(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = EQL;
std::string::size_type _saveIndex;
match('=' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mEQQL(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = EQQL;
std::string::size_type _saveIndex;
match("==");
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mSUBS(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = SUBS;
std::string::size_type _saveIndex;
match('~' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mNEG(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = NEG;
std::string::size_type _saveIndex;
match('-' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mNOT(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = NOT;
std::string::size_type _saveIndex;
match('!' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mSTAR(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = STAR;
std::string::size_type _saveIndex;
match('*' );
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mWS(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = WS;
std::string::size_type _saveIndex;
{ int _cnt92=0;
for (;;) {
switch ( LA(1)) {
case 0x20 :
{
match(' ' );
break;
}
case 0xa :
{
match('\n' );
newline();
break;
}
case 0x9 :
{
match('\t' );
break;
}
default:
{
if ( _cnt92>=1 ) { goto _loop92; } else {throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
}
_cnt92++;
}
_loop92:;
} _ttype = antlr::Token::SKIP;
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mSHELLCOMMENT(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = SHELLCOMMENT;
std::string::size_type _saveIndex;
match('#' );
{ for (;;) {
if ((_tokenSet_3.member(LA(1)))) {
matchNot('\n' );
}
else {
goto _loop95;
}
}
_loop95:;
} _ttype = antlr::Token::SKIP;
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mC_COMMENT(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = C_COMMENT;
std::string::size_type _saveIndex;
match("/*");
{ for (;;) {
if ((LA(1) == 0x2a ) && (_tokenSet_4.member(LA(2)))) {
{
match('*' );
{
matchNot('/' );
}
}
}
else if ((_tokenSet_5.member(LA(1)))) {
{
matchNot('*' );
}
}
else {
goto _loop101;
}
}
_loop101:;
} match("*/");
_ttype = antlr::Token::SKIP;
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
void RequirementLexer::mCPP_COMMENT(bool _createToken) {
int _ttype; antlr::RefToken _token; std::string::size_type _begin = text.length();
_ttype = CPP_COMMENT;
std::string::size_type _saveIndex;
match("//");
{ for (;;) {
if ((_tokenSet_3.member(LA(1)))) {
matchNot('\n' );
}
else {
goto _loop104;
}
}
_loop104:;
} _ttype = antlr::Token::SKIP;
if ( _createToken && _token==antlr::nullToken && _ttype!=antlr::Token::SKIP ) {
_token = makeToken(_ttype);
_token->setText(text.substr(_begin, text.length()-_begin));
}
_returnToken = _token;
_saveIndex=0;
}
const unsigned long RequirementLexer::_tokenSet_0_data_[] = { 0UL, 0UL, 134217726UL, 134217726UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const antlr::BitSet RequirementLexer::_tokenSet_0(_tokenSet_0_data_,10);
const unsigned long RequirementLexer::_tokenSet_1_data_[] = { 0UL, 67043328UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const antlr::BitSet RequirementLexer::_tokenSet_1(_tokenSet_1_data_,10);
const unsigned long RequirementLexer::_tokenSet_2_data_[] = { 4294967295UL, 4294967291UL, 4026531839UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967292UL, 2097151UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const antlr::BitSet RequirementLexer::_tokenSet_2(_tokenSet_2_data_,16);
const unsigned long RequirementLexer::_tokenSet_3_data_[] = { 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967292UL, 2097151UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const antlr::BitSet RequirementLexer::_tokenSet_3(_tokenSet_3_data_,16);
const unsigned long RequirementLexer::_tokenSet_4_data_[] = { 4294967295UL, 4294934527UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967292UL, 2097151UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const antlr::BitSet RequirementLexer::_tokenSet_4(_tokenSet_4_data_,16);
const unsigned long RequirementLexer::_tokenSet_5_data_[] = { 4294967295UL, 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967292UL, 2097151UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
const antlr::BitSet RequirementLexer::_tokenSet_5(_tokenSet_5_data_,16);
ANTLR_END_NAMESPACE