Commit Graph

962 Commits

Author SHA1 Message Date
Neil Brown
117173f758 Added the basics needed to generate XML from the AST using HaXml and DrIFT 2007-09-14 19:13:15 +00:00
Neil Brown
4d09fd4a85 Rain: added a pass that moves declarations inside par blocks to being outside the par blocks (so that they are in scope for the whole of the par block) 2007-09-14 13:03:59 +00:00
Neil Brown
3f573dabd5 Rain: corrected innerBlock to work sensibly with multiple declarations (particularly for the start of par blocks) 2007-09-14 12:53:26 +00:00
Neil Brown
ff9b0d6611 Rain: changed the innerBlock parser to work with the new rules for declarations in par blocks, and also simplified its output slightly 2007-09-14 12:22:12 +00:00
Neil Brown
59d86a0afc Rain: stopped semi-colon being a valid statement by itself 2007-09-14 11:46:18 +00:00
Neil Brown
8af4a9f687 Added generation of forward declarations to the C and C++ backends.
These declarations are necessary for recursive functions/procs, so that the (forward) declarations are visible to the implementations.

Later on, the declarations could be moved into header files, which would allow multiple source files to be compiled (generating multiple header files) and linked together using the gcc linker.  Alternatively, external C/C++ programs could use code originally written in occam/Rain by including the header files.
2007-09-12 12:09:35 +00:00
Neil Brown
aefb02caa6 Added missing cases for A.DirectedVariable in the C and C++ backends 2007-09-12 10:17:15 +00:00
Neil Brown
c40d94c655 Added a couple of passes that check the validity of the AST at the beginning and end of the Rain passes 2007-09-12 08:50:19 +00:00
Neil Brown
7ef6d7728f Added helper functions for converting constructors into Constr items 2007-09-12 08:49:14 +00:00
Neil Brown
9b1fbc3f8f Added a helper function for creating passes that check the validity of the AST 2007-09-12 08:45:23 +00:00
Neil Brown
ad8aab723b Added a function for searching for particular constructors in a tree, and an associated test 2007-09-12 00:11:22 +00:00
Neil Brown
000270f4a8 Created a new module for tests in the common directory (named CommonTest) and moved testIsSafeConversion across 2007-09-11 23:34:45 +00:00
Neil Brown
dbdef53e31 Added a short comment explaining the choice of AnyDataItem in TreeUtil 2007-09-11 22:58:58 +00:00
Neil Brown
8514823f1f Changed the Makefile to put the output files of GHC (*.o,*.hi) into an obj directory, to stop them cluttering up the source directories 2007-09-10 17:40:50 +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
Neil Brown
d39e2693cd Rain: added support for parsing character literals 2007-09-02 17:24:32 +00:00
Neil Brown
fa405e7e46 Rain: added a pass to transform functions into the occam form 2007-09-02 16:50:12 +00:00
Neil Brown
cd93b481f0 Rain: changed the matchParamPass function to also work for parameters to function calls 2007-09-02 16:17:15 +00:00
Neil Brown
c69b21dcbf Added a small helper function for testing functions 2007-09-02 16:16:43 +00:00
Neil Brown
9842fb2e2b Rain: changed the tests for matchParamPass to also test it for function call parameters 2007-09-02 16:15:53 +00:00
Neil Brown
d5cf98b2a8 Rain: refactored the tests for the matchParamPass pass to reduce shared code 2007-09-02 15:39:45 +00:00
Neil Brown
909fe0ea6b Rain: added parsing support for return statements 2007-09-02 15:07:51 +00:00
Neil Brown
989bb1c757 Rain: added parsing support for function declarations 2007-09-02 14:55:17 +00:00
Neil Brown
a14c33bc27 Rain: added another parse test for a process that has a par as its top-level element 2007-09-02 14:16:18 +00:00
Neil Brown
4fadab442d Rain: added a pass to turn range constructors into the more general array constructor form 2007-09-01 14:40:50 +00:00
Neil Brown
0392036322 Rain: added a pass that transforms ForEach replicators over simple ranges directly into For replicators 2007-09-01 14:35:46 +00:00
Neil Brown
e655c1412a Added a pass that transforms array constructors into a replicated loop that initialises the array 2007-08-29 14:18:07 +00:00
Neil Brown
1c155490c5 Added support for the array constructors to typeOfExpression 2007-08-29 14:07:52 +00:00
Neil Brown
ecad4e3abc Rain: added parsing of simple ranges (such as [0..100]) 2007-08-28 22:20:36 +00:00
Neil Brown
bcedd9af22 Added array constructors to the AST 2007-08-28 22:13:09 +00:00
Neil Brown
d9ae34c7a2 Added two new useful helper functions to TreeUtil that allow you to name a particular sub-pattern in a larger pattern 2007-08-29 13:53:03 +00:00
Neil Brown
8ecd472a2e Rain: added support for multiple declarations on the same line 2007-08-28 22:54:51 +00:00
Neil Brown
78b032ace9 Moved castADI into TreeUtil and added more tag helper functions that fill the parameters with DontCare (named tag1d, tag2d, etc) 2007-08-28 22:25:41 +00:00
Neil Brown
005dbd4d87 Rain: changed integer literals to allow negative literals 2007-08-28 20:40:41 +00:00
Neil Brown
96fc3a9983 Rain: added support for the modulo operator 2007-08-28 17:05:55 +00:00
Neil Brown
c8cf8a9963 Rain: indicated more clearly when a parse fails on lexing 2007-08-28 17:05:21 +00:00
Neil Brown
bf0dc577a8 Rain: changed the comment character for now 2007-08-28 17:04:18 +00:00
Neil Brown
6da26e5bf5 Added the first Rain program to the testcases directory and added Makefile rules for compiling *.rain into *x using the C++CSP backend 2007-08-28 16:02:22 +00:00
Neil Brown
15be4ddca9 Changed some instances of lookupName to lookupNameOrError to make it a little easier to track down internal compiler errors 2007-08-28 15:28:52 +00:00
Neil Brown
c09da951f0 Fixed the pass order in the Main module; the rain passes must be performed before the common passes, not afterwards 2007-08-28 15:28:02 +00:00
Neil Brown
99780d497b Added a Haddock ignore-exports declaration to RainPassTest 2007-08-28 15:27:29 +00:00
Neil Brown
63236cbc5a Rain: added another test for the unique pass 2007-08-28 15:27:03 +00:00
Neil Brown
c572dcb067 Fixed the findMeta function to return emptyMeta when no Meta exists in the given data 2007-08-28 15:23:50 +00:00
Neil Brown
1386dd6808 Turned whatever documentation I could find in GenerateCPPCSP into Haddock documentation, although it needs a more thorough pass to make the documentation better at some point. 2007-08-28 13:05:03 +00:00
Neil Brown
095b547f9e Added Haddock documentation to the TestMain module 2007-08-28 12:43:30 +00:00
Neil Brown
0887d1b87b Added the licence header to the Pattern module, and tidied up some of the Haddock documentation in Pattern 2007-08-28 12:38:36 +00:00
Neil Brown
d8a23fa40d Fixed some Haddock module references in TestUtil 2007-08-28 12:38:15 +00:00
Neil Brown
6a22e37589 Added Haddock documentation to all the functions in TestUtil, and tweaked the type of assertVarDef 2007-08-28 12:25:59 +00:00
Neil Brown
ffb75e0fc7 Removed an unused function from TestUtil 2007-08-28 11:57:02 +00:00
Neil Brown
06e321f973 Rain: removed the now-unnecessary pass that fixed up the types of the casts for channel-ends 2007-08-30 18:14:59 +00:00