Commit graph

115 commits

Author SHA1 Message Date
Wolfgang (Blub) Bumiller
43a72b2a63 Don't skip the \n after parsing a pragma in the lexer otherwise 2 pragmas in the row wouldn't work 2012-11-18 16:17:19 +01:00
Wolfgang (Blub) Bumiller
a5dbfacf2f pragma line(lineno) - sets the linenumber for the line after the pragma 2012-11-18 15:32:03 +01:00
Wolfgang (Blub) Bumiller
e66f2bcb33 Better linecounting for pragmas; support for prgama file(filename) 2012-11-18 15:30:49 +01:00
Wolfgang (Blub) Bumiller
9898ab5316 fixup line counting in #pragmas 2012-11-18 15:23:00 +01:00
Wolfgang (Blub) Bumiller
79619fbf50 Experimental support for push/pop(line) pragmas 2012-11-18 15:14:42 +01:00
Wolfgang (Blub) Bumiller
a014480987 Add quotes to the known control sequences... darn. Add stringification via # 2012-11-18 14:26:40 +01:00
Wolfgang (Blub) Bumiller
79abe3fb6d Merge branch 'master' into ftepp 2012-11-17 11:34:00 +01:00
Wolfgang (Blub) Bumiller
33be9edec7 quick and dirty fix to lexerror for when fopen fails 2012-11-17 10:36:35 +01:00
Wolfgang (Blub) Bumiller
515cafe8bd Lexer should keep newlines in merged lines, so will the preprocessor, but therefore the lexer will replace comments with actual spaces so we don't get borken output... also don't error about redifining a macro when inside a non-outputting #if branch 2012-11-16 23:13:53 +01:00
Wolfgang (Blub) Bumiller
05a26333fc Expand macros into a string buffer 2012-11-16 22:22:31 +01:00
Wolfgang (Blub) Bumiller
053d8fb0e2 mergelines flag for the lexer to handle a backslash-newline 2012-11-16 20:29:20 +01:00
Wolfgang (Blub) Bumiller
c583ae24f2 Replacing lexer's vectors and getting rid of the macros 2012-11-15 18:48:38 +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
Wolfgang (Blub) Bumiller
8f1f6160e3 'not' is now a keyword 2012-11-13 18:55:48 +01:00
Wolfgang (Blub) Bumiller
6204c8c956 'not' is now a keyword 2012-11-13 18:51:45 +01:00
Wolfgang (Blub) Bumiller
22d6ff2309 Fixing lexer to not classify wrong tokens as operators 2012-11-11 18:57:02 +01:00
Wolfgang (Blub) Bumiller
caf8946f99 lexer needs to fill the token for the index operator with actual content... 2012-11-11 18:31:37 +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
a84f9483e6 lex_open_string 2012-11-11 10:27:09 +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
Dale Weiler
9ad35a2817 Remove execloop.h, we still use xmacros, but it's done with #include __FILE__ trickery. Please do not kill me, it doesn't look that bad, conditional compilation is even used in eglibc like this :P 2012-11-10 20:53:37 +00:00
Wolfgang (Blub) Bumiller
b5970707c0 Properly handle string and char constants when preprocessing: don't unescape and keep surrounding quotes 2012-11-02 18:48:32 +01:00
Wolfgang (Blub) Bumiller
b219d4b468 Changed the TOKEN_WHITE to contain the actual data - ie the comments 2012-11-02 18:39:32 +01:00
Wolfgang (Blub) Bumiller
a3791b3f51 Finishing the preprocessing flag for the lexer, added preprocess.c to test it 2012-11-02 18:34:14 +01:00
Wolfgang (Blub) Bumiller
ab86b0470c preprocessing flag for the lexer 2012-11-02 18:33:51 +01:00
Wolfgang (Blub) Bumiller
2ef0203d17 Fix a minor bug in the lexer 2012-11-02 18:30:20 +01:00
Wolfgang (Blub) Bumiller
edd9ded23c reserve the keywords 'switch,struct,union,break,continue' - but only with std != QCC - eg. id1 uses a function named 'break' 2012-11-01 14:20:58 +01:00
Wolfgang (Blub) Bumiller
415816e4dc string-literals now do not treat digraphs as digraphs 2012-11-01 14:05:14 +01:00
Wolfgang (Blub) Bumiller
6126db10df digraphs 2012-10-29 13:56:00 +01:00
Wolfgang (Blub) Bumiller
e6cebc3ea3 trigraphs 2012-10-29 13:52:39 +01:00
Wolfgang (Blub) Bumiller
1d851a1400 fixing token-reset in modelname 2012-08-24 18:23:35 +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
7cfb9425a0 Fixing handling of duplicate frame macros: 'continue' would continue the inner for, how could I miss that 2012-08-23 22:40:51 +02:00
Wolfgang (Blub) Bumiller
4f758284a1 fixing up prevoius commit: cannot reference the parser here 2012-08-23 19:28:15 +02:00
Wolfgang (Blub) Bumiller
5d23fc5f5f Make the lexer use the correct error-printing mechanism 2012-08-23 19:20:50 +02:00
Wolfgang (Blub) Bumiller
9f2e8b9bfe -Wframe-macros, warn about duplicate frame macro definitions, on by default 2012-08-23 19:16:26 +02:00
Wolfgang (Blub) Bumiller
deb7ccb830 for the lexer 3 dots now become TOKEN_DOTS 2012-08-23 11:12:32 +02:00
Wolfgang (Blub) Bumiller
e0ffcfb74b Lexer now returns TOKEN_EOF only once and afterwards TOKEN_FATAL 2012-08-20 18:12:04 +02:00
Wolfgang (Blub) Bumiller
4cf017bb6b keep the filenames of all lexed files in a global lex_filenames vector because we don't strdup the filenames into lex_ctx, but copy the pointer 2012-08-18 16:47:33 +02:00
Wolfgang (Blub) Bumiller
a67110410b clear lex->modelname 2012-08-18 16:04:20 +02:00
Wolfgang (Blub) Bumiller
3efad75336 clean lex->frames in lex_close 2012-08-18 15:57:21 +02:00
Wolfgang (Blub) Bumiller
d3492d4a13 Fix indentation of lexer.c - was still using some tabs there 2012-08-18 14:27:19 +02:00
Wolfgang (Blub) Bumiller
bc94d3f5b8 lexer now turns '(' into an operator if noops=false 2012-08-18 14:26:25 +02:00
Wolfgang (Blub) Bumiller
076503770d Support for $modelname and $framerestore 2012-08-16 21:02:56 +02:00
Wolfgang (Blub) Bumiller
3b9a6b3ace Don't expand frame macros when they don't have a $ prefix 2012-08-16 20:49:58 +02:00
Wolfgang (Blub) Bumiller
e00c8da849 Added support for some modelgen/spritegen commands 2012-08-16 20:47:31 +02:00
Wolfgang (Blub) Bumiller
91ee7658a6 '$' is now its own token, used for modeldata 2012-08-16 20:03:53 +02:00
Wolfgang (Blub) Bumiller
7bc564f175 lexer: recognize != as operator when noops=false 2012-08-16 16:06:12 +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
5a383ac2b0 Reorganizing expression parsing to allow prefix-operators like unary minus 2012-08-16 15:11:03 +02:00
Wolfgang (Blub) Bumiller
0d9435d326 util_fopen... 2012-08-16 14:01:47 +02:00
Wolfgang (Blub) Bumiller
812cb5be64 sscanf -> sscanf_s on windows 2012-08-16 13:44:53 +02:00
Wolfgang (Blub) Bumiller
3017c92edf 'local' becomes a keyword 2012-08-14 16:10:17 +02:00
Wolfgang (Blub) Bumiller
fd1a850629 Recognize a dot as operator when not in 'no-ops' mode in the lexer 2012-08-12 19:00:44 +02:00
Wolfgang (Blub) Bumiller
c16a17ed5f recognize a dot as a single char token 2012-08-11 14:45:49 +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
42ab396e38 tempcommitting WARN_UNKNOWN_CONTROL_SEQUENCE and handling of backslashes in strings 2012-08-08 12:24:01 +02:00
Wolfgang Bumiller
64c230d222 Parsing a comma as an operator now - unless noop is true 2012-07-27 13:47:01 +02:00
Wolfgang Bumiller
331c00dd50 return is a keyword 2012-07-26 23:18:15 +02:00
Wolfgang Bumiller
6a346745aa Handling definition of builtins 2012-07-19 17:39:19 +02:00
Wolfgang Bumiller
d581fdc048 Reading a global def 2012-07-16 14:52:52 +02:00
Wolfgang Bumiller
4f611475de Starting some parsing 2012-07-16 14:14:37 +02:00
Wolfgang Bumiller
9b6598f049 Copying my old lexer 2012-07-16 13:59:10 +02:00