Commit graph

171 commits

Author SHA1 Message Date
Bill Currie
6dfee9968b /much/ better error handling 2001-06-28 21:26:40 +00:00
Bill Currie
eef9e8e2dc be more accurate about the operator involved 2001-06-28 17:44:50 +00:00
Bill Currie
0271afbb10 warn about the dangers of (!foo & bar) 2001-06-28 15:20:31 +00:00
Bill Currie
01a9372add fix the corrupted locals problem (df->locals was getting set too early) 2001-06-28 02:58:45 +00:00
Bill Currie
daf5fc96ea reset temps after emitting a function. it helps :) (fixes the wierd entity
errors)
2001-06-27 23:36:03 +00:00
Bill Currie
dfdff6cc59 more testing and add traceon/traceoff to the builtins 2001-06-27 22:56:52 +00:00
Bill Currie
59ff35558f create empty defs for vertex and quaternion compontents 2001-06-27 22:24:28 +00:00
Bill Currie
768c4a49d3 fix . type checking 2001-06-27 21:43:10 +00:00
Bill Currie
b285ab003d more tests 2001-06-27 21:15:15 +00:00
Bill Currie
774a1fe6cd fix // comments at end of file (ie, no trailing \n) 2001-06-27 20:47:41 +00:00
Bill Currie
9c30c0c455 make simple assignments (a = b;) generate code 2001-06-27 20:32:27 +00:00
Bill Currie
1eef491c1c handle -ve constants 2001-06-27 19:40:43 +00:00
Bill Currie
1fd4590212 report file as well 2001-06-27 18:15:24 +00:00
Bill Currie
febb139a41 free temp defs at the end of each expr block. CustomTF has gone from 64 to 25
locals.
2001-06-27 17:11:21 +00:00
Bill Currie
9d2bf8df19 better function argument code generation 2001-06-27 16:43:56 +00:00
Bill Currie
1c54a3ddb7 why not? 2001-06-27 05:48:25 +00:00
Bill Currie
a35c049744 main.c:
give instruction address in opcode dump
main.qc:
	more test code
2001-06-27 05:46:53 +00:00
Bill Currie
504d03a21a expr.c:
fix a silly stanfu with goto
qc-parse.y:
	suffle the debug code
2001-06-27 05:45:20 +00:00
Bill Currie
673e6e66b7 turns out qcc wasn't so stupid about = vs ||/&& precedence after all (just
my interpretation of the code was:/) why oh why didn't John use bison or yacc
in the first place? :/
2001-06-27 00:10:34 +00:00
Bill Currie
ff42e81127 remove some debug info 2001-06-26 23:51:15 +00:00
Bill Currie
c629de9b3b function calls work now 2001-06-26 23:42:11 +00:00
Bill Currie
50ae388caa initialisations now seem to work, including cows (mooOOoo:) 2001-06-26 22:43:28 +00:00
Bill Currie
c32bcb7262 immediates now seem to work 2001-06-26 22:07:09 +00:00
Bill Currie
ce2f26f0b9 lables are working, but immediates and function return values are borked 2001-06-26 21:32:22 +00:00
Bill Currie
5785b93107 implement branches and top level call 2001-06-26 20:06:56 +00:00
Bill Currie
19a7285f6c implement state 2001-06-26 19:54:50 +00:00
Bill Currie
aee129ca7d assignments now seem to work in that they no longer seg qfcc 2001-06-26 19:48:03 +00:00
Bill Currie
63ad87db68 return defs of the correct type 2001-06-26 17:34:21 +00:00
Bill Currie
69f869087b oops 2001-06-26 16:24:11 +00:00
Bill Currie
d783a024b3 record an expression's line number and file and sort of handle state
expressions
2001-06-26 16:23:21 +00:00
Bill Currie
3242c04798 fix the redef error 2001-06-26 16:12:01 +00:00
Bill Currie
c1753046a9 start on actually generating code. doesn't work yet (getting a weird type
redeclaration error and not all expressions are handled yet).
2001-06-26 07:21:20 +00:00
Bill Currie
e99796c4cf new expression type: ex_block. forms a linked list of expressions for fast
appending and ease of manipulation.
2001-06-26 03:33:01 +00:00
Bill Currie
749d460041 duplicate code cleanup 2001-06-26 02:46:02 +00:00
Bill Currie
3fa3ab59a9 clean up error reporting a little 2001-06-25 23:42:49 +00:00
Bill Currie
625915288c hopefully make line directives work 2001-06-25 23:38:32 +00:00
Bill Currie
90b5c57266 fix lost initial char of string constants
make expression strings char * instead of string_t (don't put them into
pr_strings prematurely);
2001-06-25 22:53:15 +00:00
Bill Currie
53b66ef2e0 better label handling and strings are now completely parsed (including escapes) 2001-06-25 22:11:20 +00:00
Bill Currie
1779a124c5 expr.h:
nuke the ex_statement and estatement_[st] stuff
	add label_expr prototype
expr.c:
	ex_statement nukage
	correct new_expr's decl
	add label_expr to ease label creation
	don't crash when printing a null expression (bare return)
qc-parse.y:
	estatement_t nukage
	statement statements and statement_block are type expr
	generate `expressions' for statements

a full parse tree for each function is now generated. there are several
special expression opcodes for statements:
	d	done    \
	r	return  -> unary: expression to return or null
	i	if      binary:   evaluated expression, destination label
	n	ifnot   binary:   evaluated expression, destination label
	c	call    binary:   function def, args (expr list, rev order)
	s	state   binary:   frame const, function def
	g	goto    unary:    destination label
	l	label   unary:    label number
in a top level expression, l (label) defines the label, otherwise it is a
reference.
2001-06-25 20:52:04 +00:00
Bill Currie
2d87eeb57d functions are now initialized, but no code is yet generated 2001-06-25 18:23:29 +00:00
Bill Currie
df897255ff make usage of the new parser easier to configure 2001-06-25 18:22:53 +00:00
Bill Currie
ab051248e8 expr.h:
add prototype for print_expr
expr.c:
	add print_expr
	correct string accessors
	currect the result type for unary operators
qc-lex.l:
	correct string, vector and quaternion parsing
qc-parse.y:
	precedence corrections and more function scope work

CustomTF gets through the parsing again.
2001-06-25 17:15:56 +00:00
Zephaniah E. Hull
3715430479 This is changing more then I wanted to at once, however.
The major change is that we no longer require libGL to even exist on the
system at compile time for the GL targets, we dynamicly link to the
libGL of choice at run time. (This probably breaks most non-linux
systems, and all GL targets except -glx, some fixup will be needed.)
(This also kills glquake, dead dead DEAD! GONE FOREVER! WHEE!)

Some gl_draw cleanup.

Commented out equake alias model occlusion test stuff, very experimental.

Added the .lo and .la patterns to the .gitignore files.

Some minor sbar cleanup. (We don't use the disc in use symbol for
anything.)
2001-06-24 09:25:55 +00:00
Bill Currie
c12ac3278e a little progress on functions 2001-06-21 07:08:34 +00:00
Bill Currie
ae98ed8603 field types are parsed correctly, but parameters have been lost for the
moment
2001-06-20 23:32:13 +00:00
Bill Currie
aac91d8cd6 more expression handling. turns out I'm mis-parsing field types, so that's next 2001-06-20 21:18:04 +00:00
Jeff Teunissen
ba17807833 whitespace. 2001-06-20 19:53:37 +00:00
Bill Currie
226b40483d beginnings of expression and statement processing 2001-06-20 07:02:36 +00:00
Bill Currie
56aafce20c qfcc.h:
rearrange def_t a little and add def_next (leaving next free for other
	uses)
pr_def.c:
	use def_next instead of next to link /all/ of the named defs
qfcc.c:
	ditto
2001-06-20 03:05:50 +00:00
Bill Currie
327e95a3c8 gcc 3.0 fixes 2001-06-20 02:07:20 +00:00