Wolfgang (Blub) Bumiller
|
b7117e08ce
|
parsewarning and genwarning to use vcompile_warning
|
2012-12-17 18:26:26 +01:00 |
|
Dale Weiler
|
8e0515de44
|
Added -Wunknown-pragmas
|
2012-12-17 16:14:43 +00:00 |
|
Wolfgang (Blub) Bumiller
|
f0687adbaa
|
Error when the assignop for an assignment is invalid, eg. when trying to assign arrays
|
2012-12-17 16:00:08 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f9b1d057b5
|
Moving all the global opts_ variables into a struct, now there's one global 'opts' struct
|
2012-12-06 13:23:53 +01:00 |
|
Wolfgang (Blub) Bumiller
|
04a57d871e
|
unexpected typename error when there are typenames in an expression
|
2012-12-05 17:14:44 +01:00 |
|
Wolfgang (Blub) Bumiller
|
8777624fe2
|
ast_block_add_expr now lets the block fully adopt the type of the added expression
|
2012-12-05 12:57:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f140251e85
|
s/parser_sy_pop/parser_sy_apply_operator/
|
2012-12-04 21:04:14 +01:00 |
|
Wolfgang (Blub) Bumiller
|
8e077f378e
|
-Werror now changes the word 'warning' into 'error'
|
2012-12-04 12:54:53 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0e4e81d94f
|
Parsing the 'noref' keyword; this also gets rid of some code duplication
|
2012-12-04 12:17:43 +01:00 |
|
Wolfgang (Blub) Bumiller
|
88a4721de7
|
Parsing noref-pragma
|
2012-12-03 20:37:02 +01:00 |
|
Wolfgang (Blub) Bumiller
|
02ec45363e
|
Get rid of some code duplication
|
2012-12-02 17:57:08 +01:00 |
|
Wolfgang (Blub) Bumiller
|
8188d0b9f7
|
Sanity check for -Wternary-precedence
|
2012-12-01 12:36:54 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ed4c513b1e
|
-Wternary-precedence; *sight* this is tough
|
2012-12-01 12:35:46 +01:00 |
|
Wolfgang (Blub) Bumiller
|
b966cd4f4d
|
More ternary fixes
|
2012-12-01 00:50:04 +01:00 |
|
Wolfgang (Blub) Bumiller
|
43c0343755
|
Offsetting builtins so we can use 'if builtin!=0' as condition but also allow a '#0' builtin
|
2012-12-01 00:36:24 +01:00 |
|
Wolfgang (Blub) Bumiller
|
75ab0e6663
|
and 'const' is a keyword, not an ident
|
2012-12-01 00:33:07 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ac9d68387c
|
var const / const var - both need to be allowed
|
2012-12-01 00:32:18 +01:00 |
|
Wolfgang (Blub) Bumiller
|
d52879315d
|
some SYA fix; adding optional variable parsing to the head of a switch block
|
2012-12-01 00:31:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
8d014cc6eb
|
changing parse_statement_or_block to return a bool and put the output block into a pointer, so that NULL can still be possible
|
2012-11-30 21:31:19 +01:00 |
|
Wolfgang (Blub) Bumiller
|
cda62cef20
|
apparently #0 is a valid builtin number, used for some NULL funcs
|
2012-11-30 21:25:18 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2a3e7c1cff
|
field constants - revert globals generated after fields
|
2012-11-30 21:11:25 +01:00 |
|
Wolfgang (Blub) Bumiller
|
316298650e
|
remember if an ast_value is a field-declaration, build fields before globals
|
2012-11-30 21:03:57 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f587e9cfb3
|
remove array-field without parens warning since it seems to not be broken in fteqcc anymore
|
2012-11-30 14:47:55 +01:00 |
|
Wolfgang (Blub) Bumiller
|
535fd5744b
|
lex_ctx of a return will be at the return keyword now
|
2012-11-30 14:42:18 +01:00 |
|
Wolfgang (Blub) Bumiller
|
207293bf74
|
revert 1 of the error messages
|
2012-11-30 14:37:54 +01:00 |
|
Wolfgang (Blub) Bumiller
|
321a1fe0d6
|
Keep track of the beginning of a block
|
2012-11-30 14:37:23 +01:00 |
|
Wolfgang (Blub) Bumiller
|
eec61af381
|
mark vectors as used when their members are used
|
2012-11-30 14:30:25 +01:00 |
|
Wolfgang (Blub) Bumiller
|
600ecda860
|
Set the full const/var qualifier; only generate warnings about unimplemented functions if they have no qualifier at all
|
2012-11-30 14:05:25 +01:00 |
|
Wolfgang (Blub) Bumiller
|
5e23e8296d
|
don't just store a 'bool constant' in the ast/ir, store the complete qualifier: 'int cvq', moved CV_ defines into gmqcc.h
|
2012-11-30 13:47:28 +01:00 |
|
Wolfgang (Blub) Bumiller
|
8e043c8447
|
Remove the 'warnreturn' parameter in some parser functions
|
2012-11-30 12:37:46 +01:00 |
|
Wolfgang (Blub) Bumiller
|
a58061464e
|
actually removing -Wmissing-return-values from parser.c and enabling the ast code for it
|
2012-11-30 12:11:36 +01:00 |
|
Wolfgang (Blub) Bumiller
|
08551eefba
|
Fix a small typo
|
2012-11-26 14:05:31 +01:00 |
|
Dale Weiler
|
77272da718
|
opval is asserted .. need (void) to hide warning when NDEBUG
|
2012-11-26 02:12:50 +00:00 |
|
Wolfgang (Blub) Bumiller
|
ec2ff09eff
|
operator &~= must not cause the generated binstore to free the destination twice
|
2012-11-26 00:15:07 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0af62801f4
|
Don't add redeclared globals a second time
|
2012-11-25 23:35:31 +01:00 |
|
Wolfgang (Blub) Bumiller
|
38df8b5e40
|
Another case for -fassign-function-types
|
2012-11-25 23:28:47 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0d3896ca54
|
introducing -fassign-function-types, previously guarded by std==qcc this is now the flag to cause a warning (-Wassign-function-types) instead of an error when assigning functions of wrong types
|
2012-11-25 23:27:48 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2f5a26a4de
|
__builtin_debug_printtype directive... helped me down tracking a bug: parsing typedeffed types in parameter lists properly now
|
2012-11-25 22:57:11 +01:00 |
|
Wolfgang (Blub) Bumiller
|
08ef8bd045
|
Only check the ast-type of a switch case, not if it's an ACTUAL constant, fteqcc doesn't either... grrr
|
2012-11-25 22:40:35 +01:00 |
|
Wolfgang (Blub) Bumiller
|
10f49a38ca
|
actually handle unary plus...
|
2012-11-25 22:38:52 +01:00 |
|
Wolfgang (Blub) Bumiller
|
42bd37a2e8
|
Ah right, 'var' is not an actual keyword, support TOKEN_IDENT-var inside functions
|
2012-11-25 22:26:28 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f1bbdb7d45
|
Use the correct default cv-qualifier on locals
|
2012-11-25 22:16:08 +01:00 |
|
Wolfgang (Blub) Bumiller
|
c62e0a93eb
|
Allow 'var' in functions... even there initialized locals seem to be constant by default... laaaaaaaame
|
2012-11-25 22:15:08 +01:00 |
|
Wolfgang (Blub) Bumiller
|
797ceb9e04
|
handling TOKEN_CHARCONST - -Wmultibyte-character
|
2012-11-25 22:11:21 +01:00 |
|
Wolfgang (Blub) Bumiller
|
e2602e6b87
|
Filling up remaining gotos at the end of a function for when the label is defined after the goto; erroring for missing labels
|
2012-11-25 21:56:38 +01:00 |
|
Wolfgang (Blub) Bumiller
|
24f9b63475
|
parsing goto
|
2012-11-25 21:53:14 +01:00 |
|
Wolfgang (Blub) Bumiller
|
474d8bd6f0
|
ast_label, and labels later used for goto
|
2012-11-25 21:27:14 +01:00 |
|
Wolfgang (Blub) Bumiller
|
336d91494f
|
temporarily disable the 'constant' flag when parsing the initializer to avoid the 'assigning to constant' error in a block-local constant
|
2012-11-25 21:10:43 +01:00 |
|
Wolfgang (Blub) Bumiller
|
22173df7bd
|
Allow 'const' within function bodies
|
2012-11-25 21:08:30 +01:00 |
|
Wolfgang (Blub) Bumiller
|
3424b7227b
|
Set the output to NULL always before parsing stuff
|
2012-11-25 20:48:06 +01:00 |
|
Wolfgang (Blub) Bumiller
|
4513fc4d0b
|
fix wrong parameter order in parse_variable calls, dammit I hate how 'bool' and 'int' are implicitly convertible here
|
2012-11-25 20:29:12 +01:00 |
|
Wolfgang (Blub) Bumiller
|
1b72cb264a
|
more on CV_CONST/CV_VAR, initializers to check 'constant' not just 'hasvalue'
|
2012-11-25 20:25:39 +01:00 |
|
Wolfgang (Blub) Bumiller
|
6cd432a909
|
const/variable qualifier flag for parse_variable
|
2012-11-25 20:22:47 +01:00 |
|
Wolfgang (Blub) Bumiller
|
779c974511
|
Allow dangling semicolons for now
|
2012-11-25 20:18:40 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f2887f1208
|
a '(void)' parameter list does not mean 1 parameter of type void, but empty... xonotic needs this
|
2012-11-25 19:44:21 +01:00 |
|
Wolfgang (Blub) Bumiller
|
b59401db1b
|
fixed: -frelaxed-switch check was in the wrong position
|
2012-11-25 19:42:16 +01:00 |
|
Wolfgang (Blub) Bumiller
|
353b1f945f
|
assignment to constant error
|
2012-11-25 19:37:31 +01:00 |
|
Wolfgang (Blub) Bumiller
|
39f572fe99
|
constant flag, -finitialized-nonconstants to turn initialized globals into mutable variables
|
2012-11-25 19:35:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
6e400ca81f
|
ast: isconst->hasvalue, const keyword will set the const flag
|
2012-11-25 19:30:10 +01:00 |
|
Wolfgang (Blub) Bumiller
|
55aa53beca
|
Parse the 'not' keyword in if as TOKEN_IDENT
|
2012-11-25 19:20:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ca033e5acd
|
Some side-effect propagation for better warnings, so that comma-operators with assignments in them don't cause the -Weffectless-statement warning, and fixing ternary precedence for fte operator list
|
2012-11-25 19:19:36 +01:00 |
|
Wolfgang (Blub) Bumiller
|
63d89f9f5a
|
Allow regular AND used on non-float types
|
2012-11-25 18:56:22 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2c0a9d78df
|
Guard translatable strings by -ftranslatable-strings, defaults to ON with -std=fteqcc
|
2012-11-25 18:25:01 +01:00 |
|
Wolfgang (Blub) Bumiller
|
66317aaef9
|
update noops flag while parsing a translatable string
|
2012-11-25 18:23:48 +01:00 |
|
Wolfgang (Blub) Bumiller
|
7838e772de
|
Translatable string constants
|
2012-11-25 18:22:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0df394dcbc
|
parser_const_string can now create a translatable string
|
2012-11-25 18:17:08 +01:00 |
|
Wolfgang (Blub) Bumiller
|
e22af32805
|
Fix parsing of multi-dot field types
|
2012-11-25 17:43:13 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2884556fe3
|
multiple dots to start a field type, ie ..float for a fieldpointer field
|
2012-11-25 17:37:54 +01:00 |
|
Wolfgang (Blub) Bumiller
|
b5d6f454a4
|
moving cleanvar=false out of a condition
|
2012-11-25 16:20:22 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2da37129d7
|
a more verbose error
|
2012-11-25 15:58:10 +01:00 |
|
Wolfgang (Blub) Bumiller
|
4b619ce1cd
|
-Wconst-var
|
2012-11-25 15:56:13 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f6a374c1d5
|
free the _locals vector
|
2012-11-25 15:31:26 +01:00 |
|
Wolfgang (Blub) Bumiller
|
3c0c002e2f
|
Fix a missing uninitialized value which caused typedefs within functions to cause a segfault
|
2012-11-25 15:30:31 +01:00 |
|
Wolfgang (Blub) Bumiller
|
63d9e44f56
|
Allow typedefs to shadow defs of previous scopes
|
2012-11-25 15:27:22 +01:00 |
|
Wolfgang (Blub) Bumiller
|
b851f542ac
|
Implementing typedef
|
2012-11-25 15:21:52 +01:00 |
|
Wolfgang (Blub) Bumiller
|
d69b576d6b
|
Fix some uninitialized values
|
2012-11-25 13:55:29 +01:00 |
|
Wolfgang (Blub) Bumiller
|
613e1e7247
|
Change the parser to use the hashtable functions
|
2012-11-25 13:23:37 +01:00 |
|
Dale Weiler
|
5c0a62be96
|
Add respective license headers + some cleanups
|
2012-11-24 21:22:35 +00:00 |
|
Wolfgang (Blub) Bumiller
|
86f3ef2194
|
turn the message about global variable double-declaration into a warning instead of an error on std != gmqcc
|
2012-11-23 22:30:35 +01:00 |
|
Wolfgang (Blub) Bumiller
|
39b8b6a660
|
warn about double function declarations...
|
2012-11-23 22:22:22 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2bc99076cf
|
'var' is now no keyword anymore, :\
|
2012-11-23 22:07:35 +01:00 |
|
Wolfgang (Blub) Bumiller
|
1c7e9c5fde
|
handling 'const' - still need correct separation of constant and just initialized later when we distinguish between them
|
2012-11-23 21:52:16 +01:00 |
|
Wolfgang (Blub) Bumiller
|
6df6906ed2
|
Adding an unrecognized keywords error
|
2012-11-23 21:41:50 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0d33939b1b
|
operator &~=
|
2012-11-23 14:39:05 +01:00 |
|
Wolfgang (Blub) Bumiller
|
122e80cc4d
|
operators &= and |=
|
2012-11-23 14:28:11 +01:00 |
|
Wolfgang (Blub) Bumiller
|
553f3df5df
|
*= and /= operators
|
2012-11-23 14:24:58 +01:00 |
|
Wolfgang (Blub) Bumiller
|
1223e04e05
|
correcting an error message
|
2012-11-23 12:28:51 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f22f1af891
|
Suffix operators, and remembering the const-float-1 in parser_t
|
2012-11-23 12:25:13 +01:00 |
|
Wolfgang (Blub) Bumiller
|
4079835c7e
|
Parsing of suffix operators, NOTE: applied like prefix operators just to get it committed in a compilable state
|
2012-11-23 11:57:08 +01:00 |
|
Wolfgang (Blub) Bumiller
|
38f5090778
|
Prefix ++,--
|
2012-11-23 11:52:03 +01:00 |
|
Wolfgang (Blub) Bumiller
|
9a43eb6370
|
a type_name -> ast_type_to_string conversion
|
2012-11-23 11:45:22 +01:00 |
|
Dale Weiler
|
c748293ccb
|
Use memcmp for comparing doubles
|
2012-11-23 06:41:06 +00:00 |
|
Dale Weiler
|
b5507b3127
|
Make it compile with -Wall and -pedantic
|
2012-11-23 02:23:22 +00:00 |
|
Wolfgang (Blub) Bumiller
|
905ca8819b
|
unused params in parser.c
|
2012-11-22 21:44:09 +01:00 |
|
Wolfgang (Blub) Bumiller
|
dfde3a583c
|
Remove unused macro
|
2012-11-22 21:10:37 +01:00 |
|
Wolfgang (Blub) Bumiller
|
07d5686a47
|
Fixing shadows in parser.c - moving generate_checksum over the static parser global
|
2012-11-22 20:47:46 +01:00 |
|
Wolfgang (Blub) Bumiller
|
6983142c4d
|
-dump vs -dumpfin; to see the IR before and after finalizing functions
|
2012-11-21 21:53:38 +01:00 |
|
Wolfgang (Blub) Bumiller
|
9c8dc43775
|
error if the ternary operands aren't of the same type - except for the first one of course
|
2012-11-21 20:56:51 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0787038934
|
check 'ternaries' count
|
2012-11-21 20:50:27 +01:00 |
|
Wolfgang (Blub) Bumiller
|
90bd91e294
|
Utilizing vec_last more
|
2012-11-21 20:44:43 +01:00 |
|
Wolfgang (Blub) Bumiller
|
55c2148016
|
operator handling for ternary
|
2012-11-21 20:41:26 +01:00 |
|
Wolfgang (Blub) Bumiller
|
11f1af78d5
|
Removing some obsolete messages
|
2012-11-21 20:40:10 +01:00 |
|
Wolfgang (Blub) Bumiller
|
e0ddf32d2e
|
parsing the ternary
|
2012-11-21 20:36:42 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f4043faf0b
|
-frelaxed-switch to enable switch on non-constant cases
|
2012-11-19 22:27:58 +01:00 |
|
Wolfgang (Blub) Bumiller
|
4649c12fa9
|
Parsing of switches
|
2012-11-19 22:06:29 +01:00 |
|
Wolfgang (Blub) Bumiller
|
b72900214b
|
fix a warning and remove unused variables
|
2012-11-19 19:44:26 +01:00 |
|
Wolfgang (Blub) Bumiller
|
ea75003cf4
|
break and continue support
|
2012-11-19 19:39:52 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2d8bf20d43
|
moving 'return' parsing into a function
|
2012-11-19 19:22:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f023004a67
|
Make functions copy their extparams
|
2012-11-18 20:06:28 +01:00 |
|
Wolfgang (Blub) Bumiller
|
e8d1e5dbc0
|
Make the >8 parameter message a warning
|
2012-11-18 19:19:38 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0330b082a2
|
The ftepp now always outputs into a string buffer, with -E the buffer will be dumped to stdout or the via -o specified file, without -E it'll be passed to the parser to be compiled
|
2012-11-18 13:33:53 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f0d56d07fe
|
Merge branch 'master' into ftepp
|
2012-11-18 13:06:29 +01:00 |
|
Wolfgang (Blub) Bumiller
|
cec58b53e4
|
Collect accessor functions in the parser so they can later be deleted, fixed that leak
|
2012-11-18 13:06:16 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f47a20aa53
|
Removing some code duplication
|
2012-11-18 13:00:18 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2b65ea599f
|
Some printf/con_out/con_err conversions, guarded some outputs with not-opts_pp_only so the -E switch can print to stdout normally
|
2012-11-18 11:43:46 +01:00 |
|
Wolfgang (Blub) Bumiller
|
906f319673
|
Replaced it all...
|
2012-11-15 18:32:09 +01:00 |
|
Dale Weiler
|
2e84cc0b41
|
Use new console system everywhere.
|
2012-11-15 00:28:46 +00:00 |
|
Wolfgang (Blub) Bumiller
|
84088cb5f0
|
Merging in new-syntax
|
2012-11-14 21:39:16 +01:00 |
|
Dale Weiler
|
f0750209b7
|
preliminary segregated console subsystem
|
2012-11-14 19:17:43 +00:00 |
|
Wolfgang (Blub) Bumiller
|
f3ebbf598f
|
if not() support
|
2012-11-13 18:55:55 +01:00 |
|
Wolfgang (Blub) Bumiller
|
e7d558dbd8
|
if not() support
|
2012-11-13 18:54:25 +01:00 |
|
Wolfgang (Blub) Bumiller
|
51ba2c49d6
|
improve the warning
|
2012-11-13 14:46:14 +01:00 |
|
Wolfgang (Blub) Bumiller
|
b1175eabfc
|
Warn (via -Wextensions) when accessing a field-of-array's element without putting the indexed field name in parenthesis
|
2012-11-13 14:43:20 +01:00 |
|
Wolfgang (Blub) Bumiller
|
b0326c66ed
|
when finishing an array-indexing operation the parser now calls rotate_entfield_array_index_nodes to fixup 'ent.foo[n]' to become 'ent.(foo[n])'
|
2012-11-13 00:39:39 +01:00 |
|
Wolfgang (Blub) Bumiller
|
d60a76abd1
|
allowing inexing of array-fields
|
2012-11-12 23:35:47 +01:00 |
|
Wolfgang (Blub) Bumiller
|
dbdcdb059e
|
array-field setter needs to use STOREP*
|
2012-11-12 23:05:44 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0340a6a6e7
|
support for ast_entfield nodes with specific output types, fixing array-field instantiating code to print the correct name on error
|
2012-11-12 22:39:43 +01:00 |
|
Wolfgang (Blub) Bumiller
|
89d86420ad
|
entity-array-field-setter generation
|
2012-11-12 22:31:54 +01:00 |
|
Wolfgang (Blub) Bumiller
|
3579e495be
|
code to instantiate field-array accessors
|
2012-11-12 22:24:11 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0de1ebbc21
|
Preparing to generate accessors for field arrays
|
2012-11-12 22:16:18 +01:00 |
|
Wolfgang (Blub) Bumiller
|
f026ca2fc5
|
more factorizing and shortening of code
|
2012-11-12 21:12:25 +01:00 |
|
Wolfgang (Blub) Bumiller
|
c18c89cd62
|
shorten some code
|
2012-11-12 20:51:12 +01:00 |
|
Wolfgang (Blub) Bumiller
|
83438d9833
|
call ir_function_finalize on array accessors otherwise they'll blow up stuff
|
2012-11-11 23:46:03 +01:00 |
|
Wolfgang (Blub) Bumiller
|
511058c018
|
handling of op-[
|
2012-11-11 18:54:08 +01:00 |
|
Wolfgang (Blub) Bumiller
|
d5b95f0412
|
Handling [ in the SYA
|
2012-11-11 18:45:43 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2994d308a0
|
array index opening-paren can now return TOKEN_OPERATOR, partially handled in SYA
|
2012-11-11 16:43:16 +01:00 |
|
Wolfgang (Blub) Bumiller
|
533f9f2cfc
|
SY_PAREN_ constants to replace magic numbers
|
2012-11-11 16:36:20 +01:00 |
|
Wolfgang (Blub) Bumiller
|
1ab303c528
|
Store accessors in the ast_value for access from within the ast - generate accessors after generating all the globals to not mess up the order of globals in the output
|
2012-11-11 16:22:09 +01:00 |
|
Wolfgang (Blub) Bumiller
|
7d9568f806
|
array accessor function genaration
|
2012-11-11 16:06:27 +01:00 |
|
Wolfgang (Blub) Bumiller
|
9324a96f77
|
properly in all situations where an array is part of a function's return type
|
2012-11-11 14:17:48 +01:00 |
|
Wolfgang (Blub) Bumiller
|
86e42ad123
|
Don't allow arrays and other unsupported parameter types to be used in parameter lists
|
2012-11-11 14:08:02 +01:00 |
|
Wolfgang (Blub) Bumiller
|
df77e062dc
|
Starting to add error messages for when using array types in expressions
|
2012-11-11 12:32:47 +01:00 |
|
Wolfgang (Blub) Bumiller
|
fb264b90b9
|
need to use ast_unref rather than ast_delete on the parsed array-size otherwise we end up deleting constants
|
2012-11-11 12:13:34 +01:00 |
|
Wolfgang (Blub) Bumiller
|
cf1ea01de3
|
parser_compile_file vs parser_compile_string
|
2012-11-11 10:33:29 +01:00 |
|
Wolfgang (Blub) Bumiller
|
00a28e48ee
|
parse arrays
|
2012-11-11 10:13:01 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2cb15e8c2d
|
first parsing of [ - pushing temp changes
|
2012-11-11 10:13:01 +01:00 |
|
Wolfgang (Blub) Bumiller
|
1869440fd9
|
Preparing to parse arrays: adding TYPE_ARRAY and union/struct TYPE_ constants to be consistent with fteqcc, filled type-arrays with their data, attempting to parse an array variable and added some error messages to the IR in case of unhandled types
|
2012-11-11 10:13:01 +01:00 |
|
Wolfgang (Blub) Bumiller
|
c87b056fdc
|
Support non-const initialized locals
|
2012-11-11 10:13:01 +01:00 |
|
Wolfgang (Blub) Bumiller
|
8687aa9a3e
|
Shouldn't require a 'local' keyword for local fieldpointers
|
2012-11-11 10:13:01 +01:00 |
|
Wolfgang (Blub) Bumiller
|
a27750966f
|
globals of type .vector will now properly generate 3 globals
|
2012-11-11 10:13:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
52daf02444
|
Support in the AST for TYPE_FIELD globals which are no actual fields
|
2012-11-11 10:13:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
fe05d5afd9
|
added 'var' to the keywords when not in -std=qcc, supporting 'var .float x;' in global-scope to declare a field-pointer variable without creating a field of that name
|
2012-11-11 10:13:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
76b21ad192
|
-std=qcc now errors on C-style function syntax
|
2012-11-11 10:13:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0bb90f284e
|
-std=qcc should error when the '=' is missing in a function declaration before the body
|
2012-11-11 10:13:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
0fc3a0c517
|
Removing old commented-out parsing code
|
2012-11-11 10:13:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
016257c44e
|
Making the = in front of function bodies optional
|
2012-11-11 10:13:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
7f4047381e
|
new-style syntax
|
2012-11-11 10:13:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
e87fd30c48
|
Enable 'local-already-declared' check for locals even when they are functions - this was previously simply in the wrong 'if'
|
2012-11-11 10:13:00 +01:00 |
|
Wolfgang (Blub) Bumiller
|
8e30d7cb86
|
fixing a stupid typo - why doesn't any compiler warn about this crap
|
2012-11-11 10:12:45 +01:00 |
|
Wolfgang (Blub) Bumiller
|
9141217481
|
Merged parsing of variable and field declarations into 1 function
|
2012-11-09 19:10:27 +01:00 |
|
Wolfgang (Blub) Bumiller
|
e143db0cae
|
gcc lost it's magic analyzer and now complains about uninitialized stuff... <sadface>
|
2012-11-04 11:41:44 +01:00 |
|
Wolfgang (Blub) Bumiller
|
5ff0013357
|
error on more than 8 params for now since more need special treatment
|
2012-11-02 22:51:26 +01:00 |
|
Wolfgang (Blub) Bumiller
|
2fa544f681
|
Error when trying to assign variables whose types are different - with -std=qcc only warn when they are both functions with non-matching parameter types
|
2012-10-28 20:32:13 +01:00 |
|
Wolfgang (Blub) Bumiller
|
cd8043fc18
|
a failing 'parse-statement' call should not print 'parse error' at all since at that point more descriptive error message has to have been printed already
|
2012-10-28 15:53:30 +01:00 |
|
Wolfgang (Blub) Bumiller
|
634a544dca
|
The proper way to deal with error messages which did not cause the parser to bail out early is this, not a 'parse error'-error...
|
2012-10-28 15:48:51 +01:00 |
|
Wolfgang (Blub) Bumiller
|
478a9249a0
|
add error for function parameters of invalid types
|
2012-10-28 15:44:27 +01:00 |
|
Wolfgang (Blub) Bumiller
|
201bfb9803
|
When erroring while parsing a function and the function had been added to the parser's function list, remove it, otherwise it'll get freed again in the parser's cleanup function
|
2012-10-28 15:28:39 +01:00 |
|
Wolfgang (Blub) Bumiller
|
5dd8e23dfd
|
Cleaner crc implementation
|
2012-10-02 17:51:03 +02:00 |
|
Wolfgang (Blub) Bumiller
|
354dd94b95
|
Generating checksums
|
2012-10-02 17:09:49 +02:00 |
|
Wolfgang (Blub) Bumiller
|
9d70c3a56e
|
Print a warning if end_sys_fields was declared as a field rather than a global
|
2012-10-02 15:59:37 +02:00 |
|
Wolfgang (Blub) Bumiller
|
4742ee9123
|
don't warn about unused end_sys_{globals,fields}
|
2012-10-02 15:35:43 +02:00 |
|
Wolfgang (Blub) Bumiller
|
ab91dea4e0
|
the lexer now doesn't _allocate_ the token structure, also: the vector holding the token doesn't shrink so we have much fewer reallocations
|
2012-08-24 17:37:55 +02:00 |
|
Wolfgang (Blub) Bumiller
|
20b8a191b1
|
parse_variable refactored, moved out the parsing of function bodies, easier memory handling
|
2012-08-24 17:23:47 +02:00 |
|
Wolfgang (Blub) Bumiller
|
e1155eebc2
|
renaming some parser functions, mainly shortining things: parse_type just looks much better than parser_parse_type...
|
2012-08-24 15:34:48 +02:00 |
|
Wolfgang (Blub) Bumiller
|
50e76a56c5
|
Adding static keyword to some more parser functions
|
2012-08-24 15:27:41 +02:00 |
|
Wolfgang (Blub) Bumiller
|
02512f21f2
|
create_vector_members sanitized
|
2012-08-24 15:09:51 +02:00 |
|
Wolfgang (Blub) Bumiller
|
41d1ef37d2
|
use the expression's linenumber for the 'statement has no effect' warning rather than the current one because that one's usually the line below...
|
2012-08-23 20:56:05 +02:00 |
|
Wolfgang (Blub) Bumiller
|
cb604603ca
|
-Weffectless-statement now also triggers on effectless incrementors in for-loops, if an incrementor was specified
|
2012-08-23 20:54:24 +02:00 |
|
Wolfgang (Blub) Bumiller
|
45388202c4
|
-Weffectless-statement, on by default, creates 'statement has no effect' warning
|
2012-08-23 20:52:09 +02:00 |
|
Wolfgang (Blub) Bumiller
|
dff6328c9e
|
add 'X has been declared here:' too the too-few/many-parameters warning/error
|
2012-08-23 20:48:51 +02:00 |
|
Wolfgang (Blub) Bumiller
|
8adbf07555
|
Warn about unused globals too, not about functions or constants though
|
2012-08-23 20:32:33 +02:00 |
|
Wolfgang (Blub) Bumiller
|
c84830bdee
|
Warna bout unused variables - -Wunused-variable, on by default
|
2012-08-23 20:25:54 +02:00 |
|
Wolfgang (Blub) Bumiller
|
5022f716dc
|
fix: check if parsing a variable initializer failed
|
2012-08-23 13:30:30 +02:00 |
|
Wolfgang (Blub) Bumiller
|
412446f42e
|
-std=qcc now warns about variadic functions via -Wextensions
|
2012-08-23 11:33:50 +02:00 |
|
Wolfgang (Blub) Bumiller
|
f22112bcb8
|
Variadic functions: works for builtins, warns for implemenetd functions, -Wvariadic-function, on by default
|
2012-08-23 11:29:48 +02:00 |
|
Wolfgang (Blub) Bumiller
|
d4077f6884
|
Have the parser generate immediates AFTER generating the globals for correct def layout
|
2012-08-22 14:20:28 +02:00 |
|
Wolfgang (Blub) Bumiller
|
330a801ae9
|
Pop off all the locals after a function
|
2012-08-22 12:59:52 +02:00 |
|
Wolfgang (Blub) Bumiller
|
19b66800ae
|
TYPE_FUNCTION values which are not constant are now allowed to be generated, they are function pointers.
|
2012-08-21 16:01:28 +02:00 |
|
Wolfgang (Blub) Bumiller
|
22896e5ef6
|
at last, the annoying missing ast_delete(typevar)
|
2012-08-21 11:21:05 +02:00 |
|
Wolfgang (Blub) Bumiller
|
d7f43dfa4d
|
some more error situations where typevar wouldn't get freed
|
2012-08-21 11:18:40 +02:00 |
|
Wolfgang (Blub) Bumiller
|
8fcc528ffa
|
new warning: -Wlocal-constants
|
2012-08-21 10:18:55 +02:00 |
|
Wolfgang (Blub) Bumiller
|
92e8f08df3
|
don't _move_ values out of immediates, it causes NULL strings to be code-generated
|
2012-08-21 10:08:17 +02:00 |
|
Wolfgang (Blub) Bumiller
|
02cc86db25
|
Since function prototypes now don't cause the function to become a constant, we cannot check for a constant in [frame,think] notations anymore
|
2012-08-20 18:27:27 +02:00 |
|
Wolfgang (Blub) Bumiller
|
0d64e555e2
|
Better handling of EOF - encountering EOF in parser_next will not return false yet, this is a more elegant way...
|
2012-08-20 18:15:31 +02:00 |
|
Wolfgang (Blub) Bumiller
|
5a0995c767
|
better handlign of a too early error condition
|
2012-08-20 18:14:02 +02:00 |
|
Wolfgang (Blub) Bumiller
|
198e35a823
|
Fix correction of parsiong of multiple variables: parse past the comma
|
2012-08-20 18:10:06 +02:00 |
|
Wolfgang (Blub) Bumiller
|
99bab76006
|
Creating the ast_function for a function only when encountering its body, so if no body is specified it works like a function pointer - just like QC wants it
|
2012-08-20 18:09:41 +02:00 |
|
Wolfgang (Blub) Bumiller
|
20448b93dc
|
Corrected parsing of declarations of multiple variables
|
2012-08-20 17:59:19 +02:00 |
|
Wolfgang (Blub) Bumiller
|
f0f9680774
|
add the backticks for a warning
|
2012-08-19 20:41:31 +02:00 |
|
Wolfgang (Blub) Bumiller
|
af3d9e0bdf
|
ir_value_set_string needs to use a strdup which doesn't return NULL for an emptystring
|
2012-08-19 20:35:51 +02:00 |
|
Wolfgang (Blub) Bumiller
|
c12e60a510
|
take 'warnreturn' into account, don't ignore the parsewarnin's Werror status
|
2012-08-19 20:32:07 +02:00 |
|
Wolfgang (Blub) Bumiller
|
7ef248aadb
|
set -Wmissing-return-values to on by default, new warning: control reaches end of non-void...
|
2012-08-19 20:26:54 +02:00 |
|
Wolfgang (Blub) Bumiller
|
66ec592f94
|
parse_block gets a warn-return bool flag
|
2012-08-19 20:20:39 +02:00 |
|
Wolfgang (Blub) Bumiller
|
adda894976
|
have function declarations of functions with prototypes take over the actual declaration's body's context data
|
2012-08-19 19:39:58 +02:00 |
|
Wolfgang (Blub) Bumiller
|
481baeeedc
|
relax parse_close_paren to allow values in parenthesis with no operators... duh
|
2012-08-19 19:35:45 +02:00 |
|
Wolfgang (Blub) Bumiller
|
a93ed6ae80
|
fix: use thinkfunc not nextthink, nextthink is set later
|
2012-08-19 19:25:37 +02:00 |
|
Wolfgang (Blub) Bumiller
|
bd64d7d7b4
|
Automatic prototyping of frame-functions
|
2012-08-19 19:24:43 +02:00 |
|
Wolfgang (Blub) Bumiller
|
dae13e87de
|
First draft of handling the [frame,think] notation
|
2012-08-19 16:13:29 +02:00 |
|
Wolfgang (Blub) Bumiller
|
92d40e0925
|
Factoring out duplicate code into a function: create_vector_members; creating vector members for vector function parameters
|
2012-08-19 14:34:23 +02:00 |
|
Wolfgang (Blub) Bumiller
|
78d04a8352
|
implement correct behaviour for shadows locals
|
2012-08-18 21:56:42 +02:00 |
|
Wolfgang (Blub) Bumiller
|
ee3aaa58b3
|
-Wlocal-shadows - note that -std=gmqcc is very different from the rest
|
2012-08-18 21:54:19 +02:00 |
|
Wolfgang (Blub) Bumiller
|
deccf4e708
|
splitting parser_find_local up into find_local and find_param - find_local also takes a bool-ptr to tell the caller if it was a local or a global
|
2012-08-18 21:42:52 +02:00 |
|
Wolfgang (Blub) Bumiller
|
28891c5a37
|
quotes around the variable name in some messages
|
2012-08-18 21:35:47 +02:00 |
|
Wolfgang (Blub) Bumiller
|
cd820c831f
|
remove trailing \n from 2 error messages
|
2012-08-18 21:32:29 +02:00 |
|
Wolfgang (Blub) Bumiller
|
83a758e446
|
set olddecl so we don't access a NULL value when a variable already exists
|
2012-08-18 21:31:53 +02:00 |
|
Wolfgang (Blub) Bumiller
|
fc1622140b
|
oops - parsewarning returns true on -Werror, so we gotta invert here
|
2012-08-18 21:07:23 +02:00 |
|
Wolfgang (Blub) Bumiller
|
4d0be789ac
|
-Wtoo-few-parameters on by deafult - for -std=gmqcc it's always an error
|
2012-08-18 21:04:16 +02:00 |
|
Wolfgang (Blub) Bumiller
|
6223d78ee3
|
-Wmissing-return-values, off by default, ignored with -std=gmqcc because in that standard it'll error
|
2012-08-18 20:19:43 +02:00 |
|
Wolfgang (Blub) Bumiller
|
588cd5018f
|
data/vars.qc - when declaring a function, and it had a prototype - use the new parameter names instead of the ones from the prototype, otherwise things get messy
|
2012-08-18 20:16:51 +02:00 |
|
Wolfgang (Blub) Bumiller
|
7cc1609117
|
Disable the member-of namespace check when -std != gmqcc
|
2012-08-18 19:43:34 +02:00 |
|
Wolfgang (Blub) Bumiller
|
d88e3e8f24
|
move the member-of check for '.' to after applying the previous dot operators so we don't need parens around 'a.b' of 'a.b.c = x'
|
2012-08-18 19:42:38 +02:00 |
|
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 |
|
Wolfgang Bumiller
|
f03bffc3ee
|
opening paren and comma to the operator stack for function calls
|
2012-07-27 12:35:14 +02:00 |
|
Wolfgang Bumiller
|
b81b5d8c4d
|
Removing some debug output
|
2012-07-27 12:28:14 +02:00 |
|
Wolfgang Bumiller
|
b70fd7e238
|
handle parameters in parser_find_local
|
2012-07-27 12:25:46 +02:00 |
|
Wolfgang Bumiller
|
a99972d7dd
|
Parse named parameters of functions
|
2012-07-26 23:33:19 +02:00 |
|
Wolfgang Bumiller
|
5d766f60b2
|
parse ahead into the return expression as expected
|
2012-07-26 23:26:34 +02:00 |
|
Wolfgang Bumiller
|
e1c4600260
|
Listen to the warning instead...
|
2012-07-26 23:25:33 +02:00 |
|
Wolfgang Bumiller
|
b08de6ee5f
|
Shutup a warning...
|
2012-07-26 23:24:36 +02:00 |
|
Wolfgang Bumiller
|
a0d78e985c
|
handling return
|
2012-07-26 23:22:51 +02:00 |
|
Wolfgang Bumiller
|
dcb815a65f
|
Handling parenthesis in expressions
|
2012-07-22 11:17:01 +02:00 |
|
Wolfgang Bumiller
|
21a2679efb
|
add locals to their ast_block, can create stores now
|
2012-07-20 21:32:51 +02:00 |
|
Wolfgang Bumiller
|
071fd32040
|
Handling some operands, added type_name array
|
2012-07-20 21:19:30 +02:00 |
|
Wolfgang Bumiller
|
f78ed233c0
|
parser_sy_pop, has to pop operators and operands and push the result
|
2012-07-20 15:20:07 +02:00 |
|
Wolfgang Bumiller
|
9f54ea6643
|
working on operator translation
|
2012-07-20 15:03:11 +02:00 |
|
Wolfgang Bumiller
|
7185366ee5
|
handling of operations
|
2012-07-20 15:02:18 +02:00 |
|
Wolfgang Bumiller
|
5d6767f337
|
Starting expression parsing
|
2012-07-20 14:45:23 +02:00 |
|
Wolfgang Bumiller
|
e8563442a1
|
keeping float immediates/constants in parser's imm_float vector
|
2012-07-20 14:34:45 +02:00 |
|
Wolfgang Bumiller
|
9314157be5
|
Adding ids to operators for SYA later
|
2012-07-20 14:04:52 +02:00 |
|
Wolfgang Bumiller
|
69ba2dd9f8
|
statement/expression proto
|
2012-07-20 13:00:11 +02:00 |
|
Wolfgang Bumiller
|
2763578f8b
|
Handling of multiple variables with comma
|
2012-07-20 12:53:42 +02:00 |
|
Wolfgang Bumiller
|
3decabaa8f
|
Local variable parsing
|
2012-07-20 12:46:59 +02:00 |
|
Wolfgang Bumiller
|
5ffa0dda8e
|
Keep track of blocklocal in parser_parse_block
|
2012-07-19 20:30:36 +02:00 |
|
Wolfgang Bumiller
|
c43bb71aa7
|
Factoring out variable parsing so it can be used for locals too
|
2012-07-19 20:15:30 +02:00 |
|
Wolfgang Bumiller
|
4360d3b5be
|
Proto for parsing a function body
|
2012-07-19 19:57:24 +02:00 |
|
Wolfgang Bumiller
|
f4864fd5ac
|
null-init parser_t, add a function member to it
|
2012-07-19 19:55:25 +02:00 |
|
Wolfgang Bumiller
|
03baa85c43
|
Properly parse functions without parameters
|
2012-07-19 19:53:58 +02:00 |
|
Wolfgang Bumiller
|
532aaba87d
|
Parse away the semicolon after an assignment
|
2012-07-19 19:52:44 +02:00 |
|
Wolfgang Bumiller
|
02b4c7b7c1
|
merging master, and adapting
|
2012-07-19 18:15:27 +02:00 |
|
Wolfgang Bumiller
|
e7f8647d08
|
additional/superfluous check removed
|
2012-07-19 18:10:12 +02:00 |
|
Wolfgang Bumiller
|
6713c3fd5f
|
Properly check if it's a function... checking the parameter count is not a correct check
|
2012-07-19 18:04:57 +02:00 |
|