static bool test3_fn(Tokenizer *tokz, int n, Token *toks) { if(n<=2) printf("test3_fn() %d \"%s\"\n", n, TOK_STRING_VAL(toks+1)); else printf("test3_fn() %d \"%s\" %ld\n", n, TOK_STRING_VAL(toks+1), TOK_LONG_VAL(toks+2)); return TRUE; }
void tok_free(Token *tok) { if(TOK_IS_STRING(tok) || TOK_IS_IDENT(tok) || TOK_IS_COMMENT(tok)){ if(TOK_STRING_VAL(tok)!=NULL) free(TOK_STRING_VAL(tok)); } tok->type=TOK_INVALID; }
static bool opt_workspace(Tokenizer *tokz, int n, Token *toks) { char *name=TOK_STRING_VAL(&(toks[1])); if(*name=='\0'){ tokz_warn(tokz, toks[1].line, "Empty name"); return FALSE; } current_ws=create_workspace(current_screen, name, FALSE); if(current_ws==NULL) return FALSE; return TRUE; }
int main(int argc, char *argv[]) { Tokenizer*tokz; Token tok=TOK_INIT; libtu_init(argv[0]); if(!(tokz=tokz_open_file(stdin, "stdin"))) return EXIT_FAILURE; while(tokz_get_token(tokz, &tok)){ switch(tok.type){ case TOK_LONG: printf("long - %ld\n", TOK_LONG_VAL(&tok)); break; case TOK_DOUBLE: printf("double - %g\n", TOK_DOUBLE_VAL(&tok)); break; case TOK_CHAR: printf("char - '%c'\n", TOK_CHAR_VAL(&tok)); break; case TOK_STRING: printf("string - \"%s\"\n", TOK_STRING_VAL(&tok)); break; case TOK_IDENT: printf("ident - %s\n", TOK_IDENT_VAL(&tok)); break; case TOK_COMMENT: printf("comment - %s\n", TOK_COMMENT_VAL(&tok)); break; case TOK_OP: printf("operator - %03x\n", TOK_OP_VAL(&tok)); break; } } return EXIT_SUCCESS; }