...
Code Block |
---|
$ cat T.g
lexer grammar T;
options { language = Perl5; }
ZERO: '0';
ONE: '1';
|
Code Block |
---|
$ cat T.tokens
Tokens=6
ZERO=4
ONE=5
|
...
Code Block |
---|
$ perl t.pl
type: 4
text: 0
type: 5
text: 1
type: 4
text: 0
|
2007-06-13
+ More interesting tokens like identifier and integers are now recognized.
+ Added error handling.
Code Block |
---|
lexer grammar T2;
options { language = Perl5; }
ID : ('a'..'z'|'A'..'Z')+ ;
INT : '0'..'9'+ ;
NEWLINE:'\r'? '\n' ;
WS : (' '|'\t')+ ;
|
Code Block |
---|
INT=5
WS=7
Tokens=8
ID=4
NEWLINE=6
|
Code Block |
---|
#!/usr/bin/perl
use ANTLR::Runtime::ANTLRStringStream;
use T2Lexer;
use strict;
use warnings;
my $input = ANTLR::Runtime::ANTLRStringStream->new("Hello World!\n42\n");
my $lexer = T2Lexer->new($input);
while (1) {
my $token = $lexer->next_token();
last if $token->get_type() == $T2Lexer::EOF;
print "type: ", $token->get_type(), "\n";
print "text: ", $token->get_text(), "\n";
print "\n";
}
|
Code Block |
---|
type: 4
text: Hello
type: 7
text:
type: 4
text: World
line 1:12 no viable alternative at character '!'
type: 6
text:
type: 5
text: 42
type: 6
text:
|
Note the "no viable alternative" error message for the unrecognized '!'.
Author
Ronald Blaschke (ron at rblasch org)