Commit Graph

714 Commits

Author SHA1 Message Date
Bill Currie 3a99ab8cea trim off the trailing _ from method def names 2002-05-21 23:02:56 +00:00
Bill Currie 2a73235d35 fix some method bugs 2002-05-21 22:51:46 +00:00
Bill Currie 9f06f89d57 write out the module data needed for the obj runtime 2002-05-21 21:28:40 +00:00
Bill Currie e11e2f3718 SELF -> @self (looks better (IMO:)) and make sure the .self def gets
generatoed and used when @self is seen
2002-05-18 00:30:14 +00:00
Bill Currie 5be384da63 create a `SELF' keyword so the global self entity can be handled sanely.
Not fully implemented yet.
2002-05-17 20:25:46 +00:00
Bill Currie dc5cd8460e `super' is now a keyword 2002-05-17 19:47:15 +00:00
Bill Currie 451bfbddfe fix a snafu with current_class and get ivar access working properly (cross
fingers:)
2002-05-17 19:35:26 +00:00
Bill Currie d8c66aef76 don't seg if strct is null 2002-05-17 19:34:40 +00:00
Bill Currie 2e8c18f8b6 handle unimplemented classes a little better (will do for now till I sort
out some sort of resolution for them)
2002-05-17 18:46:11 +00:00
Bill Currie b1d1159ae2 allow methods to be builtins 2002-05-17 18:35:54 +00:00
Bill Currie 97170e97b5 setup the default visibility properly 2002-05-17 17:58:57 +00:00
Bill Currie ef9f9cda2f pr_obj.h:
define the class info stuff
expr.h pr_def.c:
	fix a FIXME
class.c expr.c type.c:
	make id ev_pointer.ev_object rather than ev_pointer.ev_class
2002-05-17 17:37:44 +00:00
Bill Currie 6965642030 get ivars working better (need to get rid of self.) and [super ...] now
works.
2002-05-17 06:20:27 +00:00
Bill Currie 372c391737 initialize the string hash table with "" 2002-05-16 23:32:25 +00:00
Bill Currie 04d76ce1cf build the method_list struct with the correct type 2002-05-16 23:32:03 +00:00
Bill Currie 7cdbef2b11 make class_def return a correct def 2002-05-16 22:33:11 +00:00
Bill Currie 4908b3cf10 `initialize' the defs for the obj constructs 2002-05-16 21:57:03 +00:00
Bill Currie eba5e68726 check whether the method is an instance or class method when comparing 2002-05-16 20:48:41 +00:00
Bill Currie 779174cb33 get object pointer assignmets working and some static typing as well 2002-05-16 20:20:23 +00:00
Bill Currie 73f4cb4c03 it seems object info emition works (needs more testing) 2002-05-15 23:24:19 +00:00
Bill Currie 308fa78fc6 lots of obj work 2002-05-15 19:10:23 +00:00
Bill Currie 6a5bbf6f0a memory allocation checking cleanup 2002-05-14 06:37:28 +00:00
Bill Currie 44dcf74627 strip the \n from all(?) of the Sys_Error calls (Sys_Error itself will be
adding \n).
2002-05-14 06:12:29 +00:00
Bill Currie 2c0a20a887 fix the mis-generation of code for state-functions 2002-05-13 20:11:33 +00:00
Bill Currie 9b516ff84f mild namespace cleanup 2002-05-11 03:37:36 +00:00
Bill Currie 73e6cf062c implement type encoding 2002-05-10 23:19:57 +00:00
Bill Currie b418701637 missing ; 2002-05-10 02:11:23 +00:00
Bill Currie 2cd716176a more progress 2002-05-10 00:00:23 +00:00
Bill Currie f2b8dc7e7e more progress 2002-05-09 20:12:28 +00:00
Bill Currie 55e54bd9f9 move the type and def externs to type.h 2002-05-09 17:11:14 +00:00
Bill Currie f4fee3d7b2 add id as a type 2002-05-09 06:37:40 +00:00
Bill Currie 961d84e569 clean up of qfcc.h and shuffle around the predefined types 2002-05-09 06:34:48 +00:00
Bill Currie 1b875c8b06 work on getting obj expressions going 2002-05-08 23:12:49 +00:00
Bill Currie 7f47447492 getting closer to emiting ObjQC code 2002-05-08 21:24:24 +00:00
Bill Currie de86019d4b reverse the param order before building the function type and type check
varargs functions with specified params.
2002-05-08 17:33:28 +00:00
Bill Currie b03bfa7a6e start working on the code generation for the Obj stuff 2002-05-08 05:55:57 +00:00
Bill Currie b226d24b52 rework the param parsing to make selectors easier to handle 2002-05-08 05:15:19 +00:00
Bill Currie d5b637ae06 first stab at implementing ObjC like features. The parser doesn't generate
any code for the new features yet (I need to learn more about how objc
/works/) but nothing seems to have been broken.
2002-05-07 16:55:54 +00:00
Bill Currie c854369544 blah blah blah 2002-05-03 03:56:06 +00:00
Bill Currie 54fb180fad expr.h:
__attribute__((const)) has rather nasty results when it's not true
expr.c:
	fix up some mis-timed ex_error checks
2002-05-02 05:03:57 +00:00
Bill Currie 05788e55e5 don't generate useless expression warnings when that expression was caused
by an error
2002-05-01 22:08:59 +00:00
Bill Currie a9f3814c86 forgot to remove scope.h 2002-05-01 21:48:23 +00:00
Bill Currie 067359b39d d'oh, missed a ; 2002-05-01 21:42:29 +00:00
Bill Currie 962dc8e46e rewrite the type and def parsing to allow more flexible types 2002-05-01 21:35:39 +00:00
Bill Currie 4725a44098 print out field types correctly 2002-05-01 21:33:59 +00:00
Bill Currie 98fea9ff55 remove some debug code and fix some missing ;s 2002-04-27 02:51:00 +00:00
Bill Currie fc6fb804d7 support all but \b, \< and \> of qccx' character escapes. 2002-04-26 22:23:28 +00:00
Bill Currie 1f468e2508 fix a silly parse snafu 2002-04-26 21:49:35 +00:00
Bill Currie aa006ecf64 qfcc now supports implicit string constant concatentation. 2002-04-26 21:42:50 +00:00
Bill Currie 4f7245d634 allow type (parm, parm, ...) to compile (the parms aren't type checked yet) 2002-04-26 21:28:06 +00:00
Bill Currie 313c82efef use dstring_new instead of dstring_newstr to avoid allocating memory that's
only going to be reallocated immediatly anyway.
2002-04-15 22:24:47 +00:00
Bill Currie 03ab75704f -p N or --strip-path N will strip up to N leading path elements for a
source file's path.
2002-04-10 19:52:48 +00:00
Bill Currie c71ce480ad fix a seg when trying to print a null type 2002-04-09 21:37:46 +00:00
Bill Currie b29c0d70b7 more signed char indeces 2002-04-07 05:44:34 +00:00
Bill Currie 0f198f118e %d and pid_t don't mix on solaris, so use %ld and cast to long 2002-04-07 05:40:27 +00:00
Bill Currie 655fe17e18 fix handling of pointers in function params and local vars for qc functions 2002-03-18 07:30:21 +00:00
Bill Currie b97ac96204 fix the win32 side of pre-preocessing 2002-03-14 00:05:04 +00:00
Bill Currie 5a2538faaf dstring.[ch]:
create dsprintf and dvsprintf to do formated prints to dynamic strings.
rest
	Use the new functions :)
2002-03-08 23:11:42 +00:00
Bill Currie d3870a1ec4 fix a missing dstring_adjust call (I guess I need to make a dsprintf:) 2002-03-08 20:56:22 +00:00
Bill Currie de60a142ef break out the preprocessing code into a function so I can later preprocess
the progs.src file. also use snax's new dynamic strings for the tempname.
2002-03-07 18:36:48 +00:00
Bill Currie 860e3ebb1d make unsigned arrays/pointers more useful by allowing them to be used as
unbounded arrays
2002-02-24 01:11:34 +00:00
Bill Currie 80723fdec7 o don't ice when ex_name or ex_nil expressions show up in emit_expr.
instead, treat as useless epxression.
 o  mark rvalue expressions as such
 o  increment the users of a managed temp def when in an rvalue expr
2002-02-21 20:34:04 +00:00
Bill Currie e38259e01f warn when a top-level local shadows a parameter 2002-02-19 00:16:56 +00:00
Bill Currie d1fcfd1939 Implement --traditional so qfcc can be a nicer qcc. This disables several
keywords (quaternion integer function for break continue switch case default
NIL struct enum typedef) and converts some errors to warnings (assignment to
constants, insufficient function arguments, return; from non-void function,
anal function `pointer' type checks)
2002-02-18 06:23:59 +00:00
Bill Currie 49ef391664 make dist fix
----------------------------------------------------------------------
2002-02-16 05:15:24 +00:00
Bill Currie b4000200e3 move the getopt files from qfcc/source to libs/util, link qw-master against
libQFutil and enable the option parsting in qw-master for win32.
2002-02-12 17:44:41 +00:00
Bill Currie 4f6e61d68b win32 compile fix 2002-02-05 22:56:21 +00:00
Bill Currie 16298914f0 default sourcedir to "" rather than "./" and strip leading paths from the
tempname when preserving temps
2002-02-05 22:08:19 +00:00
Bill Currie cb0db8b8d1 disable debug putout and allow the cpp command line to be specified. 2002-02-05 19:35:45 +00:00
Bill Currie f2a8f8ff28 make cpp command line selection more intelligent. This should take care of
the stuck cpp problem on openbsd.
2002-02-05 18:40:47 +00:00
Ragnvald Maartmann-Moe IV a3c699a921 Fix three gitignores. 2002-01-31 07:49:29 +00:00
Bill Currie ad6d847728 fix qfcc's incorrect allocation/initialization for pointers (eg, float [] foo) 2002-01-30 22:57:48 +00:00
Bill Currie 3d9c8a9a60 get nil conversions working fully and things like !pointer 2002-01-30 22:17:55 +00:00
Bill Currie 6a393d175e implement typedef 2002-01-23 20:50:25 +00:00
Bill Currie 3f958ae29b more make dist fixes 2002-01-22 18:04:03 +00:00
Bill Currie ecd539cbd3 some make dist fixes 2002-01-22 17:17:18 +00:00
Bill Currie c8ef2d8b55 subdirs must come /after/ their parent in the AC_OUTPUT list 2002-01-22 07:42:35 +00:00
Bill Currie 8a24b28d97 scary, but the only changes qfcc needed to build as part of quakeforge was
to auto-substitued the libs and headers.

 o  unconditionally build qfcc (for now, anyway) when building quakeforge
    (needed for cs-code compilation)
 o  when built as part of quakeforge (qfcc should still be buildable
    independently) always enable cpp
 o  autoconfiscate the client-side code
 o  build the client-side code using the built qfcc
 o  install the client-side code in $(datadir)/quakeforge/id1
2002-01-22 05:48:03 +00:00
Bill Currie f1f2dd713d generate progdefs.h only for v6only
generate files.dat only if -F or --files is given on the command line
2002-01-21 23:30:54 +00:00
Bill Currie 7775dab7bb remove debug 2002-01-21 19:19:07 +00:00
Bill Currie f2d097c013 resolve the case value before checking its type 2002-01-21 19:18:41 +00:00
Bill Currie 2ce5a91373 allow enum {...} name; but ignore name (eases C <-> QC header compat) 2002-01-21 19:09:23 +00:00
Bill Currie 64c5983742 enum support 2002-01-21 19:03:29 +00:00
Bill Currie cef918df83 get array initialisation worrking 2002-01-18 08:26:37 +00:00
Bill Currie d69762facd integer() and float() casts seem to work 2002-01-17 19:32:04 +00:00
Bill Currie 08c1d57c53 fix a param scoping error 2002-01-17 16:59:00 +00:00
Bill Currie 7227ab4363 qfcc.c:
add -P,--progs-src so you can specify the name of the progs.src file
rest:
	add/use print_type
2002-01-17 08:19:53 +00:00
Jeff Teunissen 8c2d3f65c3 Add a couple symbols to qfcc's preprocessor lines 2002-01-05 19:18:27 +00:00
Jeff Teunissen 9f6dcec9dd --save-temps support for qfcc. It'll leave files with the same filenames
they're generated from, with the exception that they will have an
extension of .p. Obviously, depends on cpp support.
2002-01-05 19:13:20 +00:00
Jeff Teunissen a0370e52d2 Manpage should be both distributed and installed now. 2002-01-05 18:46:59 +00:00
Jeff Teunissen 33b6429aa7 Makefiles for docs. 2002-01-05 18:46:05 +00:00
Bill Currie f591b27532 set the result of the block used for self.maxs = obj.origin; type expressions 2002-01-04 18:43:55 +00:00
Bill Currie 718a64343b more old-code cleanup. move PR_LexString into make_string 2002-01-04 18:27:01 +00:00
Bill Currie 12d2338d1b handle dos line endings a little better 2002-01-04 17:13:13 +00:00
Forest Hale 184ff4a216 made qfcc compile again, by renaming com_token to qfcc_com_token so it does not conflict with QFutil 2002-01-04 11:12:52 +00:00
Bill Currie 9d2739598a character constants 2002-01-04 08:45:24 +00:00
Jeff Teunissen 2185e0a92e Update qfcc man page. 2001-12-14 05:33:00 +00:00
Bill Currie f392c395df fix some uninitialized warnings my gcc missed, but misty's got 2001-12-13 16:40:46 +00:00
Bill Currie d95bf0ada8 blah 2001-12-12 22:04:34 +00:00
Bill Currie 112f74a357 make integer constant division warnings optional 2001-12-12 22:00:42 +00:00
Bill Currie 195dd1032e clean up some dead code 2001-12-12 21:52:07 +00:00
Bill Currie 2b458dd13d clean up line/file management 2001-12-12 21:50:11 +00:00
Bill Currie 6d65fe853d spontaneous temp defs need to have their users incremented when an
assignment is part of a sub expression
2001-12-12 21:29:04 +00:00
Bill Currie 7e38a8d9a0 clean up the return def selection for emit_assign_expr 2001-12-12 20:55:55 +00:00
Bill Currie 8ddce20949 pr_*: add storep.p so pointers can be stored into entities
emit.c: convert & (address) to . in unary .
        rewrite emit_assign_expr
expr.c: remove debug code and make unary . less agressive on address calcs
        also convert & (address) to . for lvals
2001-12-12 20:35:58 +00:00
Bill Currie b56d7f3248 emit.c:
fix a missing else (should convert to switch)
expr.c:
	fix address_expr for binary expressions
	fix unary .
2001-12-12 18:34:41 +00:00
Bill Currie f9149a0d6c finally get around to renaming type_name to pr_type_name 2001-12-12 17:15:09 +00:00
Bill Currie cc34e5954f lots of work on better array/pointer/struct handline. doesn't quite work yet 2001-12-12 08:39:47 +00:00
Bill Currie 835468bcfb beginnings of breaking out the type code 2001-12-11 19:58:12 +00:00
Bill Currie e976211faf header block fixes 2001-12-08 20:40:50 +00:00
Bill Currie 00b2a45ecd change the operator for "address" from "." to "&" so load.p can be implement.
this makes it so pointers in entities work.
2001-12-08 20:17:20 +00:00
Bill Currie a184199146 get arrays of structures working 2001-12-08 17:36:58 +00:00
Bill Currie b03a1bee42 ok, structures seem to generate correct code now 2001-12-08 08:19:48 +00:00
Bill Currie 3293c5e85f beginnings of structure code. committed because cvs diff doesn't work on
new files
2001-12-08 00:09:11 +00:00
Bill Currie 1767ad435f use the new immediate indeces to make small array indeces not use a global 2001-12-07 20:10:30 +00:00
Bill Currie 0c2f36f9a3 some dead code cleanup 2001-12-06 20:05:49 +00:00
Bill Currie 3c2c4aa9e6 indent whitespace cleanup. not perfect, but a bit more consistent now 2001-12-06 19:49:40 +00:00
Bill Currie 61786182d2 whitespace 2001-12-06 18:14:44 +00:00
Bill Currie 12a0a10d33 more alpha portability fixes 2001-11-29 19:35:25 +00:00
Bill Currie 3f7c4f146e allocate space for field arrays and report entity size 2001-11-15 05:31:15 +00:00
Bill Currie e45bb62f23 ok, correct code seems to be getting generated for both array access and
entity field access
2001-11-15 04:32:50 +00:00
Bill Currie 40d47e91cb win32 portability fixes 2001-11-15 03:54:35 +00:00
Bill Currie 7d9266a3f0 beginnings of array support. no array initialization yet and foo[i] = bar is
broken.
2001-11-15 00:46:36 +00:00
Bill Currie 8aa83d04f3 oops, that's not how that works :) 2001-11-15 00:25:15 +00:00
Bill Currie cf37275def add -g option (shortcut for --code=debug) 2001-11-14 23:17:20 +00:00
Bill Currie ed331517b3 more grammar re-work preparing for arrays and structs 2001-11-14 22:31:57 +00:00
Bill Currie a2bfff5dc4 simplify the type rule 2001-11-14 07:16:58 +00:00
Bill Currie 3fe67eecd2 expr.c:
it helps if one understands /why/ something is done. I think this
	might be it for the reference count tweeks
switch.c:
	o	better control over whether case ranges are built
	o	/always/ append the temp = test expression and use temp instead of
		test for the != check
	o	only ever build case ranges if the switch expression is integer
2001-11-14 06:45:31 +00:00
Bill Currie dc80f51d89 fix a missed immediate type missmatch case 2001-11-14 05:08:37 +00:00
Bill Currie da36feff7f oops, failed to notice that relocs on temp defs weren't being done correctly
memset wasn't such a good idea :P
2001-11-13 23:21:23 +00:00
Bill Currie cfa47717c6 expr.c:
once again, temp def ref counts seem to be correct
pr_def.c:
	reset recycled temp defs
2001-11-13 23:17:32 +00:00
Bill Currie ad5deea582 missed this in the cleanup 2001-11-13 23:14:59 +00:00
Bill Currie 3874d78697 slightly better code, but the temp isn't getting ref-counted correctly 2001-11-13 22:11:45 +00:00
Bill Currie 68fb0a1147 clean out a bunch of unneeded code. this should take care of static linking 2001-11-13 20:34:21 +00:00
Bill Currie 645c400802 rearrange default jump for slightly better code generation 2001-11-13 20:27:05 +00:00
Bill Currie 4291f9c711 create new_bind_expr and more tweeks to temp def ref counting 2001-11-13 18:49:27 +00:00
Bill Currie f2f8e096f3 qfcc.h:
o	add a "freed" marker to def_t to prevent double freeing of
		temp def offsets
emit.c:
	o	break out the bind code into emit_bind_expr (doesn't /really/
		emit code, but still:)
	o	make bind work with disparate types (forces def_t->freed 1)
pr_def.c:
	o	mark array pointers as initialized and constant.
	o	don't free the offset for already freed temp defs
pr_imm.c
	o	fix a bug in uinteger support
	o	support disparate types for immediates
switch:
	o	fix a bug where gt.i was being used instead of gt.ui
	o	remove some debug code
2001-11-13 18:11:19 +00:00
Bill Currie 3d5447c71f seems gcc3 drops the missed enum in switch warning :/ 2001-11-13 16:08:50 +00:00
Bill Currie 07b59d2f07 pr_comp.h:
o	add OP_JUMPB
	o	OP_JUMPB renumberd some opcodes, so up PROG_VERSION
pr_edict.c:
	o	make the version error reporting more informative
pr_exec.c:
	o	implement OP_JUMPB (goto *(ptr + index))
pr_opcode.c: (libs/gamecode/engine)
	o	add OP_JUMPB to the table
expr.h:
	o	ex_uinteger support
	o	some const correctness
	o	prototype new_label_expr
qfcc.h:
	o	uinteger ussport
	o	add pointers for op_jump and op_jumpb
	o	prototype PR_GetArray
emit.c:
	o	general uinteger support
	o	new reference/reloc type 3: absolute statement address
	o	jumpb support (binary goto)
expr.c:
	o	uinteger support
	o	break the label name creation out of new_label_expr into
		new_label_name
	o	some const correctness
pr_def.c:
	o	add PR_GetArray to allocate an array in global space
	o	factor out some code common to PR_GetDef and PR_GetArray that would
		otherwise be duplicated
pr_imm.c:
	o	some const correctness
	o	uinteger support
pr_lex.c:
	o	uinteger support
pr_opcode.c: (tools/qfcc/source)
	o	support jump and jumpb
switch.c:
	o	rewrite the binary search code to support ranges.
2001-11-13 08:58:54 +00:00
Bill Currie d27cd9cc21 s/type_size/pr_type_size/
remove the redundant type_size from qfcc
2001-11-12 23:56:46 +00:00
Timothy C. McGrath 0a18c1256a Fix configure for zlib and static compiling. static compiling is still broken
But I'm sure taniwha is going to fix that shortly anyway :)

Tim McGrath
(Misty-chan)
2001-11-12 23:49:08 +00:00
Bill Currie dcfea9796e strings now work in switch statements 2001-11-12 21:13:55 +00:00
Bill Currie 928d343295 pr_comp.h:
o	add ev_uniteger to the types enum
	o	add opcodes for ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
progs.h:
	o	add uinteger accessors
pr_exec.c:
	o	implement ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
pr_opcode.c:
	o	add opcodes for ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
expr.h:
	o	prototype inc_users
qfcc.h:
	o	add externs for op_ifbe, op_ifb, op_ifae and op_ifa
emit.c:
	o	don't bother emiting an assignment to a temp def that's only used once
		(ie, it's never read, only written to)
	o	support the new if* instructions
expr.c:
	o	support the new if* insructions
	o	dectect expression loops in append_expr
	o	support unsigned integers
	o	re-work temp def usage counting
pr_def.c
	o	debugging for temp def usage counts
pr_opcode.c:
	o	support the new if* instructions
qc-parse.y:
	o	provide defines for IFBE IFB IFAE IFA
switch.c:
	o	do binary searches for strings, floats and ints if there are more than
		8 cases in a switch. Strings need more testing.
2001-11-09 00:58:16 +00:00
Bill Currie cb4ce6a634 remove the default label from the switch label table while fetching it. 2001-11-06 20:39:42 +00:00
Bill Currie ccbb1c3f04 document all those weird opcodes :) 2001-11-05 19:32:50 +00:00
Bill Currie 13a177f217 use 'b' (bind) instead of '=' (assign) for switch's test temp def so simple
expressions (ie, just a def) don't generated wasted assignments and clean up
switch's debug info so you get the switch line rather than the line for the
closing }
2001-11-05 19:12:33 +00:00
Bill Currie 9b784e331b remove '(' (never used, don't remember what it was intended for) and add
'b' (bind), 's' (state) and 'c' (call) to get_op_string.
2001-11-05 19:11:03 +00:00
Bill Currie 5f5060cbf0 move the users and used setting code from emit_statement to
PR_AddStatementRef. This removes essentially duplicate code and 3 ifs :)
2001-10-31 18:40:02 +00:00
Bill Currie b499d7e1e8 I've decided that shuffling the `sections' like that doesn't really gain
anything, so I'm reverting that change.
2001-10-31 17:55:35 +00:00
Bill Currie 3b2d2a1c88 re-arrange the order of the `sections' of a .dat file to match the header
order. this also `happens' to put the strings section just before the globals
section (both at the end) which will make pointer bounds checking easier.
2001-10-30 19:41:27 +00:00
Bill Currie 09f19fd9c9 remove some redundant data 2001-10-28 04:42:44 +00:00
Bill Currie 3f45a8305c *taniwha inflicts more carnage on extern 2001-10-28 04:29:30 +00:00
Jeff Teunissen 79544d6630 qfcc: More manpage updates. 2001-10-27 02:20:39 +00:00
Jeff Teunissen 901a8ec9c5 qfcc: update man page. It's pretty useful, so I'll probably be setting
it up as part of the install for qfcc.
2001-10-26 23:55:42 +00:00
Jeff Teunissen 274ff6e59a Add getopt.h to the dist, just in case. 2001-10-26 23:54:20 +00:00
Jeff Teunissen b07d60f6d6 add getopt.c and getopt1.c to the makefile. There is preprocessor
stuff in these files to detect when they need to be compiled, so they
don't need anything in configure.
2001-10-26 23:53:36 +00:00
Jeff Teunissen 5502558bb9 qfcc: Argument passing for cpp, shuffling the verbosity levels around a
bit.
2001-10-26 22:07:35 +00:00
Bill Currie 5eba9f155e clean up some duplicate symbols 2001-10-26 17:49:23 +00:00
Bill Currie d8e6bf9cb6 fix the verbosity levels to what they were
--no-cpp is now cpp or no-cpp in code
add cpp to code_options_t
2001-10-26 16:04:38 +00:00
Jeff Teunissen c5d0d45edf qfcc: Remove some debug info from taniwha's last commit -- I thought
*I*'d done that! :)
2001-10-26 08:55:24 +00:00
Jeff Teunissen 46c4174024 qfcc: forgot a newline in -V output 2001-10-26 08:17:04 +00:00
Jeff Teunissen 89c7e0df1a qfcc: getopt support. Yes, it exists, and it works, and it's fun! :) 2001-10-26 08:14:05 +00:00
Bill Currie 5cbd50d835 count the number of digits needed rather than relying on -lm (now it's not
needed:)
2001-10-26 06:53:02 +00:00
Jeff Teunissen 581411e9e2 qfcc: Preparation for getopt. 2001-10-26 06:43:56 +00:00
Timothy C. McGrath 04e4da654a Changes taniwha did to make qfcc work with statically compiled libs.
This is what was bugging me all night long with qfcc ><;;

Tim McGrath (Misty-chan)
2001-10-26 02:32:40 +00:00
Bill Currie 70bedc149f allow returning NIL 2001-10-25 21:15:48 +00:00
Bill Currie bc44f950af enable passing NIL into a function 2001-10-25 20:51:56 +00:00
Bill Currie f8a41cb1bc completely nuke the concept of "priority" from opcodes and use get_op_string
in emit_sub_expr instead of a redundant switch.
2001-10-25 17:48:35 +00:00
Bill Currie f029687ff0 switch statement. could do with lots of improvements, but this should be a
good start.
2001-10-25 06:41:52 +00:00
Bill Currie 09405469f6 throw PR_BeginCompilation's arguments out the nearest airlock 2001-10-24 22:53:27 +00:00
Bill Currie f36e7bb22f reorg 2001-10-24 22:52:50 +00:00
Adam Olsen 3bba5398ba - audit malloc usage. now everything checks the return value :) 2001-10-24 22:50:06 +00:00
Bill Currie 133ce647fb implement break and continue. only loops covered for now, but that's because
switch isn't implemented yet
2001-10-24 18:57:29 +00:00
Bill Currie 743bc5178b fix uninitialized variable detection for nested scopes 2001-10-24 15:21:21 +00:00
Bill Currie 6553c81a41 proper scoping for QC ala C. 2001-10-24 06:39:49 +00:00
Bill Currie b8a9a97c75 the usual 2001-10-22 18:47:45 +00:00
Bill Currie 2ef8adea09 handle more conditional code and check for unitied vars in the test of if ()
etc
2001-10-19 05:16:24 +00:00
Bill Currie 16c334b6b9 uninit var detection seems to work for if and if else 2001-10-19 03:22:04 +00:00
Bill Currie 3572a6be28 change def_list from def_t ** to hashtab_t * and comment out some debug code 2001-10-19 00:45:56 +00:00
Bill Currie 237d238a65 beginnings of "if" uninitialized variable support. doesn't make any
difference yet
2001-10-18 23:06:39 +00:00
Bill Currie 5ca785e7e8 uninitialized variable detection. not perfect (lots of false negatives, but
fewer than before;) but prozac isn't giving any false positives.
2001-10-18 20:05:26 +00:00
Bill Currie 96e4e1a232 the beginning of unititialized var detection. first victim: functions.
--undefined-function-warning is now --no-undefined-function-warning and
the default is to detect called but undefined functions.
2001-10-18 17:41:22 +00:00
Bill Currie 952f029e6d rename def_t.initialized to def_t.constant 2001-10-18 17:15:05 +00:00
Bill Currie 85834ab8c3 handle a couple of missed ex_nil cases 2001-10-17 18:36:19 +00:00
Bill Currie 79ac85b54f type checking now works much better and there is now a NIL builtin constant
which can be assigned (/only/) to anything.
2001-10-17 07:45:37 +00:00
Bill Currie 2d068c0745 massive windows.h and WIN32 cleanup. 2001-10-16 21:40:45 +00:00
Bill Currie c8e1e7942a correct type error checking for vectors vs floats 2001-10-12 03:58:22 +00:00
Bill Currie 356492f683 don't convert float test epxressions for --id and fix a typo in an error
message for !expr
2001-10-06 04:48:52 +00:00
Ragnvald Maartmann-Moe IV 2080ae7db6 Fix stamp ignorance. 2001-10-05 19:42:17 +00:00
Bill Currie 67635e9dd0 fix a d'oh in the param/return type checking 2001-10-02 19:03:28 +00:00
Bill Currie dcb51dc586 expr.h:
get_type and extract_type prototypes and add extern for type_names
emit.c:
	use extract_type instead of get_type
expr.c:
	get_type now returns the type pointer rather than the qc type enum.
	extract_type uses get_type to return the qc type enum.
	make type_names global
	use get_type instead of ex_expr/ex_def to cover more cases
	clean up function call/return processing as a result of get_type
pr_opcode.c:
	use opcode_priority_type_table_ab when var_c is null and a minor
	cleanup in PR_Opcode_Find
2001-10-02 18:55:52 +00:00
Bill Currie 7407e4f1b7 and some more 2001-09-28 07:09:38 +00:00
Jeff Teunissen cd5f322cc1 Move along, nothing to see here... :) 2001-09-26 03:39:44 +00:00
Bill Currie c74fc1c0df make the unused var warning like gcc's 2001-09-24 17:51:15 +00:00
Bill Currie 2447983464 try three. this should work 2001-09-24 03:23:44 +00:00
Bill Currie 998855402c try two 2001-09-24 02:48:09 +00:00
Bill Currie 5f9a3d9617 try to make --with-qf work while configuring 2001-09-24 02:38:28 +00:00
Bill Currie 789a11d2d8 don't print the file or line number for "warnings treated as errors" 2001-09-23 04:08:28 +00:00
Bill Currie 2054ec016a fix a slew of false positives with unused var checking 2001-09-23 04:08:03 +00:00
Bill Currie 7aec6e253a unused local variable detection 2001-09-22 23:41:47 +00:00
Bill Currie 9f715ae9f8 more small old-parser cleanups 2001-09-15 20:31:17 +00:00
Bill Currie 3557d375f3 add better scoping to TODO even though I'm likely to do it soon 2001-09-13 20:34:08 +00:00
Bill Currie d7675ada7a move the particle count multiplication out of the renderer and into the clien
(for blood and gunshot, anyway).
2001-09-06 05:41:15 +00:00
Jeff Teunissen 896d304ac9 New man page for qfcc -- doesn't match the program yet, I'm committing
it for comments.
2001-08-31 16:43:26 +00:00
Bill Currie 805c1bd242 foo (snafu, bar (baz)) no longer uses a temp for bar's return value 2001-08-24 23:22:02 +00:00
Bill Currie f16886b7f1 missed a need to increment the users of the temp for chained functions 2001-08-24 22:29:06 +00:00
Bill Currie cee850e499 remove debug 2001-08-24 22:03:50 +00:00
Bill Currie 8166ee7bfb fix a whitespace snafu (gee, vim can be a pain somethings) 2001-08-24 21:57:07 +00:00
Bill Currie ea451ab02d Remove unnecessary temps from function return values. This has one
*/CRITICAL/* implication: DO NOT /EVER/ RELY ON EVALUATION ORDER. This
isn't /really/ that bad: evaluation order will be consistent for similar
expressions, but for (eg) foo() + bar()*2, bar will be called first.
2001-08-24 21:47:52 +00:00
Bill Currie 08f73bed78 better code generation for foo(bar(baz)). foo(snafu,bar(baz)) isn't optimal
yet, but the code is at least correct
2001-08-24 21:14:04 +00:00
Bill Currie eeec89e6ba don't put function args in temps when not needed. still need to take care
of the return value, but that can possibly be taken care of in an optimiser
pass.
2001-08-24 05:40:48 +00:00
Bill Currie 0eda635483 fix temp reference counting on function call args 2001-08-22 23:21:47 +00:00
Bill Currie 4c48851096 fix a buffer overflow in new_label_expr
use reference counting for temp defs and call PR_FreeTempDefs at the end
of emit_sub_expr as well as emit_expr.
fix a (relatively harmless) bug in type processesing of foo.bar =
2001-08-22 21:55:01 +00:00
Bill Currie a32384f16c report the name of the function using the most locals 2001-08-21 18:23:21 +00:00
Bill Currie 8d29efe552 remove a debug print 2001-08-21 17:22:55 +00:00
Bill Currie 2af74aedca fix a segfault due to type mangling for ... functions 2001-08-20 18:23:47 +00:00
Bill Currie cf4ca286f0 implement pre and post increment operators (++ and --) 2001-08-20 06:22:28 +00:00
Bill Currie cd59628199 move the chained funcion support out of emit_function_expr into funciton_expr 2001-08-20 04:56:00 +00:00
Bill Currie 9ee3450265 extend the hash api to more easily support general cases 2001-08-16 02:51:53 +00:00
Bill Currie d55199bece re-arrange the types of store and storep so things make a little more sense 2001-08-13 23:00:17 +00:00
Bill Currie c103adc17d clean up the code generated for a = b ? c : d 2001-08-12 02:38:12 +00:00
Bill Currie f343776b5a mark some jobs done, correct a typo and sort them by done, in progress, planned 2001-08-11 22:07:03 +00:00
Bill Currie 79ce6c56ca fix assignops with entity fields by cloning e1 rather than just re-using it 2001-08-11 22:02:59 +00:00
Bill Currie 248de6858d hopefully take care of freebsd 2001-08-11 21:46:02 +00:00
Bill Currie c2d3d8f3ab temp def expressions and ?:
seems to work :)
2001-08-11 21:15:24 +00:00
Bill Currie a8e858f77d fix a bug where every 2nd(?) arg was being skipped when setting up a function
call
2001-08-10 21:31:48 +00:00
Bill Currie 11381ce593 the usual 2001-08-10 21:19:36 +00:00
Adam Olsen caeb31e6ca start of the support for chained function calls. Actually, they
should work fine now, there's just some extra temp vars we want to
remove before we can consider it "done" :)
2001-08-10 20:35:42 +00:00
Bill Currie b44fd6ab91 move a var 2001-08-10 18:42:13 +00:00
Bill Currie 4388bf0519 good bye, old parser 2001-08-10 18:35:55 +00:00
Bill Currie 9e46265046 fix a silly error causing integer constants to not be re-used 2001-08-10 17:41:08 +00:00
Bill Currie a33c834a39 move SHL and SHR down in expr 2001-08-10 17:00:53 +00:00
Adam Olsen 6414897dae got a few new operators for qc :)
<< >> % which all act like their C counterparts
+= -= *= /= &= ^= |= <<= >>= %= which just expand into the obvious,
also like the C versions.
2001-08-10 16:17:00 +00:00
Bill Currie 27ccfa67c5 fix the efficiency of unary expressions as args to a function 2001-08-09 17:05:30 +00:00
Bill Currie 081d8f3c47 ^ and ~ operators for qc (^ from Rhamphoryncus) and clean up the punctuation
line in qc-lex.l (why didn't I think to do that in the first place?!?)
2001-08-09 16:34:46 +00:00
Bill Currie b341529fce more --id support 2001-08-07 16:50:22 +00:00
Adam Olsen c218ede288 Add support for checkfunction, which is a builtin that searches for
another builtin by name, and returns it.

Soon I'll change all our new builtins to by allocated dynamically, as
well as changing the number checkfunction uses, and happily break
everything that uses them :D
2001-08-04 09:11:50 +00:00
Bill Currie 1e1cb06a1f disable integers for --id. probably not thorough enough yet :/ 2001-08-03 07:47:15 +00:00
Bill Currie d89cd91e4b make the expressions in for (a;b;c) optional 2001-08-01 06:29:09 +00:00
Bill Currie f9d4351515 more jobs 2001-08-01 00:19:05 +00:00
Bill Currie bfb8eff2f0 signed_const isn't needed any more 2001-07-27 21:01:01 +00:00
Bill Currie ecc71c4a60 local var = expr; now works (globals must still be consants) 2001-07-27 20:55:14 +00:00
Bill Currie 28b1598e7e break the emit_* functions out of expr.c into emit.c 2001-07-26 05:15:34 +00:00
Bill Currie 7718ca4c96 various little cleanups 2001-07-26 05:08:27 +00:00
Bill Currie 95ad5aa329 integer type done 2001-07-26 04:34:10 +00:00
Bill Currie d44f60f17c drasticly simplify emit_assign_expr now that I have a much better
understanding of when an explicit assigment is needed. seems to work for
everything I throw at it.
Also, fix ! unary ops (caused by the - unary op fix:/)
2001-07-25 21:47:05 +00:00
Bill Currie 0c2cd8633c fix -expr handling. generates sucky code atm, but at least it's generating
code now:P
2001-07-25 18:36:36 +00:00
Bill Currie 620063628c typecheck values for [frame, think] on thost functions and fix some misplaced
immediate defs
2001-07-24 23:53:35 +00:00
Bill Currie 9ad075b02e make if/while/for use test_expr, make test_expr fix the new exp line/file,
fix some string const issues
2001-07-24 22:30:31 +00:00
Bill Currie 576123060a warn on passing integer constants into ... functions. Again, this will need
an option later
2001-07-24 20:43:18 +00:00
Bill Currie d9cde786b3 use ev_type_count instead of ev_void for bad types so things like void
functions being used in expressions don't cause ICEs
2001-07-24 19:51:44 +00:00
Bill Currie 6d1671950a expr.c:
warn for int const / int const. this will probably want an option for newer
	games
qfcc.c:
	clean up temp files when errors have occured
2001-07-24 04:45:53 +00:00
Bill Currie a47a4d8038 make print_expr's output readable by mere mortals 2001-07-23 06:15:33 +00:00
Bill Currie d2c266775c fix a seg on return type mismatch 2001-07-23 05:46:00 +00:00
Bill Currie 4b744b6be5 fix numberous integer <-> float errors
type check function args in the correct order
2001-07-23 05:31:49 +00:00
Bill Currie b8874cab1c function return checking 2001-07-23 02:27:46 +00:00
Bill Currie 50fadb6866 function arg type checking with int->float /constant/ cooecion. 2001-07-23 01:56:49 +00:00
Bill Currie c248372e20 Initial integer type support. qfcc /is/ partially broken when it comes to
integer constants and float function args/return values.

pr_comp.h:
	o  add the integer opcodes to pr_opcode_e
pr_edict.c:
	o  add "quaternion" and "integer" to type_name[]
	o  support quatnernion and integers types when printing values
	o  support the integer opcodes when bounds checking
pr_exec.c
	o  enable the integer opcodes
pr_opcode:
	o  add the integer opcodes to the opcode table
	o  logical operators all result in an integer rather than a value
expr.h:
	o  rename int_val to integer_val
qfcc.h:
	o  kill another magic number
expr.c:
	o  move the opcode to string conversion out of type_mismatch and into
	   get_op_string
	o  rename int_val to integer_val
	o  general integer type support.
	o  generate an internal comipiler error for null opcodes rather than
	   segging.
pr_imm.c:
	o  rename int_val to integer_val
	o  support integer constants, converting to float when needed.
pr_lex.c:
	o  magic number death and support quaternions and integers in type_size[]
qc-lex.l
	o  rename int_val to integer_val
	o  support quaternion and integer type keywords
qc-parse.y:
	o  rename int_val to integer_val
	o  use binary_expr instead of new_binary_expr for local initialized
	   variables
builtins.c:
	o  rename int_val to integer_val
	o  fix most (all?) of the INT related FIXMEs
defs.qc:
	o  use integer instead of float where it makes sense
main.c:
	o  read_result is now integer rather than float
main.qc:
	o  float -> integer where appropriate
	o  new test for int const to float arg
2001-07-23 01:31:22 +00:00
Bill Currie 55ac55c7ac rename ev_int and ex_int to ev_integer and ex_integer. create type_integer
and def_integer (do I need that?), clean up and or coment on XXX and FIXME
2001-07-22 06:59:12 +00:00
Bill Currie 7c16afe7e9 add a --no-cpp command line option so that cpp enabled qfcc can still compile
qfpreqcc progs
2001-07-20 05:22:44 +00:00
Bill Currie 00d409e80c fix constant folding for | 2001-07-19 03:00:35 +00:00
Bill Currie 09ae07f64e make --enable-cpp work when new-parser is left to default (which is on) 2001-07-19 03:00:08 +00:00
Bill Currie 47a6f2c9b5 pr_debug.c:
capitolise CRC and add a \n to the message
sv_progs.c (both nq and qw):
	don't bother checking the progdefs.h crc: it's just not needed any more
pr_imm.c:
	use r instead of rep when checking the hash tables.
main.c (quaq):
	make developer work and set com_filesize (otherwise, progs crc doesn't
	get set properly (com_filesize, not developer:))
2001-07-18 21:28:41 +00:00
Bill Currie 5c31fbf366 fix debug crc generation 2001-07-18 20:31:55 +00:00
Bill Currie 10ad8bebbd Make files.dat actually useful. I really dislike the hardcoding, but it /is/
useful. Also, fix a bug in PrecacheModel where it was checking MAX_SOUNDS and
numsounds instead of models.
2001-07-18 17:23:42 +00:00
Bill Currie c9af1575d3 fix emit_assign_expr to emit an explicit assignment statement whenever
emit_sub_expr returns a temporary def. this fixes a = b = c; expressions when
entities are involved.
2001-07-18 16:33:31 +00:00
Bill Currie 098305d649 fix (expr_type1 && expr_type2). this involed type completing expressions :/ 2001-07-18 06:37:14 +00:00
Jeff Teunissen ed0d1d8ba8 *** empty log message *** 2001-07-18 05:09:37 +00:00
Bill Currie f2731a7314 add cse opts 2001-07-18 02:08:32 +00:00
Jeff Teunissen 3e1bbd47df Add a TODO file for qfcc 2001-07-17 21:51:10 +00:00
Jeff Teunissen af366764de C preprocessor support for qfcc. Depends on the new parser. --enable-cpp
to activate.
2001-07-17 05:02:34 +00:00
Bill Currie 5d5d3f1416 well, that explains the loss of line number onfo on return statements :P 2001-07-16 03:53:45 +00:00
Bill Currie cb80800732 fix debug line numbers for if and while. still `losing' them for return for
some reason.
2001-07-15 01:51:01 +00:00
Bill Currie a0ba8e534c s/IMMEDIATE/.imm/ for name of immediate defs. the latter is both shorter and
impossible to generate from qc
2001-07-15 01:50:10 +00:00
Bill Currie 2818d720c2 move the full info opcocde table from qfcc to gamecode (<KURGON>There can be
only one!</KURGON>:) and use the table in PR_PrintStatement. This means that
qfcc now links against libQFgamecode as well as libQFutil
2001-07-14 02:34:16 +00:00
Bill Currie ae9ee57666 change the type of opcode->type to etype_t, clean up the resulting mess, and
rename all of the opcodes to (eg) mul.f instead of MUL_F
2001-07-14 01:52:05 +00:00
Bill Currie 6c91ee29f0 fix a missed debug test 2001-07-14 01:47:45 +00:00
Bill Currie 7acbb3a0ea helps if I remember this :/ 2001-07-14 01:16:07 +00:00
Bill Currie 64e50e1ebd Basic debug info generation, just line numbers and local defs for each
function.
2001-07-14 01:15:40 +00:00
Bill Currie eae97539c2 beginnings of debug info for progs 2001-07-13 06:08:50 +00:00
Bill Currie 8bbef35197 fix `a = b = b + c;' (probably d + c, too). Caused by forgetting to emit
an assignment for `a ='.
2001-07-12 18:56:43 +00:00
Bill Currie 8000c86e35 /much/ better type mismatch error reporting
eg:
./main.qc:55: type mismatch: float == entity
2001-07-09 18:17:04 +00:00
Bill Currie 43ba9affaa remove the gcc 2.96 test 2001-07-09 17:12:09 +00:00
Bill Currie 1db6225ae7 make - - - - -2 work 2001-07-06 04:54:08 +00:00
Bill Currie 4673d701c9 fix the conflicts caused by -ve constants 2001-07-06 04:29:12 +00:00
Jeff Teunissen 35f5118803 warning/error message cleanups. Well, at least *I* think they make more
sense. :)
2001-07-06 02:43:39 +00:00
Jeff Teunissen 605df6ebb6 Change the bashism $() back to `` 2001-07-05 21:15:08 +00:00
Bill Currie b1f264b203 using qfpreqcc is now vewy vewy qwiet ('e's 'unting wabbits) 2001-07-03 21:17:02 +00:00
Bill Currie 05db0ed9d0 more format attributes 2001-07-03 20:56:01 +00:00
Bill Currie 1edf1e0b39 format checking for error and warning + needed fixes
try to give name of object when calling non-function
2001-07-03 20:53:49 +00:00
Bill Currie ccc00b0608 fix segs on ondeclared identifiers 2001-07-03 20:42:07 +00:00
Bill Currie 1e6fc51421 time to enable the new parser by default. 2001-06-29 00:12:11 +00:00
Bill Currie f2bb7ace41 add an option (--warn=error) to treat warnings as errors 2001-06-28 23:15:10 +00:00
Bill Currie 9c2398d923 stop processing files after errors have occured 2001-06-28 23:08:52 +00:00
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 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 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 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
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
Bill Currie 90a0cdfedf now seems to get through CustomTF properly, but better def handling is needed 2001-06-19 23:35:09 +00:00
Adam Olsen 67e4fa85bf add support for \<, \>, and \^ to qfcc. \< bolds all characters (toggles bold really) until \>, and \^ bolds (toggles) the next character. 2001-06-19 23:27:07 +00:00
Bill Currie 20bf698330 fix \x handling for 0-9 2001-06-19 22:26:16 +00:00
Bill Currie f50ce04ccb d'oh, forgot to add 10 for a-f and A-F 2001-06-19 22:13:35 +00:00
Bill Currie af701d74cd fix infinite loop for \x... 2001-06-19 21:45:57 +00:00
Bill Currie 2647e63810 finally fix the tupe corruption. 2001-06-19 16:01:38 +00:00
Bill Currie bdc0ba32ca pr_lex.c:
add PR_PrintType (and lotsa debug to PR_FindType)
qc-parse.y:
	fix up one bit of type corruption, only to find another :/
2001-06-19 07:28:50 +00:00
Bill Currie 89fecd7cee slowly getting there with defs processing. still borked 2001-06-18 22:51:49 +00:00
Bill Currie 9f158b148e now cross builds out-of-the-box 2001-06-16 05:16:02 +00:00
Bill Currie 7254dc0052 rename filelength to FileLength to avoid a name clash in windows 2001-06-16 04:27:22 +00:00
Bill Currie b595f0122f got function params scope sort of sorted out 2001-06-15 20:38:57 +00:00