make LexerAction an abstract base class