1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
header {
#include "antlr/TokenStreamSelector.hpp"
}
options {
language="Cpp";
}
class DemoJavaLexer extends Lexer;
options {
k=2;
importVocab = Common;
exportVocab = Java;
}
tokens {
INT="int";
}
{
private:
ANTLR_USE_NAMESPACE(antlr)TokenStreamSelector* selector;
public:
void setSelector(ANTLR_USE_NAMESPACE(antlr)TokenStreamSelector* selector_) {
selector=selector_;
}
}
JAVADOC_OPEN
: "/**" {selector->push("doclexer");}
;
ID : ('a'..'z')+ ;
SEMI: ';' ;
WS_ : ( ' '
| '\t'
| '\f'
// handle newlines
| ( "\r\n" // Evil DOS
| '\r' // Macintosh
| '\n' // Unix (the right way)
)
{ newline(); }
)
{ $setType(ANTLR_USE_NAMESPACE(antlr)Token::SKIP); }
;
|