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