]>
git.saurik.com Git - apple/security.git/blob - OSX/libsecurity_codesigning/lib/RequirementLexer.cpp
1 /* $ANTLR 2.7.7 (20121221): "requirements.grammar" -> "RequirementLexer.cpp"$ */
2 #include "RequirementLexer.hpp"
3 #include <antlr/CharBuffer.hpp>
4 #include <antlr/TokenStreamException.hpp>
5 #include <antlr/TokenStreamIOException.hpp>
6 #include <antlr/TokenStreamRecognitionException.hpp>
7 #include <antlr/CharStreamException.hpp>
8 #include <antlr/CharStreamIOException.hpp>
9 #include <antlr/NoViableAltForCharException.hpp>
12 #include "requirement.h"
14 #include "csutilities.h"
15 #include <libDER/libDER.h>
16 #include <libDER/asn1Types.h>
17 #include <security_utilities/cfutilities.h>
18 #include <security_utilities/hashing.h>
19 #include <security_cdsa_utilities/cssmdata.h> // OID coding
20 #include <Security/SecCertificate.h>
21 using namespace CodeSigning
;
22 typedef Requirement::Maker Maker
;
26 /* Decode a choice of UTCTime or GeneralizedTime to a CFAbsoluteTime. Return
27 an absoluteTime if the date was valid and properly decoded. Return
28 NULL_TIME otherwise. */
29 CFAbsoluteTime
SecAbsoluteTimeFromDateContent(DERTag tag
, const uint8_t *bytes
,
35 ANTLR_BEGIN_NAMESPACE(Security_CodeSigning
)
36 RequirementLexer::RequirementLexer(std::istream
& in
)
37 : antlr::CharScanner(new antlr::CharBuffer(in
),true)
42 RequirementLexer::RequirementLexer(antlr::InputBuffer
& ib
)
43 : antlr::CharScanner(ib
,true)
48 RequirementLexer::RequirementLexer(const antlr::LexerSharedInputState
& state
)
49 : antlr::CharScanner(state
,true)
54 void RequirementLexer::initLiterals()
56 literals
["certificate"] = 27;
57 literals
["always"] = 15;
59 literals
["guest"] = 5;
60 literals
["cdhash"] = 20;
61 literals
["entitlement"] = 31;
62 literals
["library"] = 8;
63 literals
["timestamp"] = 53;
64 literals
["legacy"] = 23;
65 literals
["never"] = 17;
66 literals
["cert"] = 28;
67 literals
["plugin"] = 9;
68 literals
["absent"] = 33;
70 literals
["leaf"] = 45;
71 literals
["info"] = 30;
72 literals
["designated"] = 7;
73 literals
["apple"] = 25;
74 literals
["trusted"] = 29;
75 literals
["true"] = 16;
76 literals
["notarized"] = 22;
78 literals
["root"] = 46;
79 literals
["platform"] = 21;
80 literals
["anchor"] = 24;
81 literals
["false"] = 18;
82 literals
["generic"] = 26;
83 literals
["identifier"] = 19;
84 literals
["exists"] = 32;
87 antlr::RefToken
RequirementLexer::nextToken()
89 antlr::RefToken theRetToken
;
91 antlr::RefToken theRetToken
;
92 int _ttype
= antlr::Token::INVALID_TYPE
;
94 try { // for lexical and char stream error handling
96 case 0x22 /* '\"' */ :
99 theRetToken
=_returnToken
;
102 case 0x3b /* ';' */ :
105 theRetToken
=_returnToken
;
108 case 0x28 /* '(' */ :
111 theRetToken
=_returnToken
;
114 case 0x29 /* ')' */ :
117 theRetToken
=_returnToken
;
120 case 0x5b /* '[' */ :
123 theRetToken
=_returnToken
;
126 case 0x5d /* ']' */ :
129 theRetToken
=_returnToken
;
132 case 0x2c /* ',' */ :
135 theRetToken
=_returnToken
;
138 case 0x7e /* '~' */ :
141 theRetToken
=_returnToken
;
144 case 0x2d /* '-' */ :
147 theRetToken
=_returnToken
;
150 case 0x21 /* '!' */ :
153 theRetToken
=_returnToken
;
156 case 0x2a /* '*' */ :
159 theRetToken
=_returnToken
;
162 case 0x9 /* '\t' */ :
163 case 0xa /* '\n' */ :
164 case 0x20 /* ' ' */ :
167 theRetToken
=_returnToken
;
170 case 0x23 /* '#' */ :
173 theRetToken
=_returnToken
;
177 if ((LA(1) == 0x2f /* '/' */ ) && (_tokenSet_0
.member(LA(2)))) {
179 theRetToken
=_returnToken
;
181 else if ((LA(1) == 0x48 /* 'H' */ ) && (LA(2) == 0x22 /* '\"' */ )) {
183 theRetToken
=_returnToken
;
185 else if ((LA(1) == 0x30 /* '0' */ ) && (LA(2) == 0x78 /* 'x' */ )) {
187 theRetToken
=_returnToken
;
189 else if ((LA(1) == 0x3d /* '=' */ ) && (LA(2) == 0x3e /* '>' */ )) {
191 theRetToken
=_returnToken
;
193 else if ((LA(1) == 0x3c /* '<' */ ) && (LA(2) == 0x3d /* '=' */ )) {
195 theRetToken
=_returnToken
;
197 else if ((LA(1) == 0x3e /* '>' */ ) && (LA(2) == 0x3d /* '=' */ )) {
199 theRetToken
=_returnToken
;
201 else if ((LA(1) == 0x3d /* '=' */ ) && (LA(2) == 0x3d /* '=' */ )) {
203 theRetToken
=_returnToken
;
205 else if ((LA(1) == 0x2f /* '/' */ ) && (LA(2) == 0x2a /* '*' */ )) {
207 theRetToken
=_returnToken
;
209 else if ((LA(1) == 0x2f /* '/' */ ) && (LA(2) == 0x2f /* '/' */ )) {
211 theRetToken
=_returnToken
;
213 else if ((_tokenSet_0
.member(LA(1))) && (true)) {
215 theRetToken
=_returnToken
;
217 else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true)) {
219 theRetToken
=_returnToken
;
221 else if ((LA(1) == 0x3c /* '<' */ ) && (true)) {
223 theRetToken
=_returnToken
;
225 else if ((LA(1) == 0x3e /* '>' */ ) && (true)) {
227 theRetToken
=_returnToken
;
229 else if ((LA(1) == 0x3d /* '=' */ ) && (true)) {
231 theRetToken
=_returnToken
;
237 _returnToken
= makeToken(antlr::Token::EOF_TYPE
);
239 else {throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
243 goto tryAgain
; // found SKIP token
245 _ttype
= _returnToken
->getType();
246 _returnToken
->setType(_ttype
);
249 catch (antlr::RecognitionException
& e
) {
250 throw antlr::TokenStreamRecognitionException(e
);
252 catch (antlr::CharStreamIOException
& csie
) {
253 throw antlr::TokenStreamIOException(csie
.io
);
255 catch (antlr::CharStreamException
& cse
) {
256 throw antlr::TokenStreamException(cse
.getMessage());
262 void RequirementLexer::mIDENT(bool _createToken
) {
263 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
265 std::string::size_type _saveIndex
;
269 case 0x41 /* 'A' */ :
270 case 0x42 /* 'B' */ :
271 case 0x43 /* 'C' */ :
272 case 0x44 /* 'D' */ :
273 case 0x45 /* 'E' */ :
274 case 0x46 /* 'F' */ :
275 case 0x47 /* 'G' */ :
276 case 0x48 /* 'H' */ :
277 case 0x49 /* 'I' */ :
278 case 0x4a /* 'J' */ :
279 case 0x4b /* 'K' */ :
280 case 0x4c /* 'L' */ :
281 case 0x4d /* 'M' */ :
282 case 0x4e /* 'N' */ :
283 case 0x4f /* 'O' */ :
284 case 0x50 /* 'P' */ :
285 case 0x51 /* 'Q' */ :
286 case 0x52 /* 'R' */ :
287 case 0x53 /* 'S' */ :
288 case 0x54 /* 'T' */ :
289 case 0x55 /* 'U' */ :
290 case 0x56 /* 'V' */ :
291 case 0x57 /* 'W' */ :
292 case 0x58 /* 'X' */ :
293 case 0x59 /* 'Y' */ :
294 case 0x5a /* 'Z' */ :
299 case 0x61 /* 'a' */ :
300 case 0x62 /* 'b' */ :
301 case 0x63 /* 'c' */ :
302 case 0x64 /* 'd' */ :
303 case 0x65 /* 'e' */ :
304 case 0x66 /* 'f' */ :
305 case 0x67 /* 'g' */ :
306 case 0x68 /* 'h' */ :
307 case 0x69 /* 'i' */ :
308 case 0x6a /* 'j' */ :
309 case 0x6b /* 'k' */ :
310 case 0x6c /* 'l' */ :
311 case 0x6d /* 'm' */ :
312 case 0x6e /* 'n' */ :
313 case 0x6f /* 'o' */ :
314 case 0x70 /* 'p' */ :
315 case 0x71 /* 'q' */ :
316 case 0x72 /* 'r' */ :
317 case 0x73 /* 's' */ :
318 case 0x74 /* 't' */ :
319 case 0x75 /* 'u' */ :
320 case 0x76 /* 'v' */ :
321 case 0x77 /* 'w' */ :
322 case 0x78 /* 'x' */ :
323 case 0x79 /* 'y' */ :
324 case 0x7a /* 'z' */ :
331 throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
338 case 0x41 /* 'A' */ :
339 case 0x42 /* 'B' */ :
340 case 0x43 /* 'C' */ :
341 case 0x44 /* 'D' */ :
342 case 0x45 /* 'E' */ :
343 case 0x46 /* 'F' */ :
344 case 0x47 /* 'G' */ :
345 case 0x48 /* 'H' */ :
346 case 0x49 /* 'I' */ :
347 case 0x4a /* 'J' */ :
348 case 0x4b /* 'K' */ :
349 case 0x4c /* 'L' */ :
350 case 0x4d /* 'M' */ :
351 case 0x4e /* 'N' */ :
352 case 0x4f /* 'O' */ :
353 case 0x50 /* 'P' */ :
354 case 0x51 /* 'Q' */ :
355 case 0x52 /* 'R' */ :
356 case 0x53 /* 'S' */ :
357 case 0x54 /* 'T' */ :
358 case 0x55 /* 'U' */ :
359 case 0x56 /* 'V' */ :
360 case 0x57 /* 'W' */ :
361 case 0x58 /* 'X' */ :
362 case 0x59 /* 'Y' */ :
363 case 0x5a /* 'Z' */ :
368 case 0x61 /* 'a' */ :
369 case 0x62 /* 'b' */ :
370 case 0x63 /* 'c' */ :
371 case 0x64 /* 'd' */ :
372 case 0x65 /* 'e' */ :
373 case 0x66 /* 'f' */ :
374 case 0x67 /* 'g' */ :
375 case 0x68 /* 'h' */ :
376 case 0x69 /* 'i' */ :
377 case 0x6a /* 'j' */ :
378 case 0x6b /* 'k' */ :
379 case 0x6c /* 'l' */ :
380 case 0x6d /* 'm' */ :
381 case 0x6e /* 'n' */ :
382 case 0x6f /* 'o' */ :
383 case 0x70 /* 'p' */ :
384 case 0x71 /* 'q' */ :
385 case 0x72 /* 'r' */ :
386 case 0x73 /* 's' */ :
387 case 0x74 /* 't' */ :
388 case 0x75 /* 'u' */ :
389 case 0x76 /* 'v' */ :
390 case 0x77 /* 'w' */ :
391 case 0x78 /* 'x' */ :
392 case 0x79 /* 'y' */ :
393 case 0x7a /* 'z' */ :
398 case 0x30 /* '0' */ :
399 case 0x31 /* '1' */ :
400 case 0x32 /* '2' */ :
401 case 0x33 /* '3' */ :
402 case 0x34 /* '4' */ :
403 case 0x35 /* '5' */ :
404 case 0x36 /* '6' */ :
405 case 0x37 /* '7' */ :
406 case 0x38 /* '8' */ :
407 case 0x39 /* '9' */ :
420 _ttype
= testLiteralsTable(text
.substr(_begin
, text
.length()-_begin
),_ttype
);
421 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
422 _token
= makeToken(_ttype
);
423 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
425 _returnToken
= _token
;
429 void RequirementLexer::mDOTKEY(bool _createToken
) {
430 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
432 std::string::size_type _saveIndex
;
437 if ((LA(1) == 0x2e /* '.' */ )) {
441 case 0x41 /* 'A' */ :
442 case 0x42 /* 'B' */ :
443 case 0x43 /* 'C' */ :
444 case 0x44 /* 'D' */ :
445 case 0x45 /* 'E' */ :
446 case 0x46 /* 'F' */ :
447 case 0x47 /* 'G' */ :
448 case 0x48 /* 'H' */ :
449 case 0x49 /* 'I' */ :
450 case 0x4a /* 'J' */ :
451 case 0x4b /* 'K' */ :
452 case 0x4c /* 'L' */ :
453 case 0x4d /* 'M' */ :
454 case 0x4e /* 'N' */ :
455 case 0x4f /* 'O' */ :
456 case 0x50 /* 'P' */ :
457 case 0x51 /* 'Q' */ :
458 case 0x52 /* 'R' */ :
459 case 0x53 /* 'S' */ :
460 case 0x54 /* 'T' */ :
461 case 0x55 /* 'U' */ :
462 case 0x56 /* 'V' */ :
463 case 0x57 /* 'W' */ :
464 case 0x58 /* 'X' */ :
465 case 0x59 /* 'Y' */ :
466 case 0x5a /* 'Z' */ :
467 case 0x61 /* 'a' */ :
468 case 0x62 /* 'b' */ :
469 case 0x63 /* 'c' */ :
470 case 0x64 /* 'd' */ :
471 case 0x65 /* 'e' */ :
472 case 0x66 /* 'f' */ :
473 case 0x67 /* 'g' */ :
474 case 0x68 /* 'h' */ :
475 case 0x69 /* 'i' */ :
476 case 0x6a /* 'j' */ :
477 case 0x6b /* 'k' */ :
478 case 0x6c /* 'l' */ :
479 case 0x6d /* 'm' */ :
480 case 0x6e /* 'n' */ :
481 case 0x6f /* 'o' */ :
482 case 0x70 /* 'p' */ :
483 case 0x71 /* 'q' */ :
484 case 0x72 /* 'r' */ :
485 case 0x73 /* 's' */ :
486 case 0x74 /* 't' */ :
487 case 0x75 /* 'u' */ :
488 case 0x76 /* 'v' */ :
489 case 0x77 /* 'w' */ :
490 case 0x78 /* 'x' */ :
491 case 0x79 /* 'y' */ :
492 case 0x7a /* 'z' */ :
497 case 0x30 /* '0' */ :
498 case 0x31 /* '1' */ :
499 case 0x32 /* '2' */ :
500 case 0x33 /* '3' */ :
501 case 0x34 /* '4' */ :
502 case 0x35 /* '5' */ :
503 case 0x36 /* '6' */ :
504 case 0x37 /* '7' */ :
505 case 0x38 /* '8' */ :
506 case 0x39 /* '9' */ :
513 throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
525 _ttype
= testLiteralsTable(_ttype
);
526 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
527 _token
= makeToken(_ttype
);
528 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
530 _returnToken
= _token
;
534 void RequirementLexer::mINTEGER(bool _createToken
) {
535 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
537 std::string::size_type _saveIndex
;
542 if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
546 if ( _cnt71
>=1 ) { goto _loop71
; } else {throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
553 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
554 _token
= makeToken(_ttype
);
555 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
557 _returnToken
= _token
;
561 void RequirementLexer::mPATHNAME(bool _createToken
) {
562 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
564 std::string::size_type _saveIndex
;
571 if ((LA(1) == 0x2f /* '/' */ )) {
576 if ( _cnt56
>=1 ) { goto _loop56
; } else {throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
583 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
584 _token
= makeToken(_ttype
);
585 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
587 _returnToken
= _token
;
591 void RequirementLexer::mHASHCONSTANT(bool _createToken
) {
592 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
593 _ttype
= HASHCONSTANT
;
594 std::string::size_type _saveIndex
;
596 _saveIndex
= text
.length();
597 match('H' /* charlit */ );
598 text
.erase(_saveIndex
);
599 _saveIndex
= text
.length();
600 match('\"' /* charlit */ );
601 text
.erase(_saveIndex
);
605 if ((_tokenSet_1
.member(LA(1)))) {
609 if ( _cnt59
>=1 ) { goto _loop59
; } else {throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
616 _saveIndex
= text
.length();
617 match('\"' /* charlit */ );
618 text
.erase(_saveIndex
);
619 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
620 _token
= makeToken(_ttype
);
621 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
623 _returnToken
= _token
;
627 void RequirementLexer::mHEX(bool _createToken
) {
628 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
630 std::string::size_type _saveIndex
;
633 case 0x30 /* '0' */ :
634 case 0x31 /* '1' */ :
635 case 0x32 /* '2' */ :
636 case 0x33 /* '3' */ :
637 case 0x34 /* '4' */ :
638 case 0x35 /* '5' */ :
639 case 0x36 /* '6' */ :
640 case 0x37 /* '7' */ :
641 case 0x38 /* '8' */ :
642 case 0x39 /* '9' */ :
647 case 0x61 /* 'a' */ :
648 case 0x62 /* 'b' */ :
649 case 0x63 /* 'c' */ :
650 case 0x64 /* 'd' */ :
651 case 0x65 /* 'e' */ :
652 case 0x66 /* 'f' */ :
657 case 0x41 /* 'A' */ :
658 case 0x42 /* 'B' */ :
659 case 0x43 /* 'C' */ :
660 case 0x44 /* 'D' */ :
661 case 0x45 /* 'E' */ :
662 case 0x46 /* 'F' */ :
669 throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
672 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
673 _token
= makeToken(_ttype
);
674 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
676 _returnToken
= _token
;
680 void RequirementLexer::mHEXCONSTANT(bool _createToken
) {
681 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
682 _ttype
= HEXCONSTANT
;
683 std::string::size_type _saveIndex
;
685 _saveIndex
= text
.length();
686 match('0' /* charlit */ );
687 text
.erase(_saveIndex
);
688 _saveIndex
= text
.length();
689 match('x' /* charlit */ );
690 text
.erase(_saveIndex
);
694 if ((_tokenSet_1
.member(LA(1)))) {
698 if ( _cnt62
>=1 ) { goto _loop62
; } else {throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
705 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
706 _token
= makeToken(_ttype
);
707 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
709 _returnToken
= _token
;
713 void RequirementLexer::mSTRING(bool _createToken
) {
714 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
716 std::string::size_type _saveIndex
;
718 _saveIndex
= text
.length();
719 match('\"' /* charlit */ );
720 text
.erase(_saveIndex
);
723 if ((LA(1) == 0x5c /* '\\' */ )) {
725 _saveIndex
= text
.length();
726 match('\\' /* charlit */ );
727 text
.erase(_saveIndex
);
728 match('\"' /* charlit */ );
731 else if ((_tokenSet_2
.member(LA(1)))) {
745 _saveIndex
= text
.length();
746 match('\"' /* charlit */ );
747 text
.erase(_saveIndex
);
748 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
749 _token
= makeToken(_ttype
);
750 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
752 _returnToken
= _token
;
756 void RequirementLexer::mARROW(bool _createToken
) {
757 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
759 std::string::size_type _saveIndex
;
762 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
763 _token
= makeToken(_ttype
);
764 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
766 _returnToken
= _token
;
770 void RequirementLexer::mSEMI(bool _createToken
) {
771 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
773 std::string::size_type _saveIndex
;
775 match(';' /* charlit */ );
776 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
777 _token
= makeToken(_ttype
);
778 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
780 _returnToken
= _token
;
784 void RequirementLexer::mLPAREN(bool _createToken
) {
785 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
787 std::string::size_type _saveIndex
;
789 match('(' /* charlit */ );
790 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
791 _token
= makeToken(_ttype
);
792 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
794 _returnToken
= _token
;
798 void RequirementLexer::mRPAREN(bool _createToken
) {
799 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
801 std::string::size_type _saveIndex
;
803 match(')' /* charlit */ );
804 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
805 _token
= makeToken(_ttype
);
806 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
808 _returnToken
= _token
;
812 void RequirementLexer::mLBRACK(bool _createToken
) {
813 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
815 std::string::size_type _saveIndex
;
817 match('[' /* charlit */ );
818 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
819 _token
= makeToken(_ttype
);
820 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
822 _returnToken
= _token
;
826 void RequirementLexer::mRBRACK(bool _createToken
) {
827 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
829 std::string::size_type _saveIndex
;
831 match(']' /* charlit */ );
832 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
833 _token
= makeToken(_ttype
);
834 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
836 _returnToken
= _token
;
840 void RequirementLexer::mLESS(bool _createToken
) {
841 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
843 std::string::size_type _saveIndex
;
845 match('<' /* charlit */ );
846 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
847 _token
= makeToken(_ttype
);
848 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
850 _returnToken
= _token
;
854 void RequirementLexer::mGT(bool _createToken
) {
855 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
857 std::string::size_type _saveIndex
;
859 match('>' /* charlit */ );
860 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
861 _token
= makeToken(_ttype
);
862 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
864 _returnToken
= _token
;
868 void RequirementLexer::mLE(bool _createToken
) {
869 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
871 std::string::size_type _saveIndex
;
874 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
875 _token
= makeToken(_ttype
);
876 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
878 _returnToken
= _token
;
882 void RequirementLexer::mGE(bool _createToken
) {
883 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
885 std::string::size_type _saveIndex
;
888 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
889 _token
= makeToken(_ttype
);
890 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
892 _returnToken
= _token
;
896 void RequirementLexer::mCOMMA(bool _createToken
) {
897 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
899 std::string::size_type _saveIndex
;
901 match(',' /* charlit */ );
902 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
903 _token
= makeToken(_ttype
);
904 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
906 _returnToken
= _token
;
910 void RequirementLexer::mEQL(bool _createToken
) {
911 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
913 std::string::size_type _saveIndex
;
915 match('=' /* charlit */ );
916 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
917 _token
= makeToken(_ttype
);
918 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
920 _returnToken
= _token
;
924 void RequirementLexer::mEQQL(bool _createToken
) {
925 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
927 std::string::size_type _saveIndex
;
930 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
931 _token
= makeToken(_ttype
);
932 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
934 _returnToken
= _token
;
938 void RequirementLexer::mSUBS(bool _createToken
) {
939 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
941 std::string::size_type _saveIndex
;
943 match('~' /* charlit */ );
944 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
945 _token
= makeToken(_ttype
);
946 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
948 _returnToken
= _token
;
952 void RequirementLexer::mNEG(bool _createToken
) {
953 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
955 std::string::size_type _saveIndex
;
957 match('-' /* charlit */ );
958 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
959 _token
= makeToken(_ttype
);
960 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
962 _returnToken
= _token
;
966 void RequirementLexer::mNOT(bool _createToken
) {
967 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
969 std::string::size_type _saveIndex
;
971 match('!' /* charlit */ );
972 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
973 _token
= makeToken(_ttype
);
974 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
976 _returnToken
= _token
;
980 void RequirementLexer::mSTAR(bool _createToken
) {
981 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
983 std::string::size_type _saveIndex
;
985 match('*' /* charlit */ );
986 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
987 _token
= makeToken(_ttype
);
988 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
990 _returnToken
= _token
;
994 void RequirementLexer::mWS(bool _createToken
) {
995 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
997 std::string::size_type _saveIndex
;
1003 case 0x20 /* ' ' */ :
1005 match(' ' /* charlit */ );
1008 case 0xa /* '\n' */ :
1010 match('\n' /* charlit */ );
1014 case 0x9 /* '\t' */ :
1016 match('\t' /* charlit */ );
1021 if ( _cnt92
>=1 ) { goto _loop92
; } else {throw antlr::NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1028 _ttype
= antlr::Token::SKIP
;
1029 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
1030 _token
= makeToken(_ttype
);
1031 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
1033 _returnToken
= _token
;
1037 void RequirementLexer::mSHELLCOMMENT(bool _createToken
) {
1038 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
1039 _ttype
= SHELLCOMMENT
;
1040 std::string::size_type _saveIndex
;
1042 match('#' /* charlit */ );
1045 if ((_tokenSet_3
.member(LA(1)))) {
1046 matchNot('\n' /* charlit */ );
1055 _ttype
= antlr::Token::SKIP
;
1056 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
1057 _token
= makeToken(_ttype
);
1058 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
1060 _returnToken
= _token
;
1064 void RequirementLexer::mC_COMMENT(bool _createToken
) {
1065 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
1067 std::string::size_type _saveIndex
;
1072 if ((LA(1) == 0x2a /* '*' */ ) && (_tokenSet_4
.member(LA(2)))) {
1074 match('*' /* charlit */ );
1076 matchNot('/' /* charlit */ );
1080 else if ((_tokenSet_5
.member(LA(1)))) {
1082 matchNot('*' /* charlit */ );
1093 _ttype
= antlr::Token::SKIP
;
1094 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
1095 _token
= makeToken(_ttype
);
1096 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
1098 _returnToken
= _token
;
1102 void RequirementLexer::mCPP_COMMENT(bool _createToken
) {
1103 int _ttype
; antlr::RefToken _token
; std::string::size_type _begin
= text
.length();
1104 _ttype
= CPP_COMMENT
;
1105 std::string::size_type _saveIndex
;
1110 if ((_tokenSet_3
.member(LA(1)))) {
1111 matchNot('\n' /* charlit */ );
1120 _ttype
= antlr::Token::SKIP
;
1121 if ( _createToken
&& _token
==antlr::nullToken
&& _ttype
!=antlr::Token::SKIP
) {
1122 _token
= makeToken(_ttype
);
1123 _token
->setText(text
.substr(_begin
, text
.length()-_begin
));
1125 _returnToken
= _token
;
1130 const unsigned long RequirementLexer::_tokenSet_0_data_
[] = { 0UL, 0UL, 134217726UL, 134217726UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1131 const antlr::BitSet
RequirementLexer::_tokenSet_0(_tokenSet_0_data_
,10);
1132 const unsigned long RequirementLexer::_tokenSet_1_data_
[] = { 0UL, 67043328UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1133 // 0 1 2 3 4 5 6 7 8 9
1134 const antlr::BitSet
RequirementLexer::_tokenSet_1(_tokenSet_1_data_
,10);
1135 const unsigned long RequirementLexer::_tokenSet_2_data_
[] = { 4294967295UL, 4294967291UL, 4026531839UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967292UL, 2097151UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1136 // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10
1137 // 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e
1138 // 0x1f ! # $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < =
1139 const antlr::BitSet
RequirementLexer::_tokenSet_2(_tokenSet_2_data_
,16);
1140 const unsigned long RequirementLexer::_tokenSet_3_data_
[] = { 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967292UL, 2097151UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1141 // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xd 0xe 0xf 0x10 0x11
1142 // 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f
1143 // ! \" # $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < =
1144 const antlr::BitSet
RequirementLexer::_tokenSet_3(_tokenSet_3_data_
,16);
1145 const unsigned long RequirementLexer::_tokenSet_4_data_
[] = { 4294967295UL, 4294934527UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967292UL, 2097151UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1146 // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10
1147 // 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e
1148 // 0x1f ! \" # $ % & \' ( ) * + , - . 0 1 2 3 4 5 6 7 8 9 : ; < =
1149 const antlr::BitSet
RequirementLexer::_tokenSet_4(_tokenSet_4_data_
,16);
1150 const unsigned long RequirementLexer::_tokenSet_5_data_
[] = { 4294967295UL, 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967292UL, 2097151UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1151 // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10
1152 // 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e
1153 // 0x1f ! \" # $ % & \' ( ) + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < =
1154 const antlr::BitSet
RequirementLexer::_tokenSet_5(_tokenSet_5_data_
,16);