Neil Brown
41ff60cb78
Removed the Rep constructor from Structured and instead added a Rep constructor to SpecType
...
This way, all replicators are declared like other names, and their scope is considered replicated. This simplifies the code a little.
Fixes #55
2008-06-04 17:00:43 +00:00
Adam Sampson
6ee21f76c9
Initial work on supporting INITIAL and RESULT abbreviations.
...
This fixes the AST, parser and typechecker, and adds a pass to
transform Result back into Abbrev, but doesn't transform Initial yet.
(It actually works for trivial stuff anyway, but it won't do the right
thing for complex types or PROC parameters.)
It appears (to me) to make sense to support INITIAL/RESULT reshaping
and retyping too, so this does.
Refs #42 .
2008-06-02 20:41:37 +00:00
Neil Brown
89c25e3f6c
Added a type-class for retrieving the (AST) type of things
...
This patch hides all the old typeOfExpression, typeOfName, typeOfVariable, etc, and unifies them into a single type-class with an "astTypeOf" function. The type-class is currently named Typed, but that can easily be changed (it's only explicitly referred to in the Types module). The patch is essentially the type-class with a giant find-and-replace on the other modules.
2008-05-17 11:41:52 +00:00
Neil Brown
3daf82d318
Merged Alternative and AlternativeCond into a single Alternative item that always has a pre-condition
2008-04-03 14:52:37 +00:00
Adam Sampson
118a1f3527
Add a resolveAmbiguities pass.
...
Currently this only handles the FunctionCallList ambiguity.
2008-04-06 11:33:10 +00:00
Adam Sampson
9fa45cf406
Make the inferredTypesRecorded property check Infer has been removed.
2008-04-05 22:41:29 +00:00
Neil Brown
d66fb79796
Fixed some unused module import warnings, now that PassM is not build of monad transformers
2008-03-10 17:19:45 +00:00
Neil Brown
bbdb429498
Changed transformWaitFor (and its tests) to transform the new InputTimerFor into InputTimerAfter
2008-03-24 15:09:05 +00:00
Neil Brown
dd7b0268b2
Added a new property (functionTypesChecked) to help fix the pass ordering
2008-03-23 00:09:01 +00:00
Neil Brown
ebef4aaedf
Fixed array constructors by adding an occam pass to figure out their type early on, and also corrected the ordering of the later passes
2008-03-21 18:23:42 +00:00
Neil Brown
50ce3410b8
Added the pass for giving lists a type to the pass list
2008-03-20 16:54:40 +00:00
Adam Sampson
e08aac59d3
Move Retypes checking from the occam parser into a pass.
...
This also fixes a bug in the original algorithm: it used to let you retype
[]INT to BYTE.
2008-03-19 19:38:56 +00:00
Adam Sampson
79eefd5e98
Move constant checking from the occam parser into a pass.
...
The parser now doesn't do any constant folding or checking.
2008-03-19 12:47:29 +00:00
Adam Sampson
3340e95806
Make agg_typesDone include constantsFolded.
...
This is so that constant folding gets done early; it's important that it
doesn't happen after anything that tries to pull values into variables later
on.
2008-03-17 15:47:57 +00:00
Neil Brown
c778ff0031
Fixed some unused module import warnings, now that PassM is not build of monad transformers
2008-03-10 17:19:45 +00:00
Neil Brown
35b1ffdc51
Added a new pass to turn all array slices into the full FromFor form
2008-03-09 16:15:24 +00:00
Neil Brown
60c7a2dde3
Added a preliminary pass-list for the work on flattening arrays
2008-03-06 09:59:18 +00:00
Neil Brown
9b570996ca
Added a pass to flatten protocol inputs down into multiple sequential input statements
2008-02-27 16:45:27 +00:00
Neil Brown
13c46d1fb2
Moved three pass-related modules out to their own directory
2008-02-24 12:32:21 +00:00