diff options
| -rw-r--r-- | SemanticCheckList.txt | 40 | 
1 files changed, 22 insertions, 18 deletions
| diff --git a/SemanticCheckList.txt b/SemanticCheckList.txt index 9bd2c2c..f7fb1c7 100644 --- a/SemanticCheckList.txt +++ b/SemanticCheckList.txt @@ -1,37 +1,41 @@  DRAGON Semantic Checklist  ========================= -[ ] 1. Semantic rules for Scoping -[ ]    1.1. Local objects cannot be declared more than once -[ ]    1.2. Local objects hide non-local objects with the same name -[ ]    1.3. Non-local objects should be visible from inner scopes (unless a local object of the same name exists) -[ ]    1.4. Function and procedure names exist in the scope they are defined (and not in their own scopes) -[ ]    1.5. Local objects cease to exist once their scopes cease to exist +[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 -[ ] 2. Semantic rules for Expressions -[ ]    2.1. Expressions return typed-values -[ ]    2.2. Objects must be declared before they used in expressions -[ ]    2.3. Objects of different types cannot appear in the same expression (no type promotions) +[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 -[ ]    3.3. The ELSE clause always binds to the closest IF (resolution of the dangling ELSE problem) +            TODO: Add check for return type on statements, parsing +                      statement_list? +[X]    3.2. The test expression for IF-THEN, IF-THEN-ELSE, WHILE-DO must be Boolean-valued; +[X]         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)  [ ]    3.4. The variable type in FOR-DO must match the types of lower bound and upper bound expressions  [ ] 4. Semantic rules for Arrays -[ ]    4.1. Non-integer valued expressions cannot be used for indexing 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 +[X]    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> +            this is of the form: <function_name> := <expression>  [ ]    5.3. Functions must accept exactly the same number of arguments as is -[ ]         declared in its header, with the correct sequence of types +            declared in its header, with the correct sequence of types +            TODO: Fix array types.  [X]    5.4. Functions are not allowed to update the value of nonlocal objects (via assignment statements)  [ ] 6. Semantic rules for Procedures  [ ]    6.1. Procedure calls do not return values  [ ]    6.2. Procedures must accept exactly the same number of arguments as is -[ ]         declared in its header, with the correct sequence of types +            declared in its header, with the correct sequence of types +            TODO: Fix array types. | 
