コード例 #1
0
ファイル: tester2.c プロジェクト: JoeNotCharles/notion
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;
}
コード例 #2
0
ファイル: tokenizer.c プロジェクト: JoeNotCharles/notion
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;
}
コード例 #3
0
ファイル: confws.c プロジェクト: apenwarr/ion1
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;
}
コード例 #4
0
ファイル: tester.c プロジェクト: apenwarr/ion1
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;
}