Commit Graph

1299 Commits

Author SHA1 Message Date
Neil Brown
b6d525fbb8 Added tests for while loops in the control-flow graph 2007-10-28 12:39:26 +00:00
Neil Brown
cde83c83ae Added the capability of outputting graphviz scripts representing control-flow graphs 2007-10-28 12:11:27 +00:00
Neil Brown
25f13e6c6f Added more tests for the control-flow graph, for Specs in Structured items 2007-10-28 11:38:04 +00:00
Neil Brown
cf17814b98 Changed the types involved in the control-flow graph so that I can customise the Show implementation 2007-10-28 11:35:51 +00:00
Neil Brown
a0c54220e2 Added more tests for the Seq and Par blocks in the control-flow graph 2007-10-28 01:25:44 +00:00
Neil Brown
cb17d62018 Changed findMeta so that it now works when directly applied to a Meta tag 2007-10-28 01:23:10 +00:00
Neil Brown
d2e54ea483 Added another helper function to the Utils module 2007-10-28 01:22:55 +00:00
Neil Brown
aea462d41a Fixed some bugs in the test harness for the control-flow graph 2007-10-28 00:36:27 +00:00
Neil Brown
fbd297e23e Added more tests for the control-flow graph stuff (for basic Seq and Par blocks) 2007-10-28 00:13:15 +00:00
Neil Brown
9b1cd56050 Changed the identifiers/values on graph nodes in the control-flow graph to be produced monadically, and altered the tests accordingly 2007-10-27 23:59:33 +00:00
Neil Brown
8fa046798a Tidied up and simplified the test code in FlowGraphTest to operate on lists of nodes/edges, rather than decomposing the graph
When you decompose a graph, each edge only appears once; on one of the nodes it is attached to.  This meant our testing was not working properly.

The easier solution is to forget how the graph works underneath, get a list of nodes and a list of edges, then operate on those.
2007-10-27 23:56:44 +00:00
Neil Brown
f0c552663b Added the initial implementation of a module (and tests) for generating a control-flow graph from an AST
This implementation needs to be changed; it currently uses Meta as a primary key for nodes, but that isn't valid.
2007-10-27 21:18:55 +00:00
Neil Brown
9fd67023b7 Added some new general helper functions to the Utils module. 2007-10-27 21:15:04 +00:00
Neil Brown
7f59eec189 Changed the C and C++ backends (and tests) to handle declarations with initialisers properly 2007-10-25 00:27:12 +00:00
Neil Brown
6b95827cab Added an optional initialiser-expression to Declaration in the AST, and changed the rest of the code accordingly 2007-10-24 23:50:00 +00:00
Neil Brown
83f654a273 Implemented the code for ClearMobile in the C and C++ backends 2007-10-24 20:54:37 +00:00
Neil Brown
dfee567ffc Added tests for ClearMobile in the C and C++ backends 2007-10-24 20:52:39 +00:00
Neil Brown
1f604781f5 Added an AST item for blanking mobiles 2007-10-24 20:50:44 +00:00
Neil Brown
48c1bea724 Added tests for the AllocMobile item in the C and C++ backends 2007-10-24 19:44:50 +00:00
Neil Brown
dd86b240b5 Implemented (most of the needed) support for AllocMobile in the C and C++ backends 2007-10-24 19:32:58 +00:00
Neil Brown
31642036b7 Added support for the new AllocMobile item in the Types module 2007-10-24 19:31:07 +00:00
Neil Brown
00d48d27de Added an AST Expression for allocating mobiles 2007-10-24 19:30:44 +00:00
Neil Brown
cd313fbbb6 Added a comment about DerefVariable in SimplifyExprs 2007-10-24 16:00:47 +00:00
Neil Brown
08c8d47e2f Overhauled cgenVariable' in GenerateC so that it passes the new tests involving DerefVariable (while still passing all the previous tests) 2007-10-24 15:58:20 +00:00
Neil Brown
0eea361f95 Added tests for DerefVariable during the genVariable function for the C and C++ backends 2007-10-24 15:57:40 +00:00
Neil Brown
f68a6cd31d Added cases for DerefVariable to some functions in Types 2007-10-24 15:57:03 +00:00
Neil Brown
f8006696b2 Added a dereferenced mobile item to Variable in the AST 2007-10-24 15:56:02 +00:00
Neil Brown
9f78582391 Added support for mobile types to the genType functions in the C and C++ backends 2007-10-21 14:37:05 +00:00
Neil Brown
86054ba754 Added code for the Mobile types to the ShowCode module 2007-10-21 14:18:51 +00:00
Neil Brown
441b700d8d Added tests for the new mobile types in the C and C++ backends 2007-10-21 14:16:24 +00:00
Neil Brown
521730bf8b Added the Mobile type to the AST 2007-10-21 14:15:56 +00:00
Neil Brown
f0fdc05ff3 Added a large hunk of code in ShowCode that allows us to print out occam programs using the right indentation.
The code is messy, and not quite finished, but for now it isn't actually being used.  So I'm committing it, ready to be fixed up at a later date.
2007-10-18 09:33:37 +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
acca3d03fd Removed the A.Main item from the AST entirely 2007-10-17 13:43:40 +00:00
Neil Brown
d4a766c594 Changed the occam parser to use A.Several with an empty list for its terminator, rather than A.Main 2007-10-17 13:43:12 +00:00
Neil Brown
e582f5e508 Changed the terminator in Rain source files from A.Main to A.Several (with an empty list), and updated the tests accordingly 2007-10-17 13:42:13 +00:00
Neil Brown
12191cb36a Changed the C and C++ backends to take in a Structured rather than a Process as the top-level item 2007-10-17 13:25:21 +00:00
Neil Brown
3727307a78 Changed the shared passes to operate on Structured items, rather than Process items 2007-10-17 13:24:42 +00:00
Neil Brown
1c858e112c Changed the occam and Rain parsers to return a Structured rather than a Process (which will simplify the generated ASTs) 2007-10-17 13:21:17 +00:00
Neil Brown
a25824b601 Changed the passes to be of type Pass, rather than A.Process -> PassM A.Process 2007-10-17 13:09:16 +00:00
Neil Brown
30b7cc686b Doubled the stack size for C++CSP processes, in order to get cg test 08 passing 2007-10-14 13:25:31 +00:00
Neil Brown
0fc7ceaf68 Fixed an issue where the size in counted array inputs in C++ was not being correctly calculated 2007-10-14 11:09:35 +00:00
Neil Brown
fed32e1531 Adjusted the tests for inputs to catch an error where the size in counted array inputs in C++ was not being correctly calculated 2007-10-14 11:09:08 +00:00
Neil Brown
05293f75c1 Fixed an error in the C++CSP support file where arrays with the first dimension being free would not have their size recalculated 2007-10-14 11:08:30 +00:00
Neil Brown
c19ae03116 Added a pass that changes all C++CSP channels to be of type tockSendableArrayOfBytes, so that the channels can be retyped into each other 2007-10-14 10:28:43 +00:00
Neil Brown
053f91bc59 Fixed a horrible error in the C++ support header file that was preventing byte-channels from working 2007-10-14 00:32:59 +00:00
Neil Brown
3c101bae19 Removed my old cgmap function, in favour of the identical library function mapM_ 2007-10-14 00:14:19 +00:00
Neil Brown
d4dabfd3bb Removed unused code from the GenerateCTest module 2007-10-14 00:09:28 +00:00
Neil Brown
fd74473b9b Removed a big load of unused code from the C++ code generation, that was related to the old way of handling protocols 2007-10-14 00:08:13 +00:00
Neil Brown
e9dbfbab3c Added the input-case to case pass to the pass-list, and therefore removed all code dealing with input-case statements in the C and C++ backends (and corresponding tests) 2007-10-14 00:01:44 +00:00