You are on page 1of 10

Compiler Design

PROJECT PRESENTATION :
COMPILER FOR OBJECTIVE C
Objective C: An Introduction
The Objective-C language is a strict superset
of 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.
Non-C features :
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
The actual code is written in @implementation block.
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 interesting feature of the language is that an
object can be sent a message that is not specified
in its interface.
Forwarding
If message is sent to an object which might not
respond to it, it forwards the message on to an
object which can respond to it.
Posing
Objective-C permits a class to pose for another
class within a program, i.e., all messages of the
target class are received by the posing class.
Category
Categories permit the programmer to add methods
to a class and replace an existing method.
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.
 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++.
 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 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 : Almost Completed
Tool used : Yacc
 Symbol Table : Hash table of an object with attributes
-lexeme and token. The hash function we chose is:
length(lexeme)%5
All the identifiers go in the SymbolTable and an
identifier is inserted only if it is not already present in
it.
 We initially decided that C++ as our implementation
language but now have to convert our Symbol Table
implementation to C.
End User commands
• Objective-C code is to written in a .m file.
• The compiler can be invoked by the
following commands:

$dawk –h? –d? –p? (-o <target>) <src.m>


Future Plans
 We have almost completed parser and testing
would be complete before the deadline on 28th.
 We have not yet skipped any language feature and
we are aiming to keep it that way till the end.
 We are not so keen on the optimization.
 And we have a strong belief that sticking to future
deadlines would ensure successful completion of
our project.

You might also like