# LEXER GENERATOR configuration file
# ---------------------------------------
# Place *first* the generic configuration
# then list your grammar.

PACKAGE:          com.my.lexer
LEXER_NAME:       MyLexer
OUTPUT_DIR:       output

TOKENS:

BOOLEAN_LIT = string(boolean)
FALSE_LIT   = string(false)
BOMB_LIT    = string(bomb)
BONSAI_LIT  = string(bonsai)
HELLO_LIT   = string(hello)