1. What is the primary role of a lexical analyzer in a compiler?
A) To check for semantic errors
B) To generate intermediate code
C) To parse the syntax of the source code
D) To break the source code into tokens
Answer: D) To break the source code into tokens
2. Which tool is primarily responsible for tokenizing the input source code into meaningful symbols?
A) YACC
B) Lex
C) Bison
D) GCC
Answer: B) Lex
3. Which of the following is the main function of the syntax analyzer (parser) in a compiler?
A) To identify the lexical errors in the source code
B) To translate the source code into machine code
C) To check the grammatical structure of the source code
D) To optimize the code
Answer: C) To check the grammatical structure of the source code
4. Which of the following tools is used for syntax analysis (parsing) in a compiler?
A) Lex
B) YACC
C) Bison
D) Both B and C
Answer: D) Both B and C
5. What does a lexical analyzer produce from the source code?
A) An abstract syntax tree
B) A set of intermediate code
C) A sequence of tokens
D) A machine code translation
Answer: C) A sequence of tokens
6. Which of the following tasks is handled by a syntax analyzer (parser) in a compiler?
A) Identifying tokens
B) Generating machine code
C) Checking if the source code conforms to the grammar of the programming language
D) Optimizing the code
Answer: C) Checking if the source code conforms to the grammar of the programming language
7. Which of the following tools is used for lexical analysis in a compiler?
A) Bison
B) GCC
C) Lex
D) YACC
Answer: C) Lex
8. How does YACC (Yet Another Compiler Compiler) contribute to the compiler design process?
A) It generates lexical analyzers from regular expressions
B) It generates parsers for syntactic analysis from context-free grammar
C) It optimizes machine code
D) It translates source code into machine code
Answer: B) It generates parsers for syntactic analysis from context-free grammar
9. What is the key difference between Lex and YACC?
A) Lex performs syntax analysis, while YACC performs lexical analysis
B) Lex performs lexical analysis, while YACC performs syntax analysis
C) Lex and YACC both perform the same tasks
D) YACC is used for code generation, and Lex is used for optimization
Answer: B) Lex performs lexical analysis, while YACC performs syntax analysis
10. Which of the following is the role of a syntax analyzer in the context of compiler design?
A) It generates machine code from source code
B) It converts source code into intermediate code
C) It checks for syntax errors and ensures the source code follows the grammar of the programming language
D) It breaks source code into tokens
Answer: C) It checks for syntax errors and ensures the source code follows the grammar of the programming language
11. Which tool is commonly used to generate parsers for context-free grammars?
A) Lex
B) YACC
C) GCC
D) Flex
Answer: B) YACC
12. In which phase of the compilation process does Lexical Analysis occur?
A) Code generation
B) Intermediate code generation
C) Front-end processing
D) Optimization
Answer: C) Front-end processing
13. What is the output of a lexical analyzer?
A) A parse tree
B) A syntax tree
C) A stream of tokens
D) A set of semantic rules
Answer: C) A stream of tokens
14. Which of the following best describes Lex?
A) A syntax analyzer tool used to generate parsers
B) A lexical analyzer tool used to tokenize the input
C) A tool for semantic analysis
D) A code optimization tool
Answer: B) A lexical analyzer tool used to tokenize the input
15. Which of the following is the main responsibility of YACC in a compiler design?
A) Tokenizing the input code
B) Parsing the source code according to a specified grammar
C) Generating intermediate code
D) Optimizing the code
Answer: B) Parsing the source code according to a specified grammar
16. Which of the following is NOT the responsibility of a lexical analyzer in a compiler?
A) Recognizing keywords, identifiers, and constants
B) Generating a stream of tokens
C) Ensuring the source code follows the language’s grammar rules
D) Removing comments and whitespace from the input
Answer: C) Ensuring the source code follows the language’s grammar rules
17. Which of the following statements about syntax analyzers is true?
A) They only detect lexical errors
B) They generate machine code directly
C) They check whether the program follows the syntactic rules of the programming language
D) They perform optimization on the code
Answer: C) They check whether the program follows the syntactic rules of the programming language
18. What is the purpose of semantic analysis after lexical and syntax analysis?
A) To check for grammatical errors
B) To assign types and check for semantic errors in the code
C) To generate intermediate code
D) To optimize the code
Answer: B) To assign types and check for semantic errors in the code
19. Which of the following is NOT a role of the lexical analyzer in compiler design?
A) Extracting tokens from source code
B) Generating abstract syntax trees
C) Removing comments and white spaces
D) Recognizing keywords and identifiers
Answer: B) Generating abstract syntax trees
20. What does a syntax analyzer (parser) use to determine the syntactic structure of the source code?
A) Regular expressions
B) Tokens produced by the lexical analyzer
C) Optimized machine code
D) Semantic rules
Answer: B) Tokens produced by the lexical analyzer