TCOD_lex_t * TCOD_lex_new( const char **_symbols, const char **_keywords, const char *simpleComment, const char *commentStart, const char *commentStop, const char *javadocCommentStart, const char *_stringDelim, int _flags) { TCOD_lex_t *lex=(TCOD_lex_t *)TCOD_lex_new_intern(); lex->flags = _flags; lex->last_javadoc_comment = (char *)calloc(sizeof(char),MAX_JAVADOC_COMMENT_SIZE ); if ( _symbols ) { while ( _symbols[ lex->nb_symbols ] ) { if ( strlen( _symbols[ lex->nb_symbols ] ) >= TCOD_LEX_SYMBOL_SIZE ) { static char msg[255]; sprintf (msg, "symbol '%s' too long (max size %d)", _symbols[ lex->nb_symbols ], TCOD_LEX_SYMBOL_SIZE ); TCOD_last_error=strdup(msg); return NULL; } strcpy(lex->symbols[ lex->nb_symbols ], _symbols[ lex->nb_symbols ] ); lex->nb_symbols++; } } if ( _keywords ) { while ( _keywords[ lex->nb_keywords ] ) { if ( strlen( _keywords[ lex->nb_keywords ] ) >= TCOD_LEX_KEYWORD_SIZE ) { static char msg[255]; sprintf(msg,"keyword '%s' too long (max size %d)", _keywords[ lex->nb_keywords ], TCOD_LEX_KEYWORD_SIZE); TCOD_last_error=strdup(msg); return NULL; } if ( lex->flags & TCOD_LEX_FLAG_NOCASE ) { char *ptr = (char *)_keywords[ lex->nb_keywords ]; while ( *ptr ) { *ptr = (char)toupper( *ptr); ptr++; } } strcpy(lex->keywords[ lex->nb_keywords ], _keywords[ lex->nb_keywords ] ); lex->nb_keywords++; } } lex->simpleCmt = simpleComment; lex->cmtStart = commentStart; lex->cmtStop = commentStop; lex->javadocCmtStart = javadocCommentStart; lex->stringDelim = _stringDelim; lex->lastStringDelim='\0'; lex->tok = (char *)calloc(sizeof(char),256); lex->toklen=256; return (TCOD_lex_t *)lex; }
TCODLex::TCODLex() { data= (void *)TCOD_lex_new_intern(); }