lexer grammar HooLexer; IDENTIFIER: Letter LetterOrDigit*; fragment DIGIT: [0-9]; DECIMAL_LITERAL: '0' | ('+' | '-')? [1-9] [0-9]*; FLOAT_LITERAL: ('+' | '-')? Digits+ '.' Digits+ ( [eE] [+-]? Digits+ )?; BOOL_LITERAL: 'true' | 'false'; CHAR_LITERAL: '\'' (~['\\\r\n] | EscapeSequence) '\''; STRING_LITERAL: '"' (~["\\\r\n] | EscapeSequence)* '"'; TEXT_BLOCK: '"""' [ \t]* [\r\n] (. | EscapeSequence)*? '"""'; NULL_LITERAL: 'null'; WS: [ \t\r\n\u000C]+ -> channel(HIDDEN); COMMENT: '/*' .*? '*/' -> channel(HIDDEN); LINE_COMMENT: '//' ~[\r\n]* -> channel(HIDDEN); fragment EscapeSequence: '\\' 'u005c'? [btnfr"'\\] | '\\' 'u005c'? ([0-3]? [0-7])? [0-7] | '\\' 'u'+ HexDigit HexDigit HexDigit HexDigit; fragment HexDigit: [0-9a-fA-F]; fragment Digits: [0-9]; fragment LetterOrDigit: Letter | [0-9]; fragment Letter: [a-zA-Z$_] | ~[\u0000-\u007F\uD800-\uDBFF] | [\uD800-\uDBFF] [\uDC00-\uDFFF];