source: liacs/coco/assignment2/coercion.h@ 386

Last change on this file since 386 was 2, checked in by Rick van der Zwet, 15 years ago

Initial import of data of old repository ('data') worth keeping (e.g. tracking
means of URL access statistics)

File size: 925 bytes
Line 
1#ifndef COERCION_H
2#define COERCION_H
3
4#include "types.h"
5#include "Node.h"
6#include "SyntaxTree.h"
7
8/* Gives the ReturnType that is at least needed for binary operators
9 * based on the return types of the left and right hand sides.
10 */
11ReturnType minimumtype(ReturnType lhs, ReturnType rhs);
12
13/* Check whether type is of expected type
14 */
15void checkType(ReturnType expected, ReturnType actual);
16void checkType(ReturnType expected, Node *expression);
17
18
19/* Coerces the expression node if necessary.
20 * Returns either a coercion node or expression itself.
21 */
22Node *coerce(ReturnType to, Node *expression);
23
24/* Checks if the number and type of the arguments to the call are correct
25 * and coerces arguments if necessary.
26 * It gives an error message if it is incorrect.
27 * call_node must be a valid NodeType of either NODE_FUNCTIONCALL or
28 * NODE_PROCCALL
29 */
30void check_parameters(Node *call_node);
31
32#endif /* COERCION_H */
Note: See TracBrowser for help on using the repository browser.