aboutsummaryrefslogtreecommitdiff
path: root/SemanticCheckList.txt
blob: 446a442430ccaf837548d731cb8999242e4ff47a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
DRAGON Semantic Checklist
=========================

[X] 1. Semantic rules for Scoping
[X]    1.1. Local objects cannot be declared more than once
[X]    1.2. Local objects hide non-local objects with the same name
[X]    1.3. Non-local objects should be visible from inner scopes
            (unless a local object of the same name exists)
[X]    1.4. Function and procedure names exist in the scope they are
            defined (and not in their own scopes)
[X]    1.5. Local objects cease to exist once their scopes cease to exist

[X] 2. Semantic rules for Expressions
[X]    2.1. Expressions return typed-values
[X]    2.2. Objects must be declared before they used in expressions
[X]    2.3. Objects of different types cannot appear in the same
            expression (no type promotions)

[ ] 3. Semantic rules for Statements
[ ]    3.1. Statements do not return values
[ ]    3.2. The test expression for IF-THEN, IF-THEN-ELSE, WHILE-DO
            must be Boolean-valued;
            note that the Boolean type must be implicitly defined
[X]    3.3. The ELSE clause always binds to the closest IF (resolution
            of the dangling ELSE problem)
[X]    3.4. The variable type in FOR-DO must match the types of lower bound and upper bound expressions

[X] 4. Semantic rules for Arrays
[X]    4.1. Non-integer valued expressions cannot be used for indexing arrays

[ ] 5. Semantic rules for Functions
[ ]    5.1. Function calls return values of type Integer or Real
[ ]    5.2. Function must contain a "return" statement within its own body;
            this is of the form: <function_name> := <expression>
[X]    5.3. Functions must accept exactly the same number of arguments as is
            declared in its header, with the correct sequence of types
[X]    5.4. Functions are not allowed to update the value of nonlocal
            objects (via assignment statements)

[X] 6. Semantic rules for Procedures
[X]    6.1. Procedure calls do not return values
[X]    6.2. Procedures must accept exactly the same number of arguments as is
            declared in its header, with the correct sequence of types