GATE CS 2021 Set 1 — Question 36
Go beyond PYQs with Success TrackerAI-powered personalised practice and doubt support. Unlimited practice on eligible plans; AI usage limits apply.MCQ+2 / -0.67MediumType CheckingSemantic AnalysisCompiler DesignSyntax-Directed Translation
Compiler Design → Semantic Analysis → Syntax-Directed Translation
Last updated
Question
Consider the following grammar (that admits a series of declarations, followed by expressions) and the associated syntax directed translation (SDT) actions, given as pseudo-code:With respect to the above grammar, which one of the following choices is correct?
P -> D* E*
D -> int ID {record that ID.lexeme is of type int}
D -> bool ID {record that ID.lexeme is of type bool}
E -> E1 + E2 {check that E1.type = E2.type = int; set E.type := int}
E -> !E1 {check that E1.type = bool; set E.type := bool}
E -> ID {set E.type := int}
Correct answer
(B) The actions can be used to type-check syntactically correct integer variable declarations and integer expressions.
Solution
Analyze the SDT actions:
- The rule
E -> ID {set E.type := int}unconditionally sets the type of any identifier expression toint, regardless of how the identifier was declared (even though the declaration rules record the correct type). - Integer expressions: If we have an expression like
x + y,xandyare reduced toEwith typeint. The ruleE -> E1 + E2checks if operands areint, which they are. This works correctly for integers. - Boolean expressions: If we have an expression like
!bwherebis a boolean variable,bis reduced toEviaE -> ID, settingE.typetoint. The ruleE -> !E1checks ifE1.typeisbool. Since it isint, the type check fails.
Continue learning with Success Tracker
A step still unclear? Work through it with support
Use Success Tracker to ask about the reasoning, then try another GATE CS question to check your understanding.
AI-powered practice· Unlimited practice on eligible plans
- PYQs with solutions
- Attempt available previous-year questions, then compare your reasoning with the worked solution. Coverage varies by stream.
- Practice that adapts
- Choose a topic, work on weaker areas and bookmark questions to revisit. Your attempts feed your progress tracking.
- AI doubt support
- Ask follow-up questions about a step or concept while practising, instead of stopping at the final answer.
Unlimited practice is available on eligible plans. Free practice and AI usage have limits; check the current plan allowances before choosing.
This page stays readable without an account. AI responses can be wrong; check them against the solution and source material.
More questions on Semantic Analysis
2026 Set 2 Q17In C runtime environment, which one of the following is stored in heap?2026 Set 2 Q19Consider the following three ANSI-C programs, P1, P2, and P3. P1 [code] P2 [code] **P3**…2026 Set 1 Q27Consider the following C statements: Which of the following options is/are correct? [figure]2026 Set 1 Q28Which of the following statements is/are true?2026 Set 2 Q35A lexical analyzer uses the following token definitions - - …