Type checking in compiler

This project was successfully completed by yfreelan for $50 USD in a day.

Get free quotes for a project like this
Employer working
Project Budget
$10 - $30 USD
Completed In
1 day
Total Bids
Project Description

Part I: Declaration checking

The Mython language has a very simple type system as described in the Mython specification. 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 code.

- 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 type integer.

-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.

-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.

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.

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 the input.

-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 type system.

-input ( ) has type integer.

-Arithmetic operator (+,-,*,/) only operate on integers and the result is an integer. –

Relational operation (<,>,<=,>=,<>,==) only operate on integers and result is a Boolean.

–The expression in if and while statements must have type Boolean.

–Return expression must be type integer.

-Parameters to the print function can be integer, Boolean or strings.

-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.

Completed by:
Skills Required

Looking to make some money?

  • Set your budget and the timeframe
  • Outline your proposal
  • Get paid for your work

Hire Freelancers who also bid on this project

    • Forbes
    • The New York Times
    • Time
    • Wall Street Journal
    • Times Online