Compiler Design

Download Report

Transcript Compiler Design

Compiler Design
PROJECT PRESENTATION :
COMPILER FOR OBJECTIVE C
Harshal Waghmare
Jeet Kumar
Nandan Kumar
Vishal Agrawal
Objective C: An Introduction
•The
Objective-C language is defined as a small but
powerful set of extensions to the standard C
language., designed to give C full object-oriented
programming capabilities.
•The Objective-C model of object-oriented
programming is based on sending messages to
sovereign objects.
•An object with method "method" is said to
"respond" to the message method.
[obj method:parameter];
•Objective-C messages do not need to execute
because they are dynamically bound.

Interfaces and implementations
Objective-C requires the interface and implementation of a class be in
separately declared code blocks.
The interface is put in a header file:
@interface classname : superclassname {
// instance variables
}
//class methods
//instance methods
@end
The actual code is written in implementation:
@implementation classname
+classMethod {
// implementation
}
-instanceMethod {
// implementation
}
@end

Instantiation
This is done by first allocating the memory for a new object
and then by initializing it.
MyObject * o = [[MyObject alloc] init]

Protocols
An informal protocol is a list of methods which a class can
implement.

Dynamic typing
An object can be sent a message that is not specified in its
interface.

Forwarding
If message is sent to a object which might not respond to it,
it forward the message on to an object which can respond to
it.

Posing
Objective-C permits a class to wholly replace another class
within a program
History & Evolution





Hybrid between smalltalk and c.
Created primarily by Brad Cox and Tom Love
who began by modifying the C compiler to add
some of the capabilities of Smalltalk.
In 1988, Next released their own Objective-C
compiler and libraries.
The GNU Objective-C runtime which has been in
use since 1993 is the one developed by Kresten
Krab Thorup.
Most of Apple's present-day Cocoa API is based
on OpenStep interface objects, and is the most
significant Objective-C environment being used
for active development.
Why better than others?
Objective-C messages do not need to execute
because they are dynamically bound. If message is not
implemented the code will still compile and run,
unlike statically typed languages like C++.
 The Objective-C protocols is better than Java or C#
concept of interfaces in that a class may implement a
protocol without being declared to implement that
protocol.
 Delegating methods to other objects and remote
invocation can be easily implemented using categories
and message forwarding.
 Instead of using an Enumerator object to iterate
through a collection, Objective-C offers the fast
enumeration syntax






Since ObjC is C plus Objects, it's very compatible with
C (and now C++) code bases.
Categories allow addition of methods to classes after
the class's initial definition. We can redefine an existing
method's implementation.
Objective-C has a dynamic run-time. It allows crafting
messages at run-time, dynamically creating classes,
dynamically adding methods to existing classes, changing
method implementations and so on.
ObjC has real, fast, runtime message sending.
#import appends a file only if it has not been already
appended, unlike #include.
Progress till now
Lexical Analysis : Completed
Tool used : Lex
 Syntax Analysis : Completed
Tool used :Yacc
 All implementations till now are in C ,
except that symbol table is implemented
in C++.

Future Plans
Deadlines
28th February : Syntax Analysis
 15th March : Semantic Analysis
 30th March : Intermediate Code
Generation
 10th April : Final code Generation
