コード例 #1
0
ファイル: Vyquon.c プロジェクト: overzeroe/Vyquon
int main(){
    /* Load library */
    LoadCoreLibrary();

    /* Open our file and lexify it */
    FILE* file = fopen("test/test.vy", "r");
    TokenList* tokens = LexFile(file);

    TokenList* last = tokens;
    while(last){
        VyObj parsed = Parse(last, &last);

        printf("|");
        PrintObj(stdout, parsed);
        printf("|\nevaluates to\n");

        VyObj val = Eval(parsed);

        PrintObj(stdout, val);
        printf("\n\n");
    }

    FreeTokens(tokens);

    /* Finalize */
    FinishRuntime();

    /* Exit */
    return 0;
}
コード例 #2
0
ファイル: Parser.c プロジェクト: BillyBuggy/experiments
/* A utility function for parsing a whole file */
VyParseTree* ParseFile(char* filename){
	if(filename == NULL){
		fprintf(stderr, "Null pointer as filename.");
		return NULL;
	}

	/* Perform lexing */
	LexFile(filename);

	if(GetNumTokens() < 1){
		printf("Empty file: %s\n", filename);
		return NULL;
	}
	/* Parse the tokens */
	VyParseTree* list = MakeListTree();
	while(MoreTokensExist()) {
		VyParseTree* tree = Parse();
		AddToList(list, tree);
	}

	CleanLexer();

	return list;

}
コード例 #3
0
/*
================
DeclParser::LoadFile

Loads either the binary or the text version, depending on which is newer.
================
*/
bool DeclParser::LoadFile( const char *filename ) {
	if ( commonFS == OG_NULL )
		return false;
	String binFilename(filename);
	binFilename += ".bin";
	bool binExists = commonFS->FileExists( binFilename.c_str() );
	bool txtExists = commonFS->FileExists( filename );
	if ( binExists && txtExists ) {
		if ( commonFS->FileTime( binFilename.c_str() ) > commonFS->FileTime( filename ) )
			return BinaryFile( binFilename.c_str() );
		return LexFile(filename);
	}
	else if ( binExists )
		return BinaryFile( binFilename.c_str() );
	else if ( txtExists )
		return LexFile( filename );
	return false;
}