Wolfgang (Blub) Bumiller
|
586bb07c4d
|
Use the current context, not the one from a NULL value... for ast_return
|
2012-08-18 18:00:20 +02:00 |
|
Wolfgang (Blub) Bumiller
|
701c387dbf
|
parse 'return' without values better
|
2012-08-18 17:58:51 +02:00 |
|
Wolfgang (Blub) Bumiller
|
2cf4895cc7
|
Fixup some possibly uninitialized value when parsing 'return'
|
2012-08-18 17:48:29 +02:00 |
|
Wolfgang (Blub) Bumiller
|
0e3bc87c75
|
Don't re-add defs which had a prototype
|
2012-08-18 17:42:38 +02:00 |
|
Wolfgang (Blub) Bumiller
|
24a21d0816
|
ast_value_copy should copy the expression substructure as well - exposing ast_value_copy to the outside since the parser needs to copy complete types when multiple variables are declared with commas
|
2012-08-18 17:16:20 +02:00 |
|
Wolfgang (Blub) Bumiller
|
6daf47fc5b
|
set parser->lex to NULL after closing
|
2012-08-18 16:42:17 +02:00 |
|
Wolfgang (Blub) Bumiller
|
16b5f28b40
|
don't deallocate the parser on a compile error -_-
|
2012-08-18 16:40:20 +02:00 |
|
Wolfgang (Blub) Bumiller
|
b6ab0207b1
|
ast_block_collect: add to ast_block->collect and set the node's .keep=true, those will now always be deleted by the ast_block dtor
|
2012-08-18 16:27:40 +02:00 |
|
Wolfgang (Blub) Bumiller
|
68e4a937f2
|
collect vector-member locals in ast_block->collect, like a garbage collection...
|
2012-08-18 16:24:26 +02:00 |
|
Wolfgang (Blub) Bumiller
|
897bd5727e
|
Revert "let ast_node have a use-counter, helpful for the parser to delete unused fields which otherwise get lost in the void"
This reverts commit 25ffd11aa6 .
|
2012-08-18 16:20:45 +02:00 |
|
Wolfgang (Blub) Bumiller
|
d4587e5667
|
Revert "delete ast_members from parser->locals when they were unused"
This reverts commit cdeffb6de9 .
|
2012-08-18 16:20:23 +02:00 |
|
Wolfgang (Blub) Bumiller
|
cdeffb6de9
|
delete ast_members from parser->locals when they were unused
|
2012-08-18 16:20:17 +02:00 |
|
Wolfgang (Blub) Bumiller
|
25ffd11aa6
|
let ast_node have a use-counter, helpful for the parser to delete unused fields which otherwise get lost in the void
|
2012-08-18 16:16:43 +02:00 |
|
Wolfgang (Blub) Bumiller
|
d5e01ba904
|
clear all the remaining vectors in the parser
|
2012-08-18 15:59:29 +02:00 |
|
Wolfgang (Blub) Bumiller
|
2045321296
|
free parser->fields and parser->locals at parser_cleanup
|
2012-08-18 15:55:50 +02:00 |
|
Wolfgang (Blub) Bumiller
|
483ce89d78
|
Delete fields in parser_cleanup
|
2012-08-18 15:51:53 +02:00 |
|
Wolfgang (Blub) Bumiller
|
e2faedcca8
|
the opening paren is now an operator - to fix up the precedence rules, now 'anentity.afunction()' compiles
|
2012-08-18 15:25:45 +02:00 |
|
Wolfgang (Blub) Bumiller
|
267bb7d41e
|
get rid of additional trailing \n on parseerror
|
2012-08-18 14:55:37 +02:00 |
|
Wolfgang (Blub) Bumiller
|
46b4eb1f46
|
WARN_ERROR -> opts_werror in parser.c
|
2012-08-18 14:51:12 +02:00 |
|
Wolfgang (Blub) Bumiller
|
7ecd9714b0
|
add the type of whatever is 'not a function' to that error message
|
2012-08-18 12:45:51 +02:00 |
|
Wolfgang (Blub) Bumiller
|
6b1a0541c9
|
parser_strdup to wrap util_strdup and actually dup empty strings
|
2012-08-18 12:26:21 +02:00 |
|
Wolfgang (Blub) Bumiller
|
e00c8da849
|
Added support for some modelgen/spritegen commands
|
2012-08-16 20:47:31 +02:00 |
|
Wolfgang (Blub) Bumiller
|
54dcbc22bf
|
NOT for entity, function and string - we're not constant-folding it for functions and entities right now
|
2012-08-16 16:24:47 +02:00 |
|
Wolfgang (Blub) Bumiller
|
31a8cd80c8
|
unary NOT operator for float and vector
|
2012-08-16 16:21:19 +02:00 |
|
Wolfgang (Blub) Bumiller
|
1a3a0014c5
|
even in non-qcc mode we need to search the variables for fields because of field-pointers
|
2012-08-16 16:21:09 +02:00 |
|
Wolfgang (Blub) Bumiller
|
7c731b70cf
|
verbose error about unhandled operators
|
2012-08-16 16:07:00 +02:00 |
|
Wolfgang (Blub) Bumiller
|
d81ef81246
|
Fix an error message
|
2012-08-16 15:59:09 +02:00 |
|
Wolfgang (Blub) Bumiller
|
ec439d7880
|
Allow fieldpointer parameters in functions, allow function fields again
|
2012-08-16 15:27:06 +02:00 |
|
Wolfgang (Blub) Bumiller
|
47243d0df1
|
allow redeclaration of fields, but warn about them
|
2012-08-16 15:14:39 +02:00 |
|
Wolfgang (Blub) Bumiller
|
5a383ac2b0
|
Reorganizing expression parsing to allow prefix-operators like unary minus
|
2012-08-16 15:11:03 +02:00 |
|
Wolfgang (Blub) Bumiller
|
c4730b405b
|
unary - operator implemented, adding imm_vector_zero and imm_float_zero since those should be accessible quickly
|
2012-08-16 14:23:18 +02:00 |
|
Wolfgang (Blub) Bumiller
|
ba1886ad31
|
add some missing casts to some mem_a
|
2012-08-16 12:34:28 +02:00 |
|
Wolfgang (Blub) Bumiller
|
470fc68b06
|
don't try to access function-local functions outside of functions...
|
2012-08-16 11:36:16 +02:00 |
|
Wolfgang (Blub) Bumiller
|
2a7e7046d9
|
assigning values to constant globals
|
2012-08-16 11:33:29 +02:00 |
|
Wolfgang (Blub) Bumiller
|
b7f9b20a2b
|
strpcy->memcpy
|
2012-08-15 17:01:16 +02:00 |
|
Wolfgang (Blub) Bumiller
|
42e2102839
|
remove MEM_VECTOR_INIT - the memset does it all, don't give a false sense of initialization since it wasn't complete anyway
|
2012-08-15 12:13:15 +02:00 |
|
Wolfgang (Blub) Bumiller
|
e5124ecf2f
|
Fix memset on the parser...
|
2012-08-15 12:11:15 +02:00 |
|
Wolfgang (Blub) Bumiller
|
475cb97404
|
bit-and const-fold should use bitand not bitor
|
2012-08-14 23:52:57 +02:00 |
|
Wolfgang (Blub) Bumiller
|
c0ddb0908c
|
constant folding for bit and logic ops, added some macros to shorten the code (by a lot)
|
2012-08-14 23:50:49 +02:00 |
|
Wolfgang (Blub) Bumiller
|
a5b3faae30
|
const folding for division
|
2012-08-14 23:43:08 +02:00 |
|
Wolfgang (Blub) Bumiller
|
b8d92dfa01
|
constant folding for +, - and *
|
2012-08-14 22:51:05 +02:00 |
|
Wolfgang (Blub) Bumiller
|
9ed9a0c669
|
get rid of more duplicate code
|
2012-08-14 22:34:20 +02:00 |
|
Wolfgang (Blub) Bumiller
|
de4fe00d2f
|
Allow multiple fields to be declared using comma
|
2012-08-14 22:31:08 +02:00 |
|
Wolfgang (Blub) Bumiller
|
e9844d9abf
|
vector fields now get _x, _y and _z too
|
2012-08-14 20:00:11 +02:00 |
|
Wolfgang (Blub) Bumiller
|
4c5c615f95
|
combine 2 ifs to shorten code a little
|
2012-08-14 17:48:22 +02:00 |
|
Wolfgang (Blub) Bumiller
|
8dd7943768
|
-= operator
|
2012-08-14 17:44:14 +02:00 |
|
Wolfgang (Blub) Bumiller
|
3ef6da8e5b
|
error message replacement
|
2012-08-14 17:36:20 +02:00 |
|
Wolfgang (Blub) Bumiller
|
a574da7df8
|
+= operator implemented
|
2012-08-14 17:30:55 +02:00 |
|
Wolfgang (Blub) Bumiller
|
3544cfa2b2
|
make the += operator use binstore actually, currently it was acting like a regular plus
|
2012-08-14 17:27:52 +02:00 |
|
Wolfgang (Blub) Bumiller
|
f39a47e4ed
|
replacing lots of error messages
|
2012-08-14 17:27:26 +02:00 |
|
Wolfgang (Blub) Bumiller
|
7506817224
|
shush typo
|
2012-08-14 17:17:35 +02:00 |
|
Wolfgang (Blub) Bumiller
|
c4cd49a408
|
different warning message
|
2012-08-14 17:08:00 +02:00 |
|
Wolfgang (Blub) Bumiller
|
ca1c9b921d
|
another -Wextensions situation: -std=qcc has no for loops
|
2012-08-14 16:59:14 +02:00 |
|
Wolfgang (Blub) Bumiller
|
16093adb09
|
fixup do-while parsing, expect a semicolon afterwards
|
2012-08-14 16:42:29 +02:00 |
|
Wolfgang (Blub) Bumiller
|
339c0e5870
|
do-while loops
|
2012-08-14 16:38:11 +02:00 |
|
Wolfgang (Blub) Bumiller
|
4d47c40cb9
|
parsewarning() now gets GMQCC_WARN since parsewarning returns whether or not the warning was treated as an error, thus we need to bail if it returns true
|
2012-08-14 16:26:42 +02:00 |
|
Wolfgang (Blub) Bumiller
|
2d9623cbe8
|
the 'local' keyword now also introduces the declaration of a local variable
|
2012-08-14 16:22:38 +02:00 |
|
Wolfgang (Blub) Bumiller
|
107100c666
|
-dump option, by default the IR is not dumped anymore
|
2012-08-14 16:19:23 +02:00 |
|
Wolfgang (Blub) Bumiller
|
1638cc9f01
|
-Wextensions for -std=qcc: warn about missing 'local' keyword when declaring a variable without it
|
2012-08-14 16:17:09 +02:00 |
|
Wolfgang (Blub) Bumiller
|
cc48802685
|
eof after parsing the semicolon of a function declaration shouldn't be an error...
|
2012-08-14 16:14:26 +02:00 |
|
Wolfgang (Blub) Bumiller
|
78d223fdcb
|
Getting rid of some debug output
|
2012-08-14 16:12:12 +02:00 |
|
Wolfgang (Blub) Bumiller
|
c2364567de
|
allow a semicolon after function bodies - make it mandatory with -std=qcc
|
2012-08-14 14:38:02 +02:00 |
|
Wolfgang (Blub) Bumiller
|
51719db2cf
|
actually print the prototype's file+line, not the current one
|
2012-08-14 14:19:44 +02:00 |
|
Wolfgang (Blub) Bumiller
|
65fb4b34b5
|
type comparison, function prototypes
|
2012-08-14 14:14:56 +02:00 |
|
Wolfgang (Blub) Bumiller
|
e35a26a9e1
|
the error about an already-declared variable should display the place its been previously declared at
|
2012-08-14 13:50:55 +02:00 |
|
Wolfgang (Blub) Bumiller
|
5ef88dbda7
|
removed redundant error+file+line in parseerror()
|
2012-08-14 13:15:55 +02:00 |
|
Wolfgang (Blub) Bumiller
|
104e9bce92
|
don't add the general 'parse error' message if an error has already been printed
|
2012-08-14 11:54:27 +02:00 |
|
Wolfgang (Blub) Bumiller
|
579ac3dd5d
|
Working towards a saner error-output system, adding -Werror
|
2012-08-14 11:34:07 +02:00 |
|
Wolfgang (Blub) Bumiller
|
c08966a2a4
|
remove now unused files
|
2012-08-14 10:57:09 +02:00 |
|
Wolfgang (Blub) Bumiller
|
69d9afbc69
|
while, for
|
2012-08-13 17:10:13 +02:00 |
|
Wolfgang (Blub) Bumiller
|
1c4a11f6fb
|
factored out 'if' parsing code into a function, added 'while' parsing, and errors for more unsupported operators
|
2012-08-13 16:45:35 +02:00 |
|
Wolfgang (Blub) Bumiller
|
5ca3fed36a
|
Even more operators
|
2012-08-13 15:33:32 +02:00 |
|
Wolfgang (Blub) Bumiller
|
d8890fda9e
|
More operations
|
2012-08-13 15:24:55 +02:00 |
|
Wolfgang (Blub) Bumiller
|
5390b2d7c2
|
nicer error messages, bitand and bitor for floats allowed
|
2012-08-13 15:13:43 +02:00 |
|
Wolfgang (Blub) Bumiller
|
9f151e82df
|
Check types on + and - operations
|
2012-08-13 15:09:27 +02:00 |
|
Wolfgang (Blub) Bumiller
|
c7cca404dc
|
after a closing paren another operator has to be expected again
|
2012-08-12 20:21:21 +02:00 |
|
Wolfgang (Blub) Bumiller
|
fb8a9b3ccf
|
some debug outputs which can be activated via a define, fixing a bug where the shunting yard tries to apply operators when there are none left
|
2012-08-12 20:13:14 +02:00 |
|
Wolfgang (Blub) Bumiller
|
6806fd1e86
|
it's a member of entity, not of a field...
|
2012-08-12 19:29:18 +02:00 |
|
Wolfgang (Blub) Bumiller
|
6409bf455f
|
-std=gmqcc way to handle fields by 'namespace'
|
2012-08-12 19:24:08 +02:00 |
|
Wolfgang (Blub) Bumiller
|
ae73332832
|
without -std=gmqcc fields are accessible anywhere where globals are
|
2012-08-12 19:02:52 +02:00 |
|
Wolfgang (Blub) Bumiller
|
437988c5b4
|
don't rewind local variables too far
|
2012-08-12 18:58:46 +02:00 |
|
Wolfgang (Blub) Bumiller
|
5c0ac35d4c
|
tempcomitting parser changes for fields
|
2012-08-11 15:40:03 +02:00 |
|
Wolfgang (Blub) Bumiller
|
ce082551d8
|
handling if/else, shunting yard now leaves unmatched closing paren-tokens on the parser for this purpose
|
2012-08-11 11:17:46 +02:00 |
|
Wolfgang (Blub) Bumiller
|
3e4f490a59
|
Handling blocks and inner blocks
|
2012-08-11 10:35:10 +02:00 |
|
Wolfgang (Blub) Bumiller
|
d3d2e00b64
|
let's be less insane with function naming and prepare parsing for control structures
|
2012-08-11 10:30:54 +02:00 |
|
Wolfgang (Blub) Bumiller
|
167b432622
|
creating vector's _xyz globals now, accessing them
|
2012-08-10 22:59:47 +02:00 |
|
Wolfgang Bumiller
|
71d79d99d3
|
parser_init,compile,finish,cleanup - used in main
|
2012-07-28 21:21:41 +02:00 |
|
Wolfgang Bumiller
|
342836c6df
|
adapting to change in master: ast_store takes an ast_expression
|
2012-07-28 18:17:29 +02:00 |
|
Wolfgang Bumiller
|
ae12583ada
|
Adding more cleanup; checking whether or not a return has the right type
|
2012-07-28 16:06:55 +02:00 |
|
Wolfgang Bumiller
|
75812d486a
|
Handling output file, writing output file
|
2012-07-27 18:22:39 +02:00 |
|
Wolfgang Bumiller
|
79753d05bd
|
Handling vector constants now too
|
2012-07-27 16:20:53 +02:00 |
|
Wolfgang Bumiller
|
b88e25ed81
|
Handling string-immediates
|
2012-07-27 16:10:43 +02:00 |
|
Wolfgang Bumiller
|
0a5e5c07e5
|
Adapting to changes of where parameters are stored in master
|
2012-07-27 15:26:48 +02:00 |
|
Wolfgang Bumiller
|
6379d39bb7
|
Starting some typechecking. Function parameters must be part of ast_expression_common, they're part of the type, not ast_value...
|
2012-07-27 15:07:25 +02:00 |
|
Wolfgang Bumiller
|
65f4f03aa5
|
Handling calls correctly now
|
2012-07-27 15:02:39 +02:00 |
|
Wolfgang Bumiller
|
c79bc784a3
|
Parsing function calls
|
2012-07-27 14:40:43 +02:00 |
|
Wolfgang Bumiller
|
3618d071ff
|
fixing comma operator
|
2012-07-27 13:42:02 +02:00 |
|
Wolfgang Bumiller
|
e8b63575b2
|
keeping blocks around
|
2012-07-27 13:28:57 +02:00 |
|
Wolfgang Bumiller
|
6b85f3d370
|
factoring out the closing-paren handling code since it'll be used recursively
|
2012-07-27 13:07:16 +02:00 |
|
Wolfgang Bumiller
|
623046dda8
|
the comma is now in the operator list
|
2012-07-27 12:53:15 +02:00 |
|