Commit graph

4533 commits

Author SHA1 Message Date
Bill Currie
9a38cdfd78 [qfcc] Clean up dag item counting and init
Not by much really, but using one "aux" count instead of different
types, and using functions to iterate through the statement's aux
operands makes the code easier to read.
2024-02-21 22:41:08 +09:00
Bill Currie
768113d37b [qfcc] Replace expr_file_line with a scoped version
Two birds with one stone: eliminates most of the problems with going
const-correct with expr_t, and it make dealing with internally generated
expressions at random locations much easier as the set source location
affects all new expressions created within that scope, to any depth.
Debug output is much easier to read now.
2024-02-21 22:41:08 +09:00
Bill Currie
6e8c98433a [qfcc] Fix a missed const type_t 2024-02-21 22:41:08 +09:00
Bill Currie
b9aad99381 [qfcc] Clean up warning and notice return types
They never needed to return expr.
2024-02-21 22:41:08 +09:00
Bill Currie
131ad9013c [qfcc] Tidy up expr_assign_copy a little
It proved that expr_assign_copy wasn't the cause of any problems, but I
cleaned up some of its types a little.
2024-02-21 22:41:08 +09:00
Bill Currie
35e2044bfa [qfcc] Fix nested compound initializers
Add static array indexing. This gets the compoundinit test working.
2024-02-21 22:41:08 +09:00
Bill Currie
19965e7cbd [qfcc] Add a failing test case for compound initializers
It turns out that compound intializers break on when the nesting level
increases (eg, initializing vectors in structs in arrays).
2024-02-21 22:41:08 +09:00
Bill Currie
1b4db639af [qfcc] Handle quaternion (in)equality tests
I'm surprised this didn't come up earlier.
2024-02-21 22:41:08 +09:00
Bill Currie
0e7c80e9fe [qfcc] Use ud-chains for ptrmove pointer analysis
ptrmove was not treating its indirect source operand as used because the
pointer wasn't checked for its source.

This fixes part of ptrstructinit, but there's a lot more breakage in
that test: it looks like all sorts of fun with arrays.
2024-02-21 22:41:08 +09:00
Bill Currie
ab69e65e02 [qfcc] Add failing test case for pointer struct initialization 2024-02-21 22:41:08 +09:00
Bill Currie
3a22091455 [qfcc] add pointer validity check function to test-harness 2024-02-21 22:41:08 +09:00
Bill Currie
192eb11235 [qfcc] Dereference most array types properly
This should prevent some fun bugs in the future (it's what necessitated
the const-correct patch).
2024-02-20 16:47:06 +09:00
Bill Currie
f0dfe47a32 [qfcc] Make type_t mostly const-correct
There were a few places where some const-casts were needed, but they're
localized to code that's supposed to manipulate types (but I do want to
come up with something to clean that up).
2024-02-20 16:47:04 +09:00
Bill Currie
6e71aadfa4 [qfcc] Use dereference_type for initialized arrays
In particular, when the size is inferred from the compound initializer.
Fixes a fun "incomplete type" error.
2024-02-20 16:46:02 +09:00
Bill Currie
fa5c3ab12e [qfcc] Support arrays in dereference_type
This is needed to get the correct type from arrays of typedefed
elements.
2024-02-20 16:46:02 +09:00
Bill Currie
827ca3cf27 [qfcc] Make array_type const-correct
As such... need to cast away the const when calling append_type (which
should probably become internal).
2024-02-20 16:46:02 +09:00
Bill Currie
3d26aafbea [qfcc] Unalias def ops too
When I implemented the st_alias handing (d8a78fc849) I was
unsure if I needed to unalias aliased defs too, but it turns out to have
been necessary: this is what caused my 2d PGA dynamics test to blow up
strangely due to the GA vector loaded from an array into a local
variable getting the local var replaced by a temp but the var itself
being read later in the code (uninitialized variable due to incorrect
optimization... oops).
2024-02-20 16:46:02 +09:00
Bill Currie
37fe0bc4ed [qfcc] Fix some 2d PGA bugs
When sum_expr gets a null expression as one of its args, it simply
returns the other arg, but that arg needs to have the correct type
applied.

Handle zero (null result) cross product in bivector geometric product.

Clean up types in bivector * vector geometric product.
2024-02-20 16:46:02 +09:00
Bill Currie
946211bca2 [qfcc] Use a better name for a var
Looking at the code afterwards, I realized flips would be a far better
name than mask. Not sure what I was thinking when I wrote the code.
2024-02-20 16:46:02 +09:00
Bill Currie
40f04ff33e [qfcc] Implement undual and use for regressive product
I'm not sure the regressive product is right (overall sign), but that's
actually partly a problem in the math itself (duals and the regressive
product still get poked at, so it may be just a matter of
interpretation).
2024-02-20 16:46:02 +09:00
Bill Currie
10861986fb [qfcc] Add tests for the hodge dual 2024-02-20 16:46:02 +09:00
Bill Currie
d319ce6106 [qfcc] Support multi-vector comparison
I'm not sure anything other than == or != has much meaning on anything
but scalars and pseudo scalars, but all comparisons are supported as a
simple boolean test. Any missing components are assumed to be 0. If
nothing else, it makes unit tests easier to write.
2024-02-20 16:46:02 +09:00
Bill Currie
11b247918e [qfcc] Find current algebra context for duals
Now finding the dual of a scalar works, too (need a context as otherwise
the pseudo-scalar is unknown).
2024-02-20 16:45:55 +09:00
Bill Currie
e56b4a3a6d [qfcc] Strip off algebra types internally
It turns out the algebra types make expression dag creation much more
difficult resulting in missed optimizations (eg, recognizing `a × a`).
This fixes the dead cross products in `⋆(s.B × ⋆s.B)`
2024-02-08 13:56:59 +09:00
Bill Currie
cf756eb1a0 [qfcc] Emit statements for expressions only once
The switch to using expression dags instead of trees meant that the
statement generator could traverse sub-expressions multiple times. This
is inefficient but usually ok if there are no side effects. However,
side effects and branches (usually from ?:, due to labels) break: side
effects happen more than once, and labels get emitted multiple times
resulting in orphaned statement blocks (and, in the end, uninitialized
temporaries).
2024-02-08 13:56:59 +09:00
Bill Currie
701b0f3992 [qfcc] Print block label expressions first
Just running through the list of expressions in a block expression
results in label expressions within the block getting printed by
expressions that reference them and thus don't receive the correct next
pointer and wind up pointing to themselves. Printing the labels first
ensures they have the correct next pointer. However, I suspect there are
other ways things will get tangled.
2024-02-08 13:56:59 +09:00
Bill Currie
5fef8e6edb [qfcc] Implement quaternion multiplication
I'm surprised it took almost two years to discover that I had no
quaternion multiplications in any test code, but getting an ICE for a
quaternion-vector product, and the Hadamard product for
quaternion-quaternion was a bit of a nasty surprise.
2024-02-01 11:00:27 +09:00
Bill Currie
8994042a47 [qfcc] Support expanding constant expressions
This makes a slight improvement to the commutator product in that it
removes the expand statement, but there's still the problem of (a+a)/2.
However, at least now the product is correct and slightly less abysmal.
2024-01-19 15:36:47 +09:00
Bill Currie
aa9be53b6e [qfcc] Include divide by two in commutator product
I had forgotten this, and of course didn't have any tests.
2024-01-19 15:26:18 +09:00
Bill Currie
5c22ba118c [qfcc] Support aliasing constants
This takes advantage of evaluate_constexpr to do all the work. Necessary
for use of basis blade constants in algebra contexts (avoids an internal
error).
2024-01-18 13:08:21 +09:00
Bill Currie
0ed4df3fb9 [quakeio] Rework Qgetline to use dstring
This clears up its stray memory allocation, and incidentally makes it
thread-safe.
2024-01-05 11:50:48 +09:00
Bill Currie
bfa7c1722a [build] Implement tracy memory zones
This proved to be quite the challenge, and is probably rather fragile,
but it does seem to work, and might help with tracking down memory
leaks.
2024-01-05 11:50:48 +09:00
Bill Currie
18c0ea3657 [qfcc] Ensure one is the correct type for incop expressions
This makes for nicer generated code when the incop (especially post) is
used in a condition.
2023-12-20 23:10:17 +09:00
Bill Currie
dd183d3ba6 [qfcc] Handle signed-unsigned int comparison better
This fixes the upostop-- test by auto-casting implicit constants to
unsigned (and it gives a warning for signed-unsigned comparisons
otherwise). The generated code isn't quite the best, but the fix for
that is next.

Also clean up the resulting mess, though not properly. There are a few
bogus warnings, and the legit ones could do with a review.
2023-12-20 23:09:06 +09:00
Bill Currie
54839db826 [qfcc] Add some tests for postop--
Interestingly, intval-- works properly, but unsignedval-- does not (test
case fails). This is why menus blow up when opening the load/save
sub-menu.
2023-12-20 21:50:51 +09:00
Bill Currie
dd4f51049d [build] Fix up unwanted dependency on tracy source
The tracy source files should not be required for make dist to work, so
this works around it by using a little indirection.
2023-12-17 19:18:58 +09:00
Bill Currie
9c3f0bc5d4 [build] Fix some release script issues
Set sharepath correctly and the menu is not gzipped any more.
2023-11-25 15:45:25 +09:00
Bill Currie
f58a14c2d3 [build] Disable 32-bit win32 in release build script
32-bit Windows isn't relevant enough any more. Anybody that wants 32-bit
windows QuakeForge can go through the pain.
2023-11-24 12:29:39 +09:00
Bill Currie
f3a428fbdd Fix up windows and the release scripts
I really need more feedback and the best way to get that is to have more
users, and for that, I need packages.
2023-11-23 20:28:19 +09:00
Bill Currie
c9cfd9e8cf Fix window build for recent config changes
And, more importantly get curl working in the mxe build.
2023-11-23 17:16:53 +09:00
Bill Currie
65bf3ab459 [qfcc] Switch to using the internal preprocessor
It's actually good enough for building qfcc: it fails a couple of
obscure c23 preprocessor examples that can be ignored for now (the rest
of QF builds without any apparent issue).
2023-11-23 13:33:44 +09:00
Bill Currie
2fd2a7086f [qfcc] Save disabled preproc expression debug 2023-11-23 13:33:12 +09:00
Bill Currie
5e02716a01 [qfcc] Save force-expanding function-type arg macros
The expansion is necessary for the final test in preproc-2.r, but breaks
preproc-1.r because the closing ')' is *not* visible to collect_args
(its assumption is incorrect). This needs reworking (and probably
rethinking) of the entire macro argument collection, but I need a little
break from the preprocessor (and it's good enough for *most* uses), so
I'm adding the code (disabled) in order to avoid losing it and my notes
about the problem.
2023-11-23 13:28:48 +09:00
Bill Currie
4480453861 [qfcc] Fail function-type macro expansion early
That is, if anything other than '(' (even a macro/argument that expands
to '(')is seen while checking for a function-type macro, the expansion
fails. This gets preproc-1.r working properly.
2023-11-23 13:26:02 +09:00
Bill Currie
4ed25ed616 [qfcc] Correct some misuses of scanner
It really affected only collect_args, but in fixing that I noticed I was
very inconsistent with scanner's type (should be yyscan_t or void *, but
not yyscan_t *).
2023-11-22 11:54:14 +09:00
Bill Currie
8c0b30e4e6 [qfcc] Force object-type macro expansion in args
This seems to get __FILE__ and __LINE__ working as expected, at least
when not used in __VA_OPT__.
2023-11-22 00:31:54 +09:00
Bill Currie
bf44ff3194 [qfcc] Base default object file name on output file
There's no guarantee the source file is in a writable directory (in
fact, it is very definitely in a read-only directory when running
`make distcheck`). However, it is reasonable to assume the output file
is being written to a writable directory thus default the object file
directory to that of the output file, but still use the source file's
name for the object file name.

Fixes #51
2023-11-20 14:19:01 +09:00
Bill Currie
ce6e7a32fd [qfcc] Use place-markers for some empty expansions
This gets most of the second preprocessor test working, apparently just
some problems with macro arguments not getting expanded for ## (unless
there's more lurking, of course, which I know there is for __LINE__).
2023-11-19 14:08:09 +09:00
Bill Currie
eb6a5b771a [qfcc] Get __VA_OPT__ non-expansion working
For most cases: function-type macros aren't properly checked for being
empty, but this gets a lot of the next preprocessor test working.
2023-11-19 02:10:44 +09:00
Bill Currie
5c0b2aa891 [qfcc] Clean up some cruft from recent __VA_OPT__ changes
Using a special token id for __VA_OPT__ means the macro is no longer
needed (need to improve checks for misuse of __VA_OPT__, though).
2023-11-18 19:56:19 +09:00
Bill Currie
fc03e7eb7a [qfcc] Recursively expand __VA_OPT__'s argument
This seems to do the right thing, and my test case (copied from the C
spec) passes finally.
2023-11-18 18:09:34 +09:00
Bill Currie
344b79a401 [qfcc] Go back to not pre-expanding macro args
It just feels cleaner than unnecessarily copying token chains. It turns
out that the core problem was just order of operations in next_token:
moving the pending_macro code to after arg/macro detection seems to be
correct (even bare `G LPAREN() 0)` is *not* expanding `G`, as expected).
2023-11-18 17:37:20 +09:00
Bill Currie
d628595589 [qfcc] Collect __VA_OPT__'s arguments early
This makes working with __VA_OPT__ much easier. However, I've come to
dislike expand_args. Still, the code is slowly cleaning up.
2023-11-18 13:41:20 +09:00
Bill Currie
114f564a98 Fix some issues found by gcc's -flto
More const/pure stuff and even some type issues.
2023-11-16 17:09:20 +09:00
Bill Currie
748bd377c6 [qfcc] Initialize overloaded function tables early
This fixes a rather old segfault bug uncovered by the macro testing.
2023-11-16 01:18:10 +09:00
Bill Currie
e86444eff8 [qfcc] Expand macro args early
This gets macro expansion mostly working, but __VA_OPT__ isn't expanding
properly yet. Still, one step closer.
2023-11-16 01:16:39 +09:00
Bill Currie
1dc5d4990c [qfcc] Expand __VA_OPT__ early
__VA_OPT__ needs to be fully expanded before it can be processed as an
argument. Unfortunately, this has uncovered bugs elsewhere in macro
expansion.
2023-11-15 12:46:38 +09:00
Bill Currie
37819523d0 [qfcc] Fix macro expansion basics (again)
It turned out I had simply forgotten to ensure the token chains were
properly terminated (the struct copy would copy the next of the source
token and thus macro args always expanded to the last token of the
parent macro). And then I'd missed saving the token text when parsing
predefined macros. __VA_OPT__ is still a problem, but this work was for
making that a little easier.
2023-11-12 13:20:35 +09:00
Bill Currie
8de214c782 [qfcc] Rework preprocessor tokens
I got tired of the way the separate token types for macro expansion and
the rest of the preprocessor parser were handled. This makes them a
little more unified. Macro expansion seems to be slightly broken again
in that min/max/bound mess up badly, and __VA_OPT__ does things in the
wrong order, but I wanted to get this in as a checkpoint.
2023-11-11 22:32:29 +09:00
Bill Currie
881b6626e4 [qfcc] Partially implement __VA_OPT__ and __VA_ARGS__
__VA_ARGS__ seems to be working but __VA_OPT__ still needs a lot of work
for dealing with its expansions, but basic error checking and simple
expansions seem to work.
2023-11-07 12:36:56 +09:00
Bill Currie
d21260d9f6 [qfcc] Use rua_loc_t for most location information
This gets rid of the simple source_file and source_line in pr_info_t, so
all expressions, and many other things have full location information.
2023-11-06 14:25:20 +09:00
Bill Currie
bd2bc16767 [qfcc] Get token##pasting working
This seems to do the right thing, but I need to come up with a good test
suite.
2023-11-06 11:28:17 +09:00
Bill Currie
b952c11dce [qfcc] Get function-type macro arguments working
Or at least mostly so: token##pasting is still broken, but #stringize
and nested macros seem to work.
2023-11-04 21:08:40 +09:00
Bill Currie
6bfb1f37f0 [qfcc] Rework macro expansion
Macros now store their arguments and have a cursor pointing to the next
token to take from their expansion list. While not checked yet, this
will make avoiding recursive macro invocations much easier. More
importantly, it's a step closer to correct argument expansion (though
token pasting is currently broken).
2023-11-03 13:54:08 +09:00
Bill Currie
6408c131dd [qfcc] Ensure macros expand for #elif
It seems I wasn't quite paying attention to when I should be getting
that invalid directive error for #version and when I shouldn't.
2023-11-03 13:48:38 +09:00
Bill Currie
82ce36c981 [qfcc] Add macro support for __FILE__ and __LINE__
There are some expansion problems, but this moves their handling to
where it needs to be.
2023-11-01 16:19:39 +09:00
Bill Currie
bbae71c488 [qfcc] Save and reset condition stack for includes
This makes it much easier to keep track of end of file in a conditional
block (#if...#endif) as #include in non-suppressed code would result in
spurious eof errors otherwise. I'm a little concerned about correctness,
but everything seems to work and it should be right as suppressed
include directives do not change the state at all, and the suppressed is
its own flag not in the condition stack.
2023-10-31 10:48:11 +09:00
Bill Currie
c5b357ddb1 [qfcc] Delay processing of asx and incop tokens
The op code needs to be set just before being passed to the qc parser so
it doesn't get lost in macro expansion.

And vector values need to not be processed when recording otherwise they
get lost.
2023-10-31 10:38:09 +09:00
Bill Currie
51f3915e12 [qfcc] Separate preprocess only and preprocess output
-M does only preprocessing but does not generate the preprocessed output
(which is -E's job). Prevents mangled dependency files.
2023-10-31 08:42:28 +09:00
Bill Currie
b3cbec7f87 [qfcc] Add the preprocessor files to BUILT_SOURCES
Intermittent build failures are no fun.
2023-10-30 23:17:08 +09:00
Bill Currie
9a00998d9c [qfcc] Fix vector ops after preprocessor changes
I'm not sure what exactly caused vector literals to break, but bailing
out of the vector ops section on conversion to vector or quaternion
fixes game-source.
2023-10-30 22:46:43 +09:00
Bill Currie
05eea82d0d [qfcc] Relax int conversion criteria
Allow 32-bit positive values without a warning and warn on conversion
issues for float. The whole conversion system needs cleaning up for
v6/v6p/ruamoko.
2023-10-30 18:52:02 +09:00
Bill Currie
5f21422df3 [qfcc] Parse parameterless function-type macros
This allows `#define foo()` to work as expected.
2023-10-30 17:20:32 +09:00
Bill Currie
16241b6811 [qfcc] Fix a bunch of preprocessing options issues
-D options weren't counting correctly so build_cpp_args was writing past
the end of the array allocated for command line arguments

parse_cpp_name had an out-by-one resulting in reading past the end of
the string.

The qfcc system include path was being set in the wrong place (not sure
why I thought that was right), and not respecting no_default_paths.

-M was generating preprocessor output when it should not have been,
resulting in corrupted dependency files.
2023-10-30 17:16:16 +09:00
Bill Currie
c7905422f1 [qfcc] Use a hash table for types
I don't remember why I couldn't get this to work last time I tried, but
it went well this time, and made a significant difference to compiling
vulkan.r (from 1.1s to 0.15s unoptimized or 0.8s optimized).
2023-10-30 15:38:43 +09:00
Bill Currie
bdf3316bef [qfcc] Simplify // comment handling
This fixes the problem with // comments after the file in #include and
the core problem the complicated // handling tried to fix with
suppressed directives. Funny how it's always the simpler code that works
better :/
2023-10-30 14:32:11 +09:00
Bill Currie
a3c94628bc [qfcc] Detect errors in module finalization
Though they shouldn't happen (they're really internal errors), it's not
good pretending they didn't happen.
2023-10-30 13:51:45 +09:00
Bill Currie
98a2cb7505 [qfcc] Update defines for back-end target
That is, `__RUAMOKO__` and `__VERSION6__` were missed when I got `-D`
working with the built-in preprocessor.
2023-10-30 13:32:20 +09:00
Bill Currie
ab34cb7df4 [qfcc] Accept @id as one token in macro bodies
I'm undecided about @ in macro names, but treating @id as one token in
the body is necessary with the single-pass tokenizing. Fixes an infinite
macro expansion loop in vecaddr.r (`#define dot @dot`), but that's
really only a bandaid for *that* issue as there are plenty of other
cases where macros will loop.
2023-10-30 13:28:45 +09:00
Bill Currie
071e529b0e [qfcc] Implement parsing side of ... macros
Expansion is not yet implemented (need __VA_OPT__ and __VA_ARGS__), but
this gets scheme compiling.
2023-10-30 13:28:01 +09:00
Bill Currie
eab561f279 [qfcc] Handle * strings in /* */ comments correctly
The *s were consuming the final star in */, so fancy comments were
breaking.
2023-10-30 13:22:57 +09:00
Bill Currie
61948b2469 [qfcc] Rework function-type macro expansion
It turns out that the recursive lexing was over-complicated as the
tokens for nested macros need to come from the expanded stream, not the
raw input stream.
2023-10-30 00:41:06 +09:00
Bill Currie
243a3de629 [qfcc] Grab undef id early
I'm unsure of the small string handling is a premature optimization, but
when most tokens are small...
2023-10-29 18:23:39 +09:00
Bill Currie
e402d0fa21 [qfcc] Implement command-line macro definitions
This takes care of __QFCC__ not being defined
2023-10-29 18:19:03 +09:00
Bill Currie
dfd57ed74f [qfcc] Generate dependencies only if not using cpp
cpp does this for us so the double-generation is redundant (and
currently wrong anyway with things like <built-in> and <command-line>
getting into the list of dependencies).
2023-10-29 14:00:37 +09:00
Bill Currie
6fa1d9caa2 [qfcc] Handle q-string in preprocessor expressions
This fixes line directives not parsing as they were getting c-string but
the preprocessor parser wasn't expecting them (and I suspect it
shouldn't).
2023-10-29 13:59:17 +09:00
Bill Currie
0990401a87 [qfcc] Get vkgen compiling
Or at least mostly so. The __QFCC__ define isn't visible, and it seems
undef might not be working properly (ruamoko/lib/types.r doesn't
compile). Of course, there's still the issue of whether it's compiling
correctly.
2023-10-28 23:51:12 +09:00
Bill Currie
c6ab5cd0ec [qfcc] Use generated tag for reporting errors
Avoids a segfault when the supplied tag is null (often the case when
qfcc defines the struct). Avoids a segfault when other errors cause
problems.
2023-10-28 08:45:27 +09:00
Bill Currie
b52b803c2a [qfcc] Add a #notice directive
Haven't got things working properly and I'm already extending the
preprocessor :P. It proved handy for debugging :)
2023-10-28 08:43:17 +09:00
Bill Currie
80c9132199 [qfcc] Treat all identifiers as undefined
If ID gets to the preprocessor parser in expressions, the ID is not
defined because if it was defined, it would have been expanded. Thus,
all IDs are 0.
2023-10-27 17:27:52 +09:00
Bill Currie
4214b90de3 [qfcc] Handle macros in preprocessor directors
I had forgotten that ids in preprocessor directives had a different
token type.
2023-10-27 17:27:02 +09:00
Bill Currie
733d242552 [qfcc] Don't try to define macros in suppressed code
Doing so kind of defeats the purpose of suppressing code.
2023-10-27 17:26:00 +09:00
Bill Currie
3bd391d01f [qfcc] Handle h-string and q-string only in #include
And #embed, though that's not implemented yet. Comparisons eating
multiple lines results in some rather interesting errors.
2023-10-27 17:24:54 +09:00
Bill Currie
823a9bd8d9 [qfcc] Implement dependency tracking generation
And now an issue with the vulkan headers shows up. Still, progress :)
2023-10-26 22:20:19 +09:00
Bill Currie
ae3a6c8b90 [qfcc] Move the dependency option handling to cpp.c
This cleans up options.c a little more and prepares for implementing
dependency tracking with the built-in preprocessor.
2023-10-26 21:21:00 +09:00
Bill Currie
92832a3b2c [qfcc] Improve handling of suppressed and continued lines
Now vkalias.r compiles with the builtin preprocessor. However, the build
fails due to the automatic dependency files not being generated.
2023-10-26 20:31:54 +09:00
Bill Currie
47c60f2bbf [qfcc] Handle quote includes better
The path for the current file wasn't being set correctly at startup and
"error: success" never makes much sense.
2023-10-26 20:28:43 +09:00
Bill Currie
ffb2514e75 [qfcc] Implement #include and search paths
Other than some trouble with line comments and continuation lines, it
seems to work nicely.
2023-10-25 21:07:50 +09:00
Bill Currie
f1f0a4a260 [qfcc] Update line directive handling
In addition to cleaning up the old flex line rules, this improves
handling of the '# num "file" flags' from cpp to at least parse the
additional flags (support for the system header flag might come later,
but I doubt the extern-c flag will have much meaning).

QuakePascal has lost its line directive handling (no errors, but dead
rules) for now. Eventually the lexers will be merged.
2023-10-25 12:22:33 +09:00
Bill Currie
717be4a12d [qfcc] Update pragma handling for the preprocessor
This removes the now redundant flex rules, though does spread
preprocess-only checks around a little more.
2023-10-25 09:25:00 +09:00