summaryrefslogtreecommitdiff
path: root/miniasm/main.c
blob: 53b01b9a540073ed52cea8ebf1f8ea840c707d60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "stdlib.h"
#include "const.h"
#include "io.h"
#include "arena.h"
#include "scan.h"
#include "hash.h"
#include "opcodes.h"
#include "optable.h"
#include "parse.h"

int main( int argc, char *argv[] )
{
	char *src;
	Scanner scanner;
	Parser parser;
	
	if( argc != 3 ) {
		print( "USAGE: miniasm <module.asm> <module.bin>" );
		return 1;
	}

	src = readallfile( argv[1] );
	if( !src ) {
		print( "UNABLE TO READ SOURCE FILE" );
		return 1;
	}
	
	scanner_init( &scanner, src );
	parser_init( &parser, &scanner );
	
	scanner_debug( &scanner, 0 );
	parser_debug( &parser, 1 );
	
	parser_parse( &parser );

	writefile( argv[2], parser.code, DEFAULT_MEMORY_SIZE );

	parser_done( &parser );
	scanner_done( &scanner );
		
	deallocate( (void **)&src );
	
	exit( 0 );
}