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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
// This file is part of PyANTLR. See LICENSE.txt for license
// details..........Copyright (C) Wolfgang Haefelinger, 2004.
//
// $Id$
header "Lexer.__main__" {
// main - create and run lexer from stdin
if __name__ == "__main__":
import sys
import antlr
import columns_l
// create lexer - shall read from stdin
L = columns_l.Lexer()
try:
token = L.nextToken()
while not token.isEOF():
print token
token = L.nextToken()
except antlr.TokenStreamException, e:
print "error: exception caught while lexing:", e
// end of main
}
options {
language=Python;
}
// not working: Lexer not seen at this place ..
// {
// if __name__ == "__main__":
// import columns_l
// Lexer.main()
// }
class columns_l extends Lexer;
{
done = False;
def uponEOF(self):
done=True
def tab(self):
t = 4;
c = self.getColumn();
nc = (((c-1)/t)+1)*t+1;
self.setColumn( nc )
def main():
lexer = columns_l.Lexer()
while not Lexer.done:
t = lexer.nextToken();
print "Token: ",t
main = staticmethod(main)
}
INT : ('0'..'9')+ ;
ID : ('a'..'z')+ ;
WS : (' '|'\t'|'\n'{ self.newline();})+ {$setType(SKIP)}
;
|