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
|
options {
language="Cpp";
}
{
#include <iostream>
}
class DataParser extends Parser;
file: ( sh:SHORT {std::cout << sh->getText() << std::endl;}
| st:STRING {std::cout << "\"" << st->getText() << "\"" << std::endl;}
)+
;
{
#include "antlr/String.hpp"
}
class DataLexer extends Lexer;
options {
charVocabulary = '\u0000'..'\u00FF';
}
SHORT
: '\0' high:. lo:.
{
ANTLR_USING_NAMESPACE(antlr) // to pick up operator+
int v = (((int)high)<<8) + lo;
$setText(std::string("")+v);
}
;
STRING
: '\1'! // begin string (discard)
( ~'\2' )*
'\2'! // end string (discard)
;
|