Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 2 0verview of Language Processor

Similar presentations


Presentation on theme: "Chapter 2 0verview of Language Processor"— Presentation transcript:

1 Chapter 2 0verview of Language Processor

2 Language processor is a system program that bridges the gap how a user describes the computation – we call it specification of the computation – and how a computer executes a program. The ease of specification depends on the language in which the specification is written.

3 Programming Lang. and Language Processors
A typical user does not wish to interact with the computer on terms of machine language. Easier to describe the computation by using the terms related to entities and operations in the application domain of the software

4 Example – Application domain
.. i.e. designer of airline reservation application would like to think of how the reservation data would be used by the query, book and cancel operations, rather than how the data and operations should be implemented in the machine language. The description of the reservation data and the query, book and cancel operations forms a specification of the application.

5 Execution domain The system software of the computer has to help in implementing this specification on the computer by using its machine language; we say that the system software has to implement this specification in the execution domain of the computer system. The entities in this domain are cells in memory and registers in the CPU, and the operations are the instructions of the CPU

6 Semantic gap Semantics : to represent the rules of meaning of a domain. For example, the semantics of the applications domain of an airline reservation system would govern the meaning of query, book and cancel operations. We use the term semantic gap to represent the difference between the semantics of two domains.

7 Semantic gap between domain

8 The above figure is an abstract view of the application and execution domains and semantic gap between them. The data of domain are represented by an oval shape while the operations are represented by rectangular boxes. We say a semantic gap is bridged when a specification in one of the domains is converted into a specification in the other domain. Achieved by software engineering- set of methodology for effective software development

9 Two key software engg steps
1) specification and design of an application program , followed by its coding in a programming language 2) Execution of the program with the help of a language processor.

10 Programming language domain
An application program written in a programming language is governed by semantics of the programming language. Thus use of programming language introduces a new domain, the programming language domain. Its semantics are determined by the rules of programming language concerning operations on data structures and meaning of control structures such as conditional statements, loops and procedure calls.

11 Two steps of se The first of the above steps bridges the gap between the application domain and the programming language domain, While the second step bridges the gap between the programming language domain and the execution domain.

12 Execution gap We refer to the gap between application and programming language domains as the specification-and-design gap or simply the specification gap, The gap between the programming language and execution domains as the execution gap.

13 Specification and execution gap

14 Large semantic gap Large semantic gap has many adverse consequence.
(as semantics of domains are very different) Task of bridging gap is complex and requires more effort More prone to errors

15 To overcome such adverse consequences:
Intermediate domain can be used so that semantic gap can be split into a series of smaller semantic gaps between successive domains A system program can be used to perform conversion of specifications across domains. So conversion is faster, cheaper and more reliable as it is not performed manually

16 Use of programming lang
Use of programming language combines both these methods as follows. Programming language domain is introduced as intermediate domain, so that semantic gap between the application and execution domain is spilt into two smaller semantic gap- the specification gap and the execution gap

17 Only specification gap is bridged by the software designer, whereas the execution gap is bridged by the language processor such as a compiler or an interpreter The language processor also provides capability to detect and indicate errors in its input, which helps in improving reliability of software.

18 Specification language
Each domain has a specification language. A specification written in a specification language is a program in the specification language. The specification language of programming language domain is prog. Lang. itself The specification language of the execution domain is the machine language of the computer system.

19 Specification n execution gap
Specification gap is the semantic gap between two specifications of the same task. Execution gap is the semantic gap between semantics of programs that perform the same task but written in different programming language.

20 Kinds of Language Processors
A language processor is a software which bridges an execution gap. Language processing is an activity performed by a language processor. As we know, A semantic gap is bridged by converting a specification in one domain into specification in another domain.

21 During this conversion, the lang proc
During this conversion, the lang proc. Points out errors in the input specification and aborts conversion if errors are present. This capability of language processor , which we call the diagnostic capability, contributes to reliability of a program written in a programming language by ensuring that it would reach execution only if it is free of specification errors.

22 Source and target program
A program form input to a lang proce as source program and A program form output by it as the target program Languages in which these programs are written called the source language and the target language. A lang proc abandons generation of target program if it detects errors in source program

23 Kinds of language processor
Language Translator: A language translator for a programming language PLi bridges an execution gap between PLi and machine language ( or assembly language) of computer Ck. It is called a compiler for PLi if it generates a target program that is in the machine language of computer Ck. Called interpreter if it executes the meaning of a source program on computer Ck without generating a machine language program

24 Translator : is called a cross-translator if it bridges an execution gap to the machine language of Ck, but itself runs on some computer other than Ck. Detranslator : bridges the same execution gap as the language translator, but in opposite direction. Preprocessor : is an language processor which bridges an execution gap but is not a language translator. Language migrator : bridges the specification gap between two programming languages.

25 Translator Need for cross-translator in the embedded system environment, an embedded computer system Ck may lack the resources needed to run language translator, so a cross translator is run on some other computer system Cj that has sufficient resources and it produces machine language program for computer Ck.

26 DeTranslator If a program written in a programming language has been compiled but its source has been lost. A detranslator can be used to convert the machine language program into program written in the programming language, Hand-coded machine language programs can also be translated.

27 Pre-Processor Use of pre-processor in conjunction with translator for prog. Language can provide features that are a superset of prog. Language’s features. Example …how this arrangement can be used to provide c++ features by using a translator for C

28

29 (a) is preprocessor for lang c++
Produces target program in c Translator for c will convert into machine code (b) shows translator for c++ More efficient to use in single step But more complex than c++ preprocessor, so more time and efforts required

30 Language Migrator Is used to convert a program written in one prog lang into a program written in another prog. Lang. It may be done to provide portability of programs, Or to prolong the life of a legacy program by migrating it to a more modern prog lang. Quality depends on differences in the semantics of two programming languages.

31 Interpreters Is language processor bridges an execution gap without generating machine lang program As it’s a language translator, it resembles a compiler It does not produce target program, so it does not have an output interface; we say that an interpreter ‘executes’ a program written in a programming language.

32 Abstract view of an interpreter

33 Interpreter domain encompasses both prog lang as well as execution domain of system.
Here can be viewed as a computer is capable of understanding the prog lang. Because specification language of prog lang domain is also specification language of interpreter domain.

34 Procedure oriented language
A procedure oriented language provides general purpose facilities for declaring data and performing operations that are useful in most application domains Its use in a specific application results in a large semantic gap which has to be bridged by a software designer. We know the adverse consequences of large semantic gap.

35 Here these consequences are actually due to specification gap because the execution gap is bridged by a language processor. A solution to this problem is to develop a programming language whose domain is very close to the application domain. Now, data and operations of the programming language almost directly model data and operations of the application domain, which leads to a very small specification gap, hence it is called a problem oriented language.

36 It has a large execution gap; however, the gap does not have adverse consequences because it is bridged by a translator or interpreter – does not concern the software designer. The scripting language Tcl/Tk is a problem oriented language for user interfaces. COBOL was designed for business, FORTRAN for scientific and GPSS for simulation.

37

38 Fourth generation (4GL, or "report generator language") An "application specific" language, one with built-in knowledge of an application domain, in the way that SQL has built-in knowledge of the relational database domain. The term was invented by Jim Martin to refer to non-procedural high level languages built around database systems.

39 Fourth generation languages are close to natural language and were built with the concept that certain applications could be generalised by adding limited programming ability to them. Some examples of 4GL are: database query language e.g.SQL; Focus, Metafont, PostScript, S, IDL-PV, WAVE, Gauss, Mathematica, and data-stream languages such as AVS, APE, Iris Explorer

40 4GLs are designed to reduce the overall time, effort and cost of software development.
The main domains and families of 4GLs are: database queries, report generators, data manipulation, analysis and reporting, screen painters and generators, GUI creators, mathematical optimization, web development and general purpose languages. Also known as a 4th generation language, a domain specific language, or a high productivity language.

41 Fifth generation language
A fifth generation (programming) language (5GL) is a grouping of programming languages build on the premise that a problem can be solved, and an application built to solve it, by providing constraints to the program (constraint-based programming), rather than specifying algorithmically how the problem is to be solved (imperative programming). 

42 In essence, the programming language is used to denote the properties, or logic, of a solution, rather than how it is reached. Most constraint-based and logic programming languages are 5GLs.

43 Most of the applicable problems solved by this approach can currently be found in the domain of artificial intelligence.  Prolog, OPS5 and Mercury are examples of fifth-generation languages. PROLOG (acronym for PROgramming LOGic) is an example of a Logical Programming Language.

44 Language Processing Activities
There are two categories of language processing : 1) Program generation activity 2) Program execution activity

45 Program generation Activity
Generates a program from its specification The language in which the specification of the program is written is close to the specification language of an application domain and target language is typically a procedure oriented programming language. Thus, program generation bridges the specification gap.

46 Program execution Activity
Aims at bridging the execution gap by organizing execution of a program written in a programming language on a computer system. The programming language could be a procedure oriented or problem oriented language.

47 Program Generation Program generator – is a system program which accepts the specification of a program in some specification language and generates a program in the target language that fulfills the specification Use of program generators introduces new domain program generator domain between application domain and programming language domain.

48

49 Specification gap – faced by designer is now – gap between the application domain and the program generator domain It is smaller than between application domain and target programming language domain. The gap is insignificant if the specification language is problem oriented language. If the program generator domain is close to the application domain, the specification gap is small

50 Harder task of bridging the gap to PL domain is performed by program generator, which reduces the testing efforts as follows: Reliability depends on correctness of program generator Should be ensured during development of program generator Software designer has to ensure only the correctness of the specification input to the program generator Simpler than ensuring correctness of an equivalent program in the target language

51 Task can be simplified by:
Providing good diagnostic capability to the program generator so it would detect errors in the program specification A general purpose program generator: Is a flexible software – provides facilities that enable its users to add new operations and data to its specification language. It can be used for generating programs for use in different application domains.

52 A general purpose Prog Generator

53 Its input consist of two components :
Definitions of new operations and data Specification of the program to be generated The definitions of a new operation provides mapping between the operation and a sequence of statements in a target language of the program generator. Program generator replaces every use of a new operation in a program’s specification by this sequence of statements.

54 Development of program generator required less effort and time than development of a problem oriented language Use of program generator also provides portability because the generated program is in a standard procedure oriented programming language. So it can be executed in any computer that has a translator for that programming language

55 Program Execution May be executed through translation and interpretation 1) Program translation: Bridges the execution gap by translating a program written in a programming language, called source program, into an equivalent program in the machine or assembly lang of computer system, called the target program

56 If it is machine program – executed straight away
If it is an assembly lang program – it would have to be further translated by an assembler

57 Program translation model
Characteristics of program translation model: A program must be translated before it can be executed A machine lang program generated by the translator may be saved in a file so that it can be loaded into computer’s memory and executed whenever desired. Which makes it unnecessary to translate the source program every time is to be executed.

58 If source program is modified , must be translated before it can be executed , we call it retranslation following a modification

59 Practical arrangements of language processor
Output of each of the language processor can be saved on disk and used repeatedly Important features of this arrangements Pre-processor Using a sequence of translators Linking and loading

60 Pre-Processor One or more pre processor are used along with a translator for a programming language to provide a superset of programming language’s features. As we have seen before, use of C++ pre processor along with c compiler enables use of the C++ language without having to develop a C++ compiler.

61 Program Interpretation
Executes without generating target program Achieve by reading a source program and its data in memory and performing the following tasks repeatedly until the program terminates Analyze the statement that is to be executed next to find what actions are needed to implement its meaning and perform necessary actions. Actions may result in changes in values of variables, i/p o/p operations and decisions concerning branches and looping

62 Let us understand how it works
by considering similarities between interpretation of a program and execution of a machine language program by CPU The machine language program is situated in memory. CPU uses a program counter to hold the address of the memory locations that contains the next machine instruction to be executed . Execution of a program is achieved by repeatedly performing the instruction execution cycle which consists of following steps.

63 1) fetch the instructions that is to be executed next – it exists in the memory locations whose address is contained in Program counter 2) Decode the instruction to determine what operation is to be performed and what its operands are.. Indicated an error if an operation code or operand is invalid

64 3) perform the operation
3) perform the operation. In case of branching and looping instruction, operation may replace the address contained in PC by new one. All other instructions, address in PC is incremented so it points at memory location that contains the next instruction in the program

65 Program interpretation
Interpretation can proceed in an analogous manner Is system program not hardware unit It maintain PC to hold statement number of source program that is to be interpreted next. This statement is subjected to interpretation cycle, consists of following steps.

66 1) Fetch the statement whose no is in PC
2) Analyze the statement and determine what operations are to be performed and what their operands are. Detect and indicate errors if any 3) perform the operations. In case of branching and looping statement, the operation may replace the statement number contained in PC by a new one. For all other statements, incremented to point to next statement in source program

67

68 Characteristics of interpretation
The source program is retained in the source form itself, i.e. it is not converted to a target form A statement is analyzed during its interpretation Thus , a statement need not be analyzed before it is interpreted.

69 This feature is beneficial if a program is modified between executions, as in the program development environment. However, it also makes interpretation of a statement slower than execution of machine language instructions that a compiler would have generated for the statement.

70 Language processing fundamentals
Analysis of the source program + Synthesis of the target program This definition motivates a generic two-phase model of language processing activities – the source program analyzed during the analysis phase and target program is synthesized during the synthesis phase.

71 This model partially applies to interpreters in that an interpreter does not have a synthesis phase.
Figure below shows a schematic of a language processor that uses this model.

72

73 Lexical rules govern formation of valid lexical units in the source language, such as operators, identifiers and constants := . * and / as operators Percent_profit , profit and cost_price as identifiers 100 as a constant

74 Syntax analysis Govern formation of valid statements in the source language. Revels the statement to be an assignment statement with percent_profit as the varible on the left size and other as the expression on the right side

75 Semantic analysis Associate meanings with valid statements of the source language. deduces the meaning of the statement to be the assignment of profit x 100 / cost_price to percent_profit.

76 Synthesis phase Is concerned with construction of target language statements which would implement the meaning of a source statement. it consists of two main tasks as follows: Data declaration statement Imperative statement Called memory allocation and code generation

77 example

78 A language processor generates the following target program for the source statement.
This program is in the assembly language of a computer, which we call the target machine of the language processor The DW statements in the program reserve words in memory for holding data DC statement reserves a word in memory and stores the constant 100 in it

79 The statement MOVER and MOVEM move a value from a memory location to a CPU register and vice versa

80 Multi pass organization of LP
We have impression that language processing can be performed on a statement by statement basis That is , analysis of a statement in the source program can be immediately followed by synthesis of target statements But statement –by- statement may not feasible due to two reasons.

81 1) A source program may contain forward reference
A forward reference of a program entity is reference to the entity in some statement of the program that occurs before the statement containing the definition or declaration of the entity. 2) may require more memory than is available for its operation

82 Forward reference causes problem in statement-by-statement processing because
The language processor would not know the attributes of the entity when it encounters the forward reference Consequently, it would not be able to generate the correct code for it Percent_profit = (profit* 100) / cost_price; …. Long profit; Reference to profit in the assignment statement constitutes a forward reference because the statement occurs before statement long profit;

83 If program is processed on a statement-by-statement basis, the language processor would not know the type of variable profit while processing the assignment statement, hence it would not be able to generate the correct code. These problems are addressed by using a multi-pass organization of language processors

84 Multi-pass The language processor splits the task of language processing into sequence of stages Problem of forward reference is solved by analysis of program in one stage and generating target program in a later stage. So that now in our example language processor would have deduced type of profit before generating code.

85 Language processor pass
is the processing of every statement in a source program, or in its equivalent representation, to perform a language processing function Pass I : perform analysis of the source program and note the deduced information Pass II : Perform synthesis of the target program

86 Intermediate Representation
In pass I – it would analyze the source program to find the type of each variable. In pass II – it would again analyze the source program to generate target code by using type information noted in pass I. This duplication can be avoided by using an intermediate representation of the source program

87 Definition An intermediate representation is a representation of a source program which reflects the effect of some, but not all, analysis and synthesis functions performed during language processing. It is the ‘equivalent representation’ mentioned in definition of pass

88 Intermediate Representation (IR)
An IR reflects the effect of some but not all, analysis and synthesis tasks performed during language processing. Front End Back End Target Program Source Program Intermediate Representation (IR)

89 Second pass now would read the intermediate representation generated by previous pass, instead of reading source program ‘but not all’ simply differentiate target program and intermediate representation

90 To be effective, an intermediate representation should have following properties:
Ease of use Processing Efficiency Memory Efficiency

91 Ease of use : should be easy to construct and analyze the intermediate representation
Processing Efficiency : Efficient algorithm should be available for accessing the data structures used in intermediate representation Memory Efficiency: The intermediate representation should be compact so that it does not occupy much memory

92 Front end and back end The first pass is concerned exclusively with source language issues, it is called front end of language processor. The second pass is concerned with synthesis of the target program, it is called back end of a language processor. Front end and back end need not coexist in memory. So it will reduce the memory requirements

93 The code for the front end is first loaded in memory, LP analyzes the source program, generates the intermediate representation , and writes it to disk Now the code of front end is removed from the memory and code of the back end is loaded. LP reads the intermediate representation and synthesizes the target program

94 Toy Compiler Front End Performs lexical, syntax and semantic analysis of SP. Analysis involves Determine validity of source stmt. Determine the content of source stmt. Construct a suitable representation.

95 Output of Front End Tables of information Intermediate code (IC)
IC is a sequence of IC units, represents meaning of one action in SP

96 Example i: integer; a,b: real; a := b+i; Symbol Table. No. Symbol Type
Length Address 1 i int 2 a real 3 b 4 i* 5 temp

97 Intermediate code Convert (id, #1) to real, giving (id, #4) Add (id, #4) to (id, #3) giving (id, #5) Store (id, #5) in (Id, #2)

98 Lexical Analysis (Scanning)
Identifies lexical units in a source statement. Classifies units into different classes e.g id’s, constants, reserved id’s etc and enters them into different tables Token contains Class code and number in class Code #no e.g. Id #10

99 Example Statement a := b + i; a := b + i ; Id #2 Op #5 Id #3 Op #3

100

101 Syntax Analysis Processes tokens for a statement to determine its grammatical structure and build intermediate code that represents structure. A tree is chosen for the intermediate code because it can represent the hierarchical structure.

102 Syntax Analysis (Parsing)
Determines the statement class such as assignment statement, if stmt etc. e.g.:- a , b : real; and a = b + I ; real := + a a b b i

103 Semantic Analysis Determines the meaning of the SP
Results in addition of info such as type, length etc. Determines the meaning of the subtree in IC and adds info to the IC tree.

104 Stmt a := b +i; proceeds as Type is added to the IC tree
Rules of assignment indicate expression on RHS should be evaluated first. Rules of addition indicate i should be converted before addition Convert i to real giving i*; Add i* to b giving temp. Store temp in a.

105

106 Steps in semantic analysis of an assignment statement
:= := a, real + a, real + b, real i*, real b, real i, int (b) (a) := temp, real a, real (c) Steps in semantic analysis of an assignment statement

107 Intermediate code after analysis phase
1. Convert (Id,#1) to real, giving (Id,#4) 2. Add (Id, #4) to (Id, #3), giving (Id, #5) 3. Store (Id, #5) in (Id, #2)

108 Source Program Lexical errors Scanning tokens Symbol table Constant table Other table Syntax errors Parsing Parse tree Semantic analysis Semantic errors IC IR Figure: Front end of a Toy Compiler

109 Example for students integer i,j; real x,y,z,k,l; x = i + y;
k = j + z; l = x + k;

110 Back End Memory Allocation Calculated from its type, length. No.
Symbol Type Length Address 1 i int 2000 2 a real 2001 3 b 2002

111 Back end computes the memory requirement of a variable from its type, length found in the symbol table, and allocates memory to it. The address of allocated memory area is entered in the symbol table. Temporary results i* and temp are both computed and used in the assignment statement a = b + i;

112 Hence could be held in registers of the CPU if some registers are available.
Otherwise they would have to be stored in memory so memory should be allocated to them Here in symbol table below it is assumed that each variable requires only one memory location, and that temp and i* are not stored in memory

113 Symbol table after memory allocation

114 Code generation Two key decisions involved in generating good quality target code. 1. What instructions should be used for each of the actions in the intermediate code? 2. What CPU registers should be used for evaluating expressions?

115 1. Convert (Id,#1) to real, giving (Id,#4)
2. Add (Id, #4) to (Id, #3), giving (Id, #5) 3. Store (Id, #5) in (Id, #2) (IC Code) If back end decides to hold the values of i* and temp in the CPU register AREG, it would generate assembly code CONV_R AREG, I ADD_R AREG, B MOVEM AREG, A (Target Code)

116 IR Memory allocation IC Symbol table Code generation Target program Figure: Back End of the toy compiler

117 Symbol Tables Identifier used in source program called symbol
Names of variables, functions and procedures are symbols A Language processor uses the symbol table to maintain information about attributes of symbols used in a source program

118 Four kinds of operations
are performed on symbol table by LP 1. Add a symbol and its attributes : Make a new entry in the symbol table 2. Locate a symbol’s entry : Find a symbol’s entry in the symbol table 3. Delete a symbol’s entry : Remove the symbol’s information from the table 4. Access a symbol’s entry : Access the entry and set, modify or copy its attribute information.

119 Add and Locate Add and Locate operations take a symbol as a parameter e.g. ADD(s1) The Add operation indicates an error if an entry already exists for the symbol Otherwise , it makes a new entry The Locate operation returns a pointer to the symbol’s entry in the table if one exists, Otherwise, it returns a null pointer int *p; p = Locate(s1);

120 Delete and Access The delete and access operations may either take a symbol or the pointer to a symbol’s entry returned by the locate operation as parameters. Delete (s1) or Delete (p) Thus, the add and locate operations necessarily involve a search in the symbol table, whereas the delete and access operation may involve a search

121 Design goals of symbol table
Table’s organization should facilitate efficient search And table should be compact ; it should not occupy much memory Not possible to meet both these goals simultaneously because of the principle called time-space-trade-off

122 Time – space- trade off According to this principle , time required for searching and memory occupied by the symbol table can be traded off against one another. It’s possible to improve search efficiency by committing more memory to a symbol table, Let’s discuss few methods of organizing symbol table

123 Methods of organizing ST
ST consists of a set of entries organized in memory. two kinds of data structures are used for organizing its entries: Linear data structure Nonlinear data structure

124 Non Linear Data Structure :
Entries in the symbol table occupy adjoining areas of memory. This property used to facilitate search Non Linear Data Structure : Entries in the symbol table do not occupy contiguous areas of memory. The entries are searched and accessed using pointers

125 Use of linear – single contiguous area of memory that can accommodate all entries
This requirement forces designer to allocate memory for the largest number of entries the symbol table may contain However, it is wasteful because some part of the allocate memory may not be used. Nonlinear avoids the problem because it allows memory to be allocated in entry- by – entry manner

126 Diagram

127 Figure (a) Memory allocation for four linear data structures named A-D used in a program
Parts of data structure shown shaded with dotted lines are not in current use These parts may remain unused throughout execution of program; However memory allocated to them, cannot be used for other data structures.

128 Figure (b) shows allocation to four non linear data structures named E – H.
The program created different parts of these data structures at different times, so these parts do not occupy contiguous area of memory Two memory area to ds E, three memory area to ds F and so on. No parts of the allocated memory areas are currently unused.

129 Symbol table entry formats
Entry in ST comprised of fields that accommodate the attributes of one symbol One of these field is symbol field The field which forms basis for search is called key field Hence symbol field is the key field An entry may be declared as record

130 These attributes applicable to specific class is smaller
A programming language may specify large number of attributes of symbols. These attributes applicable to specific class is smaller Table below shows four class Variable – 3 (no.of attributes) Procedure - 2 Function - 4 Label - 1 Total number of attributes is 8; see the diagra

131

132 Entry formats for accommodating attribute
Fixed length entries Each entry in ST has fields for all attributes in the Programming language Variable-length entries Field only for the attributes specified for symbols of its class Hybrid entries It has a fixed-length part and a variable-length part

133

134 Here in (a) each entry has 8 attribute fields
When class=label, all attribute fields except the field for storing its statement number are redundant.(useless) (b) shows variable length entry format for a symbol that is used as a label. It has only one attribute field

135 Fixed length formats When fixed entry formats are used all entries in ST has identical format So it will use linear data structures like array It will enables the use of an efficient search procedure This organization makes inefficient use of memory since many entries may contain redundant fields

136 Variable length formats
Use of variable length format leads to compact organization in which memory wastage does not occur Search method would have to know the length of an entry So each entry would have to include a length field Format for such an entry

137 Hybrid format Combines search efficiency of fixed length and memory efficiency of variable length Each entry is split into two halves , fixed part and variable part Pointer field is added to fixed part It points to variable part of an entry Fixed part of all entries are organized into linear data structures As it has pointer to a variable part,

138 Variable part does not need to be located through search
Hence it could be put into a linear or non linear data structure

139 End of the Chapter..!! Thank you.!!


Download ppt "Chapter 2 0verview of Language Processor"

Similar presentations


Ads by Google