You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
551 lines
14 KiB
551 lines
14 KiB
/* $ANTLR 2.7.1: "gettext.g" -> "GettextLexer.cpp"$ */
|
|
#include "GettextLexer.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 1 "gettext.g"
|
|
|
|
#line 14 "GettextLexer.cpp"
|
|
GettextLexer::GettextLexer(ANTLR_USE_NAMESPACE(std)istream& in)
|
|
: ANTLR_USE_NAMESPACE(antlr)CharScanner(new ANTLR_USE_NAMESPACE(antlr)CharBuffer(in))
|
|
{
|
|
setCaseSensitive(true);
|
|
initLiterals();
|
|
}
|
|
|
|
GettextLexer::GettextLexer(ANTLR_USE_NAMESPACE(antlr)InputBuffer& ib)
|
|
: ANTLR_USE_NAMESPACE(antlr)CharScanner(ib)
|
|
{
|
|
setCaseSensitive(true);
|
|
initLiterals();
|
|
}
|
|
|
|
GettextLexer::GettextLexer(const ANTLR_USE_NAMESPACE(antlr)LexerSharedInputState& state)
|
|
: ANTLR_USE_NAMESPACE(antlr)CharScanner(state)
|
|
{
|
|
setCaseSensitive(true);
|
|
initLiterals();
|
|
}
|
|
|
|
void GettextLexer::initLiterals()
|
|
{
|
|
}
|
|
bool GettextLexer::getCaseSensitiveLiterals() const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
ANTLR_USE_NAMESPACE(antlr)RefToken GettextLexer::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 char stream error handling
|
|
try { // for lexical error handling
|
|
switch ( LA(1)) {
|
|
case static_cast<unsigned char>('\t'):
|
|
case static_cast<unsigned char>('\n'):
|
|
case static_cast<unsigned char>('\r'):
|
|
case static_cast<unsigned char>(' '):
|
|
{
|
|
mWS(true);
|
|
theRetToken=_returnToken;
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('['):
|
|
{
|
|
mL_BRACKET(true);
|
|
theRetToken=_returnToken;
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>(']'):
|
|
{
|
|
mR_BRACKET(true);
|
|
theRetToken=_returnToken;
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('0'):
|
|
case static_cast<unsigned char>('1'):
|
|
case static_cast<unsigned char>('2'):
|
|
case static_cast<unsigned char>('3'):
|
|
case static_cast<unsigned char>('4'):
|
|
case static_cast<unsigned char>('5'):
|
|
case static_cast<unsigned char>('6'):
|
|
case static_cast<unsigned char>('7'):
|
|
case static_cast<unsigned char>('8'):
|
|
case static_cast<unsigned char>('9'):
|
|
{
|
|
mT_INT(true);
|
|
theRetToken=_returnToken;
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('#'):
|
|
{
|
|
mT_COMMENT(true);
|
|
theRetToken=_returnToken;
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('m'):
|
|
{
|
|
mMSG_TAG(true);
|
|
theRetToken=_returnToken;
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('"'):
|
|
{
|
|
mT_STRING(true);
|
|
theRetToken=_returnToken;
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
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());}
|
|
}
|
|
}
|
|
if ( !_returnToken ) goto tryAgain; // found SKIP token
|
|
_ttype = _returnToken->getType();
|
|
_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 GettextLexer::mWS(bool _createToken) {
|
|
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; int _begin=text.length();
|
|
_ttype = WS;
|
|
int _saveIndex;
|
|
|
|
{
|
|
switch ( LA(1)) {
|
|
case static_cast<unsigned char>(' '):
|
|
{
|
|
match(static_cast<unsigned char>(' '));
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('\t'):
|
|
{
|
|
match(static_cast<unsigned char>('\t'));
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('\n'):
|
|
case static_cast<unsigned char>('\r'):
|
|
{
|
|
{
|
|
switch ( LA(1)) {
|
|
case static_cast<unsigned char>('\n'):
|
|
{
|
|
match(static_cast<unsigned char>('\n'));
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('\r'):
|
|
{
|
|
match("\r\n");
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine());
|
|
}
|
|
}
|
|
}
|
|
#line 110 "gettext.g"
|
|
newline();
|
|
#line 173 "GettextLexer.cpp"
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine());
|
|
}
|
|
}
|
|
}
|
|
#line 111 "gettext.g"
|
|
_ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
|
|
#line 184 "GettextLexer.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 GettextLexer::mL_BRACKET(bool _createToken) {
|
|
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; int _begin=text.length();
|
|
_ttype = L_BRACKET;
|
|
int _saveIndex;
|
|
|
|
match(static_cast<unsigned char>('['));
|
|
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 GettextLexer::mR_BRACKET(bool _createToken) {
|
|
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; int _begin=text.length();
|
|
_ttype = R_BRACKET;
|
|
int _saveIndex;
|
|
|
|
match(static_cast<unsigned char>(']'));
|
|
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 GettextLexer::mT_INT(bool _createToken) {
|
|
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; int _begin=text.length();
|
|
_ttype = T_INT;
|
|
int _saveIndex;
|
|
|
|
{
|
|
int _cnt26=0;
|
|
for (;;) {
|
|
if (((LA(1) >= static_cast<unsigned char>('0') && LA(1) <= static_cast<unsigned char>('9')))) {
|
|
matchRange(static_cast<unsigned char>('0'),static_cast<unsigned char>('9'));
|
|
}
|
|
else {
|
|
if ( _cnt26>=1 ) { goto _loop26; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine());}
|
|
}
|
|
|
|
_cnt26++;
|
|
}
|
|
_loop26:;
|
|
}
|
|
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 GettextLexer::mT_COMMENT(bool _createToken) {
|
|
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; int _begin=text.length();
|
|
_ttype = T_COMMENT;
|
|
int _saveIndex;
|
|
|
|
match(static_cast<unsigned char>('#'));
|
|
{
|
|
for (;;) {
|
|
if ((_tokenSet_0.member(LA(1)))) {
|
|
matchNot(static_cast<unsigned char>('\n'));
|
|
}
|
|
else {
|
|
goto _loop29;
|
|
}
|
|
|
|
}
|
|
_loop29:;
|
|
}
|
|
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 GettextLexer::mMSG_TAG(bool _createToken) {
|
|
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; int _begin=text.length();
|
|
_ttype = MSG_TAG;
|
|
int _saveIndex;
|
|
|
|
match("msg");
|
|
{
|
|
switch ( LA(1)) {
|
|
case static_cast<unsigned char>('i'):
|
|
{
|
|
{
|
|
match("id");
|
|
}
|
|
{
|
|
if ((LA(1)==static_cast<unsigned char>('_'))) {
|
|
match("_plural");
|
|
#line 126 "gettext.g"
|
|
_ttype = T_MSGID_PLURAL;
|
|
#line 292 "GettextLexer.cpp"
|
|
}
|
|
else {
|
|
match("");
|
|
#line 125 "gettext.g"
|
|
_ttype = T_MSGID;
|
|
#line 298 "GettextLexer.cpp"
|
|
}
|
|
|
|
}
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('s'):
|
|
{
|
|
match("str");
|
|
#line 128 "gettext.g"
|
|
_ttype = T_MSGSTR;
|
|
#line 309 "GettextLexer.cpp"
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine());
|
|
}
|
|
}
|
|
}
|
|
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 GettextLexer::mT_STRING(bool _createToken) {
|
|
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; int _begin=text.length();
|
|
_ttype = T_STRING;
|
|
int _saveIndex;
|
|
|
|
{
|
|
int _cnt43=0;
|
|
for (;;) {
|
|
if ((LA(1)==static_cast<unsigned char>('"'))) {
|
|
_saveIndex=text.length();
|
|
match(static_cast<unsigned char>('"'));
|
|
text.erase(_saveIndex);
|
|
{
|
|
for (;;) {
|
|
if ((LA(1)==static_cast<unsigned char>('\\'))) {
|
|
mESC(false);
|
|
}
|
|
else if ((_tokenSet_1.member(LA(1)))) {
|
|
matchNot(static_cast<unsigned char>('"'));
|
|
}
|
|
else {
|
|
goto _loop37;
|
|
}
|
|
|
|
}
|
|
_loop37:;
|
|
}
|
|
{
|
|
_saveIndex=text.length();
|
|
match(static_cast<unsigned char>('"'));
|
|
text.erase(_saveIndex);
|
|
{
|
|
for (;;) {
|
|
switch ( LA(1)) {
|
|
case static_cast<unsigned char>(' '):
|
|
{
|
|
match(static_cast<unsigned char>(' '));
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('t'):
|
|
{
|
|
match(static_cast<unsigned char>('t'));
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
goto _loop40;
|
|
}
|
|
}
|
|
}
|
|
_loop40:;
|
|
}
|
|
_saveIndex=text.length();
|
|
match(static_cast<unsigned char>('\n'));
|
|
text.erase(_saveIndex);
|
|
#line 133 "gettext.g"
|
|
newline();
|
|
#line 383 "GettextLexer.cpp"
|
|
{
|
|
for (;;) {
|
|
switch ( LA(1)) {
|
|
case static_cast<unsigned char>(' '):
|
|
{
|
|
_saveIndex=text.length();
|
|
match(static_cast<unsigned char>(' '));
|
|
text.erase(_saveIndex);
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('\t'):
|
|
{
|
|
_saveIndex=text.length();
|
|
match(static_cast<unsigned char>('\t'));
|
|
text.erase(_saveIndex);
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
goto _loop42;
|
|
}
|
|
}
|
|
}
|
|
_loop42:;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if ( _cnt43>=1 ) { goto _loop43; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine());}
|
|
}
|
|
|
|
_cnt43++;
|
|
}
|
|
_loop43:;
|
|
}
|
|
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 GettextLexer::mESC(bool _createToken) {
|
|
int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; int _begin=text.length();
|
|
_ttype = ESC;
|
|
int _saveIndex;
|
|
|
|
match(static_cast<unsigned char>('\\'));
|
|
{
|
|
switch ( LA(1)) {
|
|
case static_cast<unsigned char>('n'):
|
|
{
|
|
match(static_cast<unsigned char>('n'));
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('r'):
|
|
{
|
|
match(static_cast<unsigned char>('r'));
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('t'):
|
|
{
|
|
match(static_cast<unsigned char>('t'));
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('b'):
|
|
{
|
|
match(static_cast<unsigned char>('b'));
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('f'):
|
|
{
|
|
match(static_cast<unsigned char>('f'));
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('"'):
|
|
{
|
|
match(static_cast<unsigned char>('"'));
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('\''):
|
|
{
|
|
match(static_cast<unsigned char>('\''));
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('\\'):
|
|
{
|
|
match(static_cast<unsigned char>('\\'));
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('0'):
|
|
case static_cast<unsigned char>('1'):
|
|
case static_cast<unsigned char>('2'):
|
|
case static_cast<unsigned char>('3'):
|
|
{
|
|
{
|
|
matchRange(static_cast<unsigned char>('0'),static_cast<unsigned char>('3'));
|
|
}
|
|
{
|
|
if (((LA(1) >= static_cast<unsigned char>('0') && LA(1) <= static_cast<unsigned char>('9')))) {
|
|
{
|
|
matchRange(static_cast<unsigned char>('0'),static_cast<unsigned char>('9'));
|
|
}
|
|
{
|
|
if (((LA(1) >= static_cast<unsigned char>('0') && LA(1) <= static_cast<unsigned char>('9')))) {
|
|
matchRange(static_cast<unsigned char>('0'),static_cast<unsigned char>('9'));
|
|
}
|
|
else if (((LA(1) >= static_cast<unsigned char>('\0') && LA(1) <= static_cast<unsigned char>('\377')))) {
|
|
}
|
|
else {
|
|
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine());
|
|
}
|
|
|
|
}
|
|
}
|
|
else if (((LA(1) >= static_cast<unsigned char>('\0') && LA(1) <= static_cast<unsigned char>('\377')))) {
|
|
}
|
|
else {
|
|
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine());
|
|
}
|
|
|
|
}
|
|
break;
|
|
}
|
|
case static_cast<unsigned char>('4'):
|
|
case static_cast<unsigned char>('5'):
|
|
case static_cast<unsigned char>('6'):
|
|
case static_cast<unsigned char>('7'):
|
|
{
|
|
{
|
|
matchRange(static_cast<unsigned char>('4'),static_cast<unsigned char>('7'));
|
|
}
|
|
{
|
|
if (((LA(1) >= static_cast<unsigned char>('0') && LA(1) <= static_cast<unsigned char>('9')))) {
|
|
{
|
|
matchRange(static_cast<unsigned char>('0'),static_cast<unsigned char>('9'));
|
|
}
|
|
}
|
|
else if (((LA(1) >= static_cast<unsigned char>('\0') && LA(1) <= static_cast<unsigned char>('\377')))) {
|
|
}
|
|
else {
|
|
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine());
|
|
}
|
|
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine());
|
|
}
|
|
}
|
|
}
|
|
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 GettextLexer::_tokenSet_0_data_[] = { 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
|
|
const ANTLR_USE_NAMESPACE(antlr)BitSet GettextLexer::_tokenSet_0(_tokenSet_0_data_,16);
|
|
const unsigned long GettextLexer::_tokenSet_1_data_[] = { 4294967295UL, 4294967291UL, 4026531839UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
|
|
const ANTLR_USE_NAMESPACE(antlr)BitSet GettextLexer::_tokenSet_1(_tokenSet_1_data_,16);
|
|
|