Neil Brown
f5022228ba
Fixed typeOfSpec to use the recorded type rather than trying to dig it out of the inner expression/variable
2008-02-29 16:33:33 +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
Adam Sampson
62b9c9b105
Prefix pass test output with the pass name ++ ": " consistently.
2008-02-28 16:51:53 +00:00
Neil Brown
1afea6c62c
Fixed underlyingType not recursing properly into the inner types in arrays
2008-02-27 18:23:53 +00:00
Neil Brown
245e4536bc
Fixed signed hexed values in the constant folder
2008-02-27 14:00:28 +00:00
Neil Brown
93a3c81255
Fixed the right-shift in the constant folding to be an unsigned (logical, non sign-extending) shift
2008-02-27 12:45:29 +00:00
Neil Brown
5807c59edf
Moved the three Flow modules out to a new flow directory
2008-02-26 15:07:07 +00:00
Neil Brown
decf249c51
Moved AST, CompState and Metadata out to a new data directory (along with the generated OrdAST and TagAST)
2008-02-26 15:02:13 +00:00
Neil Brown
bca3f89872
Adjusted the QuickCheck tests, now that Alt is handled properly
2008-02-26 14:34:46 +00:00
Neil Brown
b4ee07a3a7
Fixed a few comments in FlowAlgorithms
2008-02-26 14:24:33 +00:00
Neil Brown
9ba8d30aa0
Added the handling of ALTs to the control-flow graph
2008-02-26 14:20:45 +00:00
Neil Brown
4dbeabb5dc
Added the first group of tests for handling ALTs in the control-flow graph building
2008-02-26 14:19:57 +00:00
Neil Brown
4f05f0126f
Made decompN check the constructor, and added a short test accordingly
2008-02-25 13:39:28 +00:00
Neil Brown
1edaacae89
Altered the AST to allow a function to be either an ExpressionList (classical occam) or a Process (Rain/proposed new occam)
2008-02-24 19:29:31 +00:00
Neil Brown
74f3cb7fc2
Removed the export of "m" in TestUtils, instead moving the definition to each module that uses it (less confusing that way)
2008-02-24 18:55:44 +00:00
Neil Brown
caff04c548
Changed the use of everywhereM in underlyingType to use makeGeneric instead
2008-02-24 15:52:09 +00:00
Neil Brown
d5773ee4e0
Changed two uses of gmapQ (const undefined) to the similar glength function in the SYB library
2008-02-24 12:32:25 +00:00
Neil Brown
13c46d1fb2
Moved three pass-related modules out to their own directory
2008-02-24 12:32:21 +00:00
Neil Brown
6d9534f9b9
Made running the properties configurable by a --sanity-check command-line option
2008-02-24 12:15:02 +00:00
Neil Brown
ae49d236d6
Changed findMeta so that it would work even if the Meta data was not the first direct child of an item
2008-02-23 18:33:39 +00:00
Neil Brown
6a3452f8cd
Added a useful function to Pass for applying a modification function to the Only parts of a Structured
2008-02-23 18:32:29 +00:00
Neil Brown
e8189e196b
Removed the makePasses functions that did not deal with pre- and post- properties
2008-02-19 09:49:14 +00:00
Neil Brown
5cb964092d
Added a new module full of properties about the AST, most now with associated validity checks
2008-02-19 09:49:05 +00:00
Neil Brown
2e6718ac50
Changed all the lists of passes to add pre- and post- properties
2008-02-19 09:43:40 +00:00
Neil Brown
859a6286ac
Added functions to PassList that build a dependency graph from a list of properties (based on their pre- and post- properties) and use it to return an ordered pass list
2008-02-19 09:43:16 +00:00
Neil Brown
79f67d577f
Added functions that allow you to specify the pre- and post- properties for a pass
2008-02-19 09:37:20 +00:00
Neil Brown
2bbcd4ec9a
Added Eq and Ord instances for the Pass_ data structure (going solely by pass name)
2008-02-19 09:36:41 +00:00
Neil Brown
360abc195e
Moved the enabling/disabling of passes based on CompState from PassList to the point of the declaration of the passes
2008-02-16 11:09:25 +00:00
Neil Brown
3ce0eaf452
Made the first adjustment to the Pass system, ready to introduce properties and a dependency graph. For now passes are still executed in list order
2008-02-16 10:19:14 +00:00
Neil Brown
e76ab116cb
Simplified the definition of mkPattern slightly
2008-02-15 17:16:20 +00:00
Neil Brown
cd6e2175f2
Added a new "dump AST" pass
2008-02-14 12:45:11 +00:00
Neil Brown
63af1381f2
Reordered the pass list so that the usage checking happens earlier
2008-02-11 01:16:27 +00:00
Neil Brown
1151fab5ad
Changed the error reporting so that we at least print the meta tag if we can't open the file to find the line
2008-02-11 01:15:56 +00:00
Neil Brown
57833f7f26
Fixed the broken QuickCheck tests for node replacement
2008-02-10 21:21:03 +00:00
Neil Brown
5e87aa1e73
Refactored the way the flow-graph building handles the different Structured items, and tweaked some tests accordingly
2008-02-10 20:07:02 +00:00
Neil Brown
c4b7bd1745
Implemented handling of replicated IFs in flow-graphs
2008-02-10 15:16:46 +00:00
Neil Brown
df8f9429e0
Added some tests for building flow-graphs based on replicated IFs
2008-02-10 15:16:30 +00:00
Neil Brown
534fbd8db1
Added a new helper function to Utils, and corrected a comment too
2008-02-09 14:50:56 +00:00
Neil Brown
914e9c3d71
Added a new test framework, based on simple monads, to allow easy unification of HUnit and QuickCheck tests with the minimum of work
2008-02-08 16:56:32 +00:00
Neil Brown
64d7b35cfe
Changed all the usage check passes to use CSMR, and thus changed usageCheckPass to be a PassR rather than Pass
2008-02-08 13:43:28 +00:00
Neil Brown
b037b6a8ca
Tidied up the new code relating to warnings, and moved it all into the Errors module (out of CompState and Pass)
2008-02-08 13:31:37 +00:00
Neil Brown
f17ff5071c
Added a Warn monad for warnings, and incorporated a WriterT monad into the PassM stack to support the Warn monad, then changed all the rest of the code accordingly, including adding a Warn instance for the GenParser parser that hides it in the state
2008-02-08 13:22:23 +00:00
Neil Brown
95cdb39789
Generalised the type of the monad for the excludeConstr function, and correspondingly the functions that use it
2008-02-08 11:33:19 +00:00
Neil Brown
035c526bef
Changed the TLP and PrettyShow modules to use CSMR instead of CSM
2008-02-08 11:29:09 +00:00
Neil Brown
c56cc6022a
Switched everything in the EvalConstants module to use CSMR rather than CSM
2008-02-08 11:26:35 +00:00
Neil Brown
a3ebd96a86
Changed all the functions in the EvalLiterals, Types and ShowCode modules to use CSMR (instead of CSM)
2008-02-08 11:24:37 +00:00
Neil Brown
5f0eea493e
Switched all the appropriate functions in CompState from CSM to CSMR
2008-02-08 11:24:16 +00:00
Neil Brown
de81b0e81c
Added a version of PassM that only requires read access to the state (i.e. needs CSMR) called PassMR
2008-02-08 11:21:42 +00:00
Neil Brown
e3e9e912f2
Added a read-only version of CSM, named CSMR
2008-02-08 11:17:50 +00:00
Neil Brown
4299951511
Moved the makeSize function from ArrayUsageCheck into Utils
2008-02-06 23:49:17 +00:00