Let us analyze each statement based on the definitions:
Language Equivalence (Option A):
Grammar G1:
T→int∣float V→V1id∣id Here, V generates one or more identifiers, id+. Thus, L(G1)=(int∣float)id+.
Grammar G2:
D→D1id∣Tid T→int∣float Here, D expands to Tidid∗=(int∣float)id+.
Since both grammars generate strings composed of a type specifier followed by one or more identifiers, the languages P and Q are identical. Hence, (A) is true.
Attribute Classification of SDD2 (Option B):
In SDD2, the attributes evaluated are T.type (from terminals int/float) and D.type (from child D1 or child T).
Since every attribute is synthesized from the children in the parse tree, SDD2 contains only synthesized attributes and is an S-attributed SDD. Hence, (B) is true.
Attribute Classification of SDD1 (Option C):
In SDD1, D.type and T.type are synthesized attributes, while V.type is an inherited attribute (V.type=T.type).
SDD1 contains both synthesized and inherited attributes, so it does not contain *only* inherited attributes. Hence, (C) is false.
Symbol Table Entries (Option D):
In SDD1, the type synthesized at T is passed down via inherited attribute V.type to all identifiers, and put(id.entry, V.type) is invoked for each identifier.
In SDD2, the type is propagated up synthesized via D.type, and put(id.entry, D_1.type) or put(id.entry, T.type) is invoked for each identifier.
In both cases, each identifier declared in the statement is entered into the symbol table with its corresponding data type. Hence, (D) is true.
Thus, statements A, B, and D are correct.