Consider the following grammar for a declaration list: decl_list → decl ; decl_list | decl → specifier type name_list specifier → const | static | type → double | int name_list → name | name , name_list name → id args args → ( decl_list ) | (a) Indicate whether each of the following strings belongs to the language described by the grammar. int a (int b); int c (int d (int e;);); double f, g (static int h;); static int i; const double j; (b) Show a leftmost derivation of the string static int f(); under this grammar. (c) Rewrite the grammar so that arguments are separated by commas (similar to the function arguments in C). For instance, each of the following should be a valid string under the new grammar: int f (); int f (double x); int f (double x, int y
Consider the following grammar for a declaration list:
decl_list → decl ; decl_list |
decl → specifier type name_list
specifier → const | static |
type → double | int
name_list → name | name , name_list
name → id args
args → ( decl_list ) |
(a) Indicate whether each of the following strings belongs to the language
described by the grammar.
int a (int b);
int c (int d (int e;););
double f, g (static int h;);
static int i; const double j;
(b) Show a leftmost derivation of the string static int f(); under this grammar.
(c) Rewrite the grammar so that arguments are separated by commas (similar to the function arguments in C). For instance, each of the following should be a valid string under the new grammar:
int f ();
int f (double x);
int f (double x, int y);
Trending now
This is a popular solution!
Step by step
Solved in 2 steps with 5 images