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