文章标题
来源:互联网 发布:学日语的软件 编辑:程序博客网 时间:2024/06/05 23:50
int get_token(){ int c, len, i, max_word_len, state, token, flag, pause_line, pause_block; state = START; pause_line = 0; pause_block = 0; while( state != OVER ) { if( state == PAUSE ) { if( pause_line ) { pause_line = 0; pos = input_len; state = START; } if( pause_block ) { while( (c = get_next_word(&pos)) != FINISH ) { if( c == '*' && input_line[pos] == '/' ) { input_line[pos++]; break; } } if( c == FINISH ) return FINISH; pause_block = 0; state = START; } } c = get_next_word(&pos); if( c == FINISH ) return FINISH; if( c == ' ' || c == '\t' || c == '\n' ) continue; if( isalpha( c ) || c == '_' ) { i = 0; max_word_len = 0; do { save_word[i++] = c; c = input_line[pos++]; max_word_len++; }while( isdigit( c ) || c == '_' || isalpha( c ) ); pos--; if( max_word_len >= 20 ) { fprintf( stderr, "word's max len is 20"); // do a error deal function exit( 0 ); } save_word[i] = '\0'; token = TOK_ID; state = OVER; } else if( isdigit( c ) ) { i = 0; if( flag == '-' ) save_word[i++] = '-'; while( isdigit( c ) ) { save_word[i++] = c; c = input_line[pos++]; } pos--; save_word[i] = '\0'; save_num = atoi( save_word ); token = TOK_NUM; state = OVER; flag = 0; } else { state = OVER; switch( c ) { case '+': token = TOK_PLUS; break; case '-': token = TOK_MINUS; break; case '*': token = TOK_MUL; break; case '/': if( input_line[pos] == '/' ) { input_line[pos++]; state = PAUSE; pause_line = 1; } else if( input_line[pos] == '*' ) { input_line[pos++]; state = PAUSE; pause_block = 1; } else { token = TOK_DIV; } break; case '=': if( input_line[pos] == '=' ) { input_line[pos++]; token = TOK_EQ; } else token = TOK_ASSIGN; break; case '>': if( input_line[pos] == '=' ) { input_line[pos++]; token = TOK_GE; } else token = TOK_GT; break; case '<': if( input_line[pos] == '=' ) { input_line[pos++]; token = TOK_LE; } else token = TOK_LT; break; case '!': if( input_line[pos] == '=' ) { input_line[pos++]; token = TOK_NE; } else token = TOK_NOT; break; case '&': if( input_line[pos] == '&' ) { input_line[pos++]; token = TOK_ANDAND; } else token = TOK_AND; break; case '|': if( input_line[pos] == '|' ) { input_line[pos++]; token = TOK_OROR; } else token = TOK_OR; break; case ',': token = TOK_COMMA; break; case ':'://no gonna use 'condition ? true : false' token = TOK_COLON; break; case ';': token = TOK_SEMI; break; case 39: // ' token = TOK_SQUTOA; break; case 34: // " token = TOK_DQUTOA; break; case '(': token = TOK_LPAREN; break; case ')': token = TOK_RPAREN; break; case '[': token = TOK_LSQUARE; break; case ']': token = TOK_RSQUARE; break; case '{': token = TOK_LBRACKET; break; case '}': token = TOK_RBRACKET; break; } } } if( token == TOK_ID ) { int t; if( (t = is_resever_word(save_word)) != -1 ) token = t; } return token;}
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 最近,做一个比较好玩的项目:疯狂梦想家
- 在Node.js环境下使用Express创建Web项目
- KiFastCallEntry() 机制分析
- WEB端应该使用DataTable/DataSet吗?
- Android之ActionBar、Tabs、Fragment、ViewPager实现标签页切换并缓存页面
- 文章标题
- Android代码优化技术
- android数据库操作之cursor
- csu 1601 War(并查集)
- 枚举数组
- 哈哈哈了啊
- Path类和File类
- ASIHTTPRequest 详解, http 请求终结者
- cocos2d-x 3.4之排行榜的实现