Part I: Declaration checking
The Mython language has a very simple type system as described in the Mython
specification (assignment#2). There are only three types in Mython: integers,
booleans and strings. Mython has no explicit type declarations or global variables; in
general, we have to determine the type of a variable by the way it is first used in the
o Integers: All parameters passed in Mython are implicitly integers. Another
way for a variable to get integer type is when it is first used on the left side of
an assignment statement where the expression on the right side has type
integer. For example, if the first use of x is x = 3 + 2, then x will have an
integer type and can be used anywhere an integer is expected. An input
statement can also be used to give a variable integer type. All function are
o Boolean: The only way for a variable to have boolean type is when it is first
used on the left side of an assignment statement where the expression on
the right side has type boolean.
o Strings: The only way for a variable to have string type is to assign a string to
it on the right side of an assignment statement.
For this part of the assignment, you need to see that all variables that are used in a
Mython have been given a type. A variable cannot be used (on the right side of an
assignment statement, in a condition for a compound statement, used in a print
statement or passed as a parameter) if it hasn't given a type as described above. If
this condition has been violated, print out an error message and the associated line
number. Continue processing. If there is an attempt to give a different type to a
name in some scope, this should also be flagged as an error. No two functions can
share a name. In a given procedure/function, no two local variables or parameter
can share a name. They should also not share a name with their declared scope.
King Saud University
College of Computer and Information Sciences
Computer Science Department
CSC 340: Programming Language and Compilation
Programming Assignment 3: Semantic Analysis
Due Date: December 28, 2016
Part II: Checking the Type system
The Mython specification also describes rules for type checking statements and
expression. During parsing, if a type rule is violated, print an error message that
explains the violation (along with associated line number) and continue processing
o The left and right side of an assignment statement must have the same type.
Once a variable has been given a type, that type cannot change. For example,
the two statement x = 2 followed later by x = true is a violation of Mython's
o input ( ) has type integer.
o Arithmetic operator (+,-,*,/) only operate on integers and the result is an
o Relational operation (<,>,<=,>=,<>,==) only operate on integers and result is a
o The expression in if and while statements must have type Boolean.
o Return expression must be type integer.
o Parameters to the print function can be integer, Boolean or strings.
o A function cannot be called until after it has been declared. Since formal
parameters are implicitly integer, actual expression must also be of type
integer. A function call must have the correct number of parameters. All
parameters will be passed by value.
8 freelance font une offre moyenne de $20/heure pour ce travail
Hello We are highly motivated young technocrats from IIT(ISM) Dhanbad, India. We are approachable, you can come to us if you have a struggle, we are happy to help. Team TiponTongue IIT(ISM) Dhanbad, India