compiler design - coding

Closed Posted 7 years ago Paid on delivery
Closed

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

code.

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

type integer.

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

the input.

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

type system.

o input ( ) has type integer.

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

integer.

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

Boolean.

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.

C Programming

Project ID: #12695361

About the project

6 proposals Remote project Active 7 years ago

6 freelancers are bidding on average $20/hour for this job

utkarshkatiyar19

A proposal has not yet been provided

$20 USD / hour
(277 Reviews)
7.0
hbxfnzwpf

I am very proficient in c and c++. I have 16 years c++ developing experience now, and have worked for more than 6 years. My work is online game developing, and mainly focus on server side, using c++ under linux environ More

$20 USD / hour
(91 Reviews)
6.7
octopus823

Hi, I'm a OS expert experienced C/C++/ObjC developing. I can develop almost kinds of C/C++/ObjC codes for any OS : Windows, Linux, MAC OS X... I can use almost of develop libraries such as QT, MFC, boost... and ant I More

$21 USD / hour
(40 Reviews)
6.0