/******************************************************************************* * Lexer Definitions ******************************************************************************/ KAbstractObjParserPrivate::token_id KAbstractObjParserPrivate::lexToken(token_type &token) { // Skip unimplemented features switch (currToken()) { case PT_GROUP: case PT_OBJECT: case PT_SMOOTHING: case PT_MATERIAL: nextLine(); break; } // Tokenization for (;;) { switch (nextChar()) { case KAbstractReader::EndOfFile: return PT_EOF; case WHITESPACE: continue; case '\n': return PT_ENDSTATEMENT; case '#': nextLine(); return PT_ENDSTATEMENT; case '/': return PT_SEPARATOR; case '.': default: if (Karma::isNumeric(currChar())) return lexTokenInteger(token); else if (Karma::isAlpha(currChar())) return lexTokenIdentifier(token); else LEX_ERROR("Unexpected character at (%d:%d) '%c'!\n", (int)currLineCount(), (int)currCharCount(), (char)currChar()); } } }
static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) { START_LEXER(); switch (lex_state) { case 1: START_TOKEN(); if ((lookahead == '\t') || (lookahead == ' ')) ADVANCE(1); if (lookahead == '\n') ADVANCE(2); if (lookahead == '\r') ADVANCE(3); if (lookahead == '\"') ADVANCE(4); if ('0' <= lookahead && lookahead <= '9') ADVANCE(11); LEX_ERROR(); case 2: START_TOKEN(); ACCEPT_TOKEN(anon_sym_LF); case 3: START_TOKEN(); ACCEPT_TOKEN(anon_sym_CR); case 4: if (lookahead == 'h') ADVANCE(5); LEX_ERROR(); case 5: if (lookahead == 'e') ADVANCE(6); LEX_ERROR(); case 6: if (lookahead == 'l') ADVANCE(7); LEX_ERROR(); case 7: if (lookahead == 'l') ADVANCE(8); LEX_ERROR(); case 8: if (lookahead == 'o') ADVANCE(9); LEX_ERROR(); case 9: if (lookahead == '\"') ADVANCE(10); LEX_ERROR(); case 10: ACCEPT_TOKEN(anon_sym_DQUOTEhello_DQUOTE); case 11: ACCEPT_TOKEN(aux_sym_SLASH_BSLASHd_SLASH); case 12: START_TOKEN(); if (lookahead == 0) ADVANCE(13); if ((lookahead == '\t') || (lookahead == '\n') || (lookahead == '\r') || (lookahead == ' ')) ADVANCE(12); LEX_ERROR(); case 13: ACCEPT_TOKEN(ts_builtin_sym_end); case 14: START_TOKEN(); if (lookahead == 0) ADVANCE(13); if ((lookahead == '\t') || (lookahead == ' ')) ADVANCE(14); if (lookahead == '\n') ADVANCE(15); if (lookahead == '\r') ADVANCE(16); if (lookahead == '\"') ADVANCE(4); if ('0' <= lookahead && lookahead <= '9') ADVANCE(11); LEX_ERROR(); case 15: START_TOKEN(); ACCEPT_TOKEN(anon_sym_LF); case 16: START_TOKEN(); ACCEPT_TOKEN(anon_sym_CR); case ts_lex_state_error: START_TOKEN(); if (lookahead == 0) ADVANCE(13); if ((lookahead == '\t') || (lookahead == ' ')) ADVANCE(14); if (lookahead == '\n') ADVANCE(15); if (lookahead == '\r') ADVANCE(16); if (lookahead == '\"') ADVANCE(4); if ('0' <= lookahead && lookahead <= '9') ADVANCE(11); LEX_ERROR(); default: LEX_ERROR(); } }