Commit graph

537 commits

Author SHA1 Message Date
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
Jeff Teunissen
890efff350 Forge: Remove some files that we can't use with OpenStep. If anyone needs them for porting to
NSGraphicsContext, let me know and I'll provide them.
2001-10-24 12:41:38 +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
Jeff Teunissen
6af08f0468 Forge: rip some useless stuff out of configure. 2001-10-20 00:48:15 +00:00
Jeff Teunissen
c38e76fce7 Forge: Gorm updates -- figuring out how connections work :) 2001-10-20 00:37:20 +00:00
Jeff Teunissen
73e53986a3 Forge: Preferences updates -- use notifications instead of globals. 2001-10-20 00:33:54 +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
40489cb166 Config.h.in is generated, so remove from cvs 2001-10-14 06:10:45 +00:00
Jeff Teunissen
69c558d78c Vector class for Forge. Don't know if we need it, but it helped me to
grok vectors.
2001-10-14 05:57:38 +00:00
Jeff Teunissen
f7b0227299 This is all seriously broken, but I'm committing it so that it can be
worked on by other people as well. :)
2001-10-14 05:55:21 +00:00
Bill Currie
c8e1e7942a correct type error checking for vectors vs floats 2001-10-12 03:58:22 +00:00
Jeff Teunissen
510ce73d65 A Gorm file for the Forge interface. 2001-10-10 01:49:57 +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
922895ed99 comment out unused var 2001-10-02 19:33:31 +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
1a3a599ab3 ignore gas2masm 2001-09-28 07:33:46 +00:00
Bill Currie
f442e0d980 make gendefs put its rcsid into its generated files 2001-09-28 07:27:13 +00:00
Bill Currie
7407e4f1b7 and some more 2001-09-28 07:09:38 +00:00
Bill Currie
bcd54926b4 make compile with gcc 3.0 2001-09-28 03:58:51 +00:00
Bill Currie
83db5c0194 fix --with-qf 2001-09-28 03:47:22 +00:00
Jeff Teunissen
cd5f322cc1 Move along, nothing to see here... :) 2001-09-26 03:39:44 +00:00
Bill Currie
06da30ac89 mingw build fixes again (including mostly working in sid: got some link issues) 2001-09-25 06:18:30 +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
e71cbaf5ef fix for -- 2001-08-20 22:16:07 +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
2774260898 test ^ 2001-08-09 16:39:08 +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
Adam Olsen
ae133d0a90 Modify progs to add builtins at runtime. It should be trivial to
lookup functions by name, and make all our new QC builtins allocate
numbers automatically.
2001-08-03 06:40:28 +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
89da47335b tests, tests, tests 2001-07-27 20:56:16 +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
c553917c53 various tests 2001-07-25 21:48:20 +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
638cd005b0 return type testing 2001-07-25 02:28:04 +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
07fbe47294 tests for if (simple expression) 2001-07-24 22:29:16 +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
1fca85ee0a kill some unneeded tests 2001-07-20 23:18:03 +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
edcc313501 debug info for local variables is now used. only works when tracing atm:/ 2001-07-19 07:27:14 +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
3eedd3d8fc more tests 2001-07-18 19:04:47 +00:00
Bill Currie
144eba8b3c it seems that the qcc variants that strip global defs only strip the name, so
don't bother fixing missing defs (but /do/ complain if any are missing). I
suspect full def striping would have seriously broken things.
2001-07-18 18:03:53 +00:00
Bill Currie
152114f1cd works now, though I don't imagine save games will work too well :) 2001-07-18 17:59:16 +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
d6c2943ae3 defs.c:
use the right hash table
fix_globals.c:
	clean up the math
2001-07-18 15:42:08 +00:00
Bill Currie
9d50fea8e5 more tests 2001-07-18 06:37:59 +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
Bill Currie
c298d4919c actually do some fixups, but it segs atm :/ 2001-07-18 00:26:14 +00:00
Bill Currie
36af2c6078 check for missing defs (and use the new quakefs subversion mechanism) 2001-07-17 22:15:41 +00:00
Jeff Teunissen
3e1bbd47df Add a TODO file for qfcc 2001-07-17 21:51:10 +00:00
Bill Currie
3488946bb5 slightly more interesting output while I procrastinate doing the hard bits 2001-07-17 20:33:17 +00:00
Bill Currie
c50793b54a beginnings of a progs re-deffer tool to take care of stupid qc compilers that
strip def names.
2001-07-17 20:05:57 +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
c749bc77be add *.sym 2001-07-15 02:58:22 +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
9fa7ecd14d line number tests for while 2001-07-15 01:49:24 +00:00
Bill Currie
6e06ecc461 debug testing 2001-07-14 23:52:56 +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
7fce7e53ff more test (need to find a way to do automated tests, I think) 2001-07-12 23:11:40 +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
ecff96258f cmd.[ch]:
api change: Cmd_Args () now takes a parameter inidcating which arg to
	start at for grabbing the un-parsed command line
qw/source/sv_ccmds.c:
	implement kk's tell command and user name matching (though # is used for
	the wildcard and it's still case sensitive)
everything else:
	adjust for the new Cmd_Args protype
2001-07-10 18:25:54 +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
f6575ca262 more testing 2001-07-07 02:38:40 +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
8f04a482f0 #include foo/bar.qc now works 2001-06-29 16:14:47 +00:00
Bill Currie
1e6fc51421 time to enable the new parser by default. 2001-06-29 00:12:11 +00:00
Bill Currie
5a019e9321 don't need to print statement addresses any more 2001-06-29 00:05:34 +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
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
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
Bill Currie
eeaab95be5 beginnings of expression and def handling. 2001-06-15 19:38:43 +00:00
Bill Currie
373ea8132a more work on the code generation and make generally usable again by disabling
the new stuff
2001-06-15 07:16:18 +00:00
Bill Currie
f9baacd440 beginnings of code generation. hangs :) 2001-06-14 21:49:47 +00:00
Bill Currie
00f1288940 don't delete processed files if --keep is given 2001-06-13 22:56:20 +00:00
Bill Currie
d7ebba6a74 parses CustomTF now, but no code generation 2001-06-13 18:35:41 +00:00
Bill Currie
c89da89b69 almost parses CustomTF ($macro junk next) 2001-06-13 07:16:39 +00:00
Bill Currie
2c26de2c2b oops 2001-06-12 22:26:52 +00:00
Bill Currie
72b93d0062 more stuff 2001-06-12 22:26:10 +00:00
Bill Currie
d59048d592 pass given params to qfcc 2001-06-12 22:20:45 +00:00
Bill Currie
489ddbc7a7 getting closer. soon timie to start putting real code in there 2001-06-12 21:06:28 +00:00
Bill Currie
7d52f12248 clean up C warnings 2001-06-12 20:24:02 +00:00
Bill Currie
3be018e1f9 beginnings of a bison grammar for qc 2001-06-12 19:44:26 +00:00
Bill Currie
c0654f3541 miss tagged string != string 2001-06-12 15:29:05 +00:00
Bill Currie
aa825853bf full \ handling in strings (including \e for escape (why C doesn't have that
is beyond me))
2001-06-11 23:37:01 +00:00
Bill Currie
73ce5c6f9c what's this .vimrc? :) 2001-06-11 20:12:29 +00:00
Bill Currie
fcd29459e4 produce line directive output and clean up the generated files 2001-06-11 18:04:32 +00:00
Bill Currie
dfb6062f9d fix an out-by-one for line directives at the beginning of the file 2001-06-11 17:51:09 +00:00
Bill Currie
c732d098f4 add '# 1 "foo.qcc" ...' (flags ignored) processing to qfcc so preprocessed
output can make sense.
2001-06-11 15:43:06 +00:00
Adam Olsen
f094db3977 add support for --with-qf=/usr/local as a prefix for lib and include dirs 2001-06-10 13:07:30 +00:00
Bill Currie
bbc97079e0 pr_comp.h:
define PROG_ID_VERSION as 6 and redefine PROG_VERSION as 0x00fff001
	(0.fff.001) for the new qc features.
pr_edict.c:
	support version 6 and version 0.fff.001 progs
qfcc.h:
	add version field to options_t
	add min_version field to opcode_t
pr_opcode.c:
	set the minumum version of each opcode (gee, that table is getting ugly)
	filter out opcodes with too high a min_version when initializing the opcode
	hash tables.
qfcc.c:
	update help output.
	accept --id to limit code generation to id compatable (ver 6) progs.
	default progs generation to 0.fff.001
2001-06-09 06:25:33 +00:00
Bill Currie
e61884fefb add a test for initialized locals 2001-06-08 22:54:34 +00:00
Bill Currie
0186732130 make initialized local variables work /properly/
local float urk = 0;
STORE_F    46(IMMEDIATE)  0.0   55(?)
2001-06-08 20:13:10 +00:00
Bill Currie
7ef4c2776e Immidiate sharing now /works/ (shaved off two pr_globals from CustomTF, too:).
Detect assignments to initialized globals and give an error, unless the --cow
(copy on write) option is given, and then allocate a new global for the var,
clear its initialized flag.
Relocate all globals.
2001-06-08 06:32:15 +00:00