0% found this document useful (0 votes)
11 views3 pages

Research On Compilers

The document discusses compilers, which translate source code from one programming language to another. It covers different types of compilers, their relation to interpreters, their historical development, challenges faced and how their designs have evolved, and parsing strategies used in compilation. Compilers have become crucial in enabling the creation of executable programs from high-level code.

Uploaded by

lesevoj365
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views3 pages

Research On Compilers

The document discusses compilers, which translate source code from one programming language to another. It covers different types of compilers, their relation to interpreters, their historical development, challenges faced and how their designs have evolved, and parsing strategies used in compilation. Compilers have become crucial in enabling the creation of executable programs from high-level code.

Uploaded by

lesevoj365
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

‫اعداد الطلبة‬

2000901070 : ‫خليل ضياء الترك‬


2000901042 :‫احمد علي غرايبة‬
2000901032 : ‫احمد محمد سربل‬

Research on Compilers

A compiler is a crucial tool in the realm of computing,


translating source code written in one programming
language into another language, often a lower-level one
like assembly or machine code. This translation process is
essential for creating executable programs from high-level
code.

Types of Compilers:
- Cross-Compiler: Produces code for a different CPU or
operating system than the one it runs on.
- Bootstrap Compiler: Temporary compiler used to
compile a more permanent or optimized compiler for a
language.
- Decompilers: Translate from low-level languages to
higher-level ones.
- Source-to-Source Compilers or Transpilers: Translate
between high-level languages.
- Language Rewriters: Translate the form of
expressions without changing the language.
- Compiler-Compilers: Produce compilers or parts of
them in a generic and reusable way to create different
compilers.

Relation to Other Language Processors:


Compilers are not the only language processors.
Interpreters also play a significant role, transforming and
executing operations indicated in the code. While
theoretically, a programming language can have both a
compiler and an interpreter, in practice, languages tend to
be associated with one or the other.

Historical Development:
Theoretical concepts from scientists, mathematicians, and
engineers during World War II laid the foundation for
modern computing. Primitive binary languages emerged
due to digital devices' limited understanding of ones and
zeros. Assembly languages were then created to provide
a more manageable abstraction of computer architectures.

Challenges and Evolution:


Early computers faced substantial technical challenges
due to limited memory capacity, leading to the division of
the compilation process into smaller programs. Front-end
programs analyze the code and produce results used by
back-end programs to generate target code. As computer
technology advanced, compiler designs improved to better
align with the compilation process.

Parsing Strategies:
Top-down parsing is a strategy where the parser begins at
the highest level of the parse tree and works down by
using the rewriting rules of a formal grammar. LL parsers,
a type of top-down parser, are commonly used. Top-down
parsing involves hypothesizing general parse tree
structures and checking if known structures align with the
hypothesis. While simple implementations may struggle
with left-recursive grammars, more sophisticated parsers
have been developed to handle ambiguity and left
recursion more efficiently.

Conclusion:
Compilers play a critical role in translating code from one
language to another, enabling the creation of executable
programs. They have evolved significantly over time,
overcoming various technical challenges to become
essential tools in modern computing.

You might also like