0% found this document useful (0 votes)
13 views10 pages

2marks-Pcd I

Uploaded by

727722euit027
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)
13 views10 pages

2marks-Pcd I

Uploaded by

727722euit027
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/ 10

1.

List the compiler construction tools

1. Lex: Lexical analyzer generator.


2. YACC (Yet Another Compiler Compiler): Parser generator.
3. ANTLR: Modern parser generator supporting various programming languages.
4. LLVM: Compiler infrastructure for optimization and code generation.
5. Bison: GNU's parser generator (similar to YACC).
6. GDB: Debugger for examining code generated by compilers.
7. LCC: Lightweight compiler construction tool.

2. Why is buffering used in Lexical Analysis? List the commonly used


methods

Buffering improves efficiency by processing large chunks of input instead of character-by-


character.
Methods:

1. Single Buffering: Reads one buffer at a time; slow for large files.
2. Double Buffering: Uses two buffers, allowing one to be filled while the other is
processed, improving speed.
3. Circular Buffering: Handles continuous input streams effectively.

3. Differentiate Lexemes, Tokens, and Patterns

Aspect Lexeme Token Pattern


Smallest unit of Category for
Definition Rule to define lexeme structure
language lexemes
[a-zA-Z][a-zA-Z0-9]*
Example if, num, + (KEYWORD, if)
(identifier)

4. Regular definition for identifier and number

 Identifier: [a-zA-Z_][a-zA-Z0-9_]*
 Number: [-+]?[0-9]+(\.[0-9]+)?([eE][-+]?[0-9]+)?

5. Eliminate left factoring

Given Grammar:

css
Copy code
S → aAbc | aAb | d
A → e

Factored Grammar:

vbnet
Copy code
S → aAbS' | d
S' → c | ε
A → e

6. Parse tree for cad using recursive descent parsing

Grammar:

css
Copy code
S → cAd
A → ab | a

Steps:

1. Expand S → cAd.
2. Match c.
3. Expand A → a.
4. Match a and d.

Parse Tree:

css
Copy code
S
/|\
c A d
|
a

7. Compute FIRST and FOLLOW for the grammar

Grammar:

r
Copy code
E → E+T | T
T → T*F | F
F → (E) | id

FIRST:

 FIRST(E) = {id, (}
 FIRST(T) = {id, (}
 FIRST(F) = {id, (}
FOLLOW:

 FOLLOW(E) = {$, )}
 FOLLOW(T) = {+, $, )}
 FOLLOW(F) = {*, +, $, )}

8. Define Handle and Handle Pruning

 Handle: Substring matching the right-hand side of a production, representing a


reduction step.
 Handle Pruning: Replacing handles with their corresponding non-terminals during
bottom-up parsing.

9. Three-address code for a while loop


vbnet
Copy code
L1: if i >= 10 goto L2
x = 0
i = i + 1
goto L1
L2:

10. DAG and Quadruples for a = b * -c + b * -c

DAG:

markdown
Copy code
+
/ \
* *
/ \ / \
b -c b -c

Quadruples:

markdown
Copy code
1. t1 = -c
2. t2 = b * t1
3. t3 = b * t1
4. t4 = t2 + t3
5. a = t4

11. Significance of Compiler


 Purpose: Converts high-level code to machine-readable code.
 Example: Translating C++ code (int a = 5;) into assembly language.

12. Differentiate DFA and NFA

Feature DFA NFA


Transitions Single transition per input symbol. Multiple transitions per input symbol.
Complexity Easier to implement. More complex due to branching.

13. Symbol Table Usage

 Purpose: Stores variable names, types, and scope.


 Example: Storing int x; as (x, int, global).

14. Compiler vs Interpreter

Aspect Compiler Interpreter


Execution Translates code entirely. Executes line by line.

15. Transition Diagram for Unsigned Constant

Matches [0-9]+:

scss
Copy code
(Start) → [0-9] → [0-9]* → (Final)

16. Ambiguous Grammar

Grammar:

Copy code
S → aSbS | bSaS | ε

Ambiguity: A string like abab has multiple parse trees.

17. Regular Expression for bba Endings

Regular Expression: (a|b)*bba


18. Backtracking in Recursive Descent Parsing

Occurs when an incorrect path is chosen.


Example: Grammar S → aA | bB with input bC.

19. Left Recursion Removal

Given Grammar:

css
Copy code
S → Aa | b
A → Ac | Sd | ε

Transformed Grammar:

vbnet
Copy code
S → bS'
S' → aS' | ε
A → dA'
A' → cA' | ε

20. Language Processing System Diagram

1. Preprocessor: Removes comments and macros.


2. Compiler: Translates to assembly.
3. Assembler: Converts assembly to object code.
4. Linker: Combines object files.

(Answers for 21-37 continue in the next message.)

4o

You said:

continue

ChatGPT said:

ChatGPT

21. Error Recovery in Syntax Analysis

1. Panic Mode: Discards input until a synchronizing token is found.


2. Phrase-Level: Replaces or inserts tokens to correct errors.
3. Error Productions: Adds grammar rules for common errors.
4. Global Correction: Minimizes the cost of corrections.
5. Automatic Error Recovery: Uses predefined strategies.

22. Define Ambiguous Grammar with Example

 Definition: A grammar is ambiguous if a string can have multiple parse trees or


derivations.
 Example:

mathematica
Copy code
E → E + E | E * E | id

String: id + id * id
Ambiguity: Different parse trees based on operator precedence.

23. Transition Diagram for Relational Operators

For <, <=, >, >=, ==, !=:

scss
Copy code
(Start) → < → (=)? → (Final)
(Start) → > → (=)? → (Final)
(Start) → = → = → (Final)
(Start) → ! → = → (Final)

24. Eliminate Left Recursion

Given Grammar:

css
Copy code
S → Bb | Cd
B → aB | ε
C → cC | ε

Eliminated Grammar:

css
Copy code
S → aBb | d
B → aB | ε
C → cC | ε
25. Differentiate Top-Down and Bottom-Up Parsing

Aspect Top-Down Parsing Bottom-Up Parsing


Start Point Begins from the start symbol. Begins from the input string.
Methods Recursive descent, LL parsers. Shift-reduce, LR parsers.

26. Compute FIRST and FOLLOW

Grammar:

css
Copy code
S → ABDCE
A → a | ε
B → b | ε
C → c
D → d | ε
E → e | ε

FIRST:

 FIRST(S) = {a, b, c, d, ε}
 FIRST(A) = {a, ε}
 FIRST(B) = {b, ε}
 FIRST(C) = {c}
 FIRST(D) = {d, ε}
 FIRST(E) = {e, ε}

FOLLOW:

 FOLLOW(S) = {$}
 FOLLOW(A) = {b, c}
 FOLLOW(B) = {c, d}
 FOLLOW(C) = {d}
 FOLLOW(D) = {e}
 FOLLOW(E) = {$}

27. Infer the YACC Tool

 Definition: YACC (Yet Another Compiler Compiler) is a tool used to generate


parsers for context-free grammars.
 Usage: Converts a grammar into C code for syntax analysis.

28. Finite Automaton (FA) for Regular Expression R = (0+1)*110*1


1. Accepts strings containing 110 followed by 1.
2. FA Diagram:

scss
Copy code
(Start) → 1 → 1 → 0 → 0 → (Accept)
↘ 0 ↘ 1

29. Algorithm to Create Predictive Parsing Table

1. Compute FIRST and FOLLOW for all non-terminals.


2. For each production A → α:
o Add α to the table under A and FIRST(α).
o If ε is in FIRST(α), add FOLLOW(A) entries.
3. Mark errors for undefined entries.

30. Lex Rule for Identifier


csharp
Copy code
[a-zA-Z_][a-zA-Z0-9_]* { return IDENTIFIER; }

31. Recognition of Relational Operator Tokens

Lex Rule:

kotlin
Copy code
<|<=|>|>=|==|!= { return REL_OP; }

32. Regular Expression for Language {00, 11}

makefile
Copy code
R = (00 | 11)

33. Eliminate Left Recursion

(Same as 24)

css
Copy code
S → Bb | Cd
B → aB | ε
C → cC | ε
34. Examples of Bottom-Up Parsing

1. Shift-Reduce Parsing: Constructs parse tree using shift and reduce operations.
2. LR Parsing: Uses parsing tables and a stack.

35. Compute FIRST and FOLLOW

Grammar:

css
Copy code
S → A
A → a | b

FIRST:

 FIRST(S) = {a, b}
 FIRST(A) = {a, b}

FOLLOW:

 FOLLOW(S) = {$}
 FOLLOW(A) = {$}

36. FA for Regular Expression R = (0+1)*

Accepts all strings of 0 and 1 (including empty).


FA Diagram:

scss
Copy code
(Start/Accept) → 0 → (Accept)
(Start/Accept) → 1 → (Accept)

37. Eliminate Left Recursion

Given Grammar:

css
Copy code
A → Ac | d

Eliminated Grammar:

css
Copy code
A → dA'
A' → cA' | ε

You might also like