ometa Flan { id = letter:t letterOrDigit+:ts -> (t+ts.join('')), nonletter = ('!' | '$' | '%' | '^' | '&' | '*' | '+' | '~' | '<' | '>' | '=' | '?' | '#' | ',' | '.' | '/'):s -> s, declaretoken = '@' (id | nonletter+):t -> t } Flan.matchAll('@hello', 'declaretoken')