Neil Brown
058ed31cad
Changed the implicit modules to be INCLUDEd rather than USEd (duh!)
2009-04-14 17:04:46 +00:00
Neil Brown
ce15465849
Made the preprocessor be a little clearer with regards to its suffix workings
2009-04-14 17:04:13 +00:00
Neil Brown
e462da4a76
Added a system for specifying implicitly-used modules on the command-line
...
An implicitly used module is equivalent to a #USE directive before the first line of the main file. This, combined with changes in occbuild, are my current way of implementing the automatic use of the forall module in occam.
2009-04-10 19:26:22 +00:00
Neil Brown
49d6e2aaaf
Reworked how the stack sizes are recorded and merged together
...
The previous method, using the C preprocessor was both nasty, and crazily resource-intensive. The new method stores stack size information in files that are read in and processed by the compiler when it comes time to link.
2009-04-07 16:03:52 +00:00
Neil Brown
8400de520b
Fixed the regular expression on #INCLUDE and #USE to allow any white-space at the end
2009-04-04 15:34:43 +00:00
Neil Brown
c2174743e7
Made the unknown preprocessor directive warning show what the unknown directive was
2009-04-04 15:34:17 +00:00
Neil Brown
c361a36e41
Added a message so that when we fail to find a file, we say exactly where we looked
2009-04-04 12:31:06 +00:00
Neil Brown
8170d9569d
Added some code to Tock to be able to handle unlexable ASM blocks in source files
2009-04-03 17:54:13 +00:00
Neil Brown
081e4f79d4
Added more recognised suffixes to knock off in #USE directives
2009-04-03 16:52:00 +00:00
Neil Brown
427938039c
Implemented a search path for Tock (for #INCLUDE and #USE directives)
2009-04-03 16:51:00 +00:00
Neil Brown
471c3a1ef5
Allowed #INCLUDE and #USE directives to have comments after the quoted part
...
I couldn't decide whether to fix this in the parser or the preprocessing code. I went for the latter, as it was the simplest option.
2009-04-03 14:37:10 +00:00
Neil Brown
d6ad0ba202
Made the name of record-copying PROCs different for each file that generates them, to avoid clashes at link time
2009-04-03 10:25:55 +00:00
Neil Brown
f69030df34
Changed the names of generated tock files to have ".tock" before the extension
...
This helps avoid collisions with pre-existing files, especially .inc files (but also .c and .h)
2009-04-02 15:40:39 +00:00
Neil Brown
5bf1ffa785
Made the preprocessor correct the path a #USEd file when it finds it on the search path while including it
2009-04-01 18:59:57 +00:00
Neil Brown
abce001bab
Added a command line option to indicate that there is no main PROC
2009-04-01 15:29:22 +00:00
Neil Brown
8a36f6e96f
Added support for parsing pragmas, for now just handling the SHARED pragma
2009-01-19 15:11:09 +00:00
Neil Brown
0d486f108f
Added a value to indicate what type a warning is (to support future configurability) and streamlined the warning functions
2008-11-13 15:36:22 +00:00
Adam Sampson
ab416326ad
Make Token a real data type.
...
Previously it was a tuple, which meant it couldn't have sensible
custom instances. Token and TokenType now have Show instances, so we
get more useful output when parsing fails.
2008-06-05 09:46:52 +00:00
Neil Brown
d02b771572
Tidied up the type of handleDirective to make it easier to use
2008-03-05 16:05:21 +00:00
Adam Sampson
a2a15cab64
Split include file expansion out into a separate pass.
...
The order of initial passes is now:
lex -> preprocess -> structure -> expand-include -> parse
which means that #IFing out structurally-invalid code (like inline VALOF) now
works. This also cleans up the preprocessor code a bit.
2008-02-29 15:01:19 +00:00
Adam Sampson
c8b6be34e1
Implement comparisons in preprocessor expressions.
...
This brings Tock's conditional compilation facilities up to par with occ21.
2008-02-29 00:23:49 +00:00
Adam Sampson
a5fd73130a
Use Parsec to parse #DEFINE directives.
...
This is much neater, and I'll need most of the code to implement comparisons anyway.
2008-02-28 23:47:06 +00:00
Adam Sampson
8f2575819b
Initial implementation of the occam-pi preprocessor.
...
This implements #DEFINE, #UNDEF, #IF, #ELSE and #ENDIF, macro expansion with
##, and TRUE, FALSE, AND, OR, NOT and DEFINED within #IF expressions, with the
same semantics as occ21.
The macro COMPILER.TOCK is always defined by default, so you can now say things
like "#IF NOT DEFINED (COMPILER.TOCK) ... #ENDIF".
2008-02-28 20:27:30 +00:00
Neil Brown
0706cb4d51
Rearranged PreprocessOccam a little so that you can now parse occam source directly from a String (as well as from a filename, as before)
2008-01-16 03:26:49 +00:00
Neil Brown
7d8f170b7d
Added support for the #COMMENT directive to the occam parser
2007-10-15 17:12:53 +00:00
Neil Brown
2ff46a9041
Rearranged the Rain source files, renamed a couple of Rain files, and changed the Makefile accordingly.
2007-09-10 17:28:57 +00:00