False - answers✔✔Regular expressions are used to describe the syntactic structure of a language, while
context-free grammars are used to describe its lexical structure.
False - answers✔✔There's a one-to-one correspondence between instructions in assembly language and
instructions in a high-level language.
False - answers✔✔In C, the variable x that appears in void f() {int x;...} is allocated statically.
True - answers✔✔Scheme belongs to the class of declarative programming languages.
True - answers✔✔Subroutine closures are used in languages with deep binding.
True - answers✔✔Every case statement can also be written as one or more if...then....else statements.
False - answers✔✔It is possible to do type checking at compile time in a language with dynamic scoping.
False - answers✔✔Every logically-controlled loop can also be written as an enumeration-controlled
loop.
Kleene closure (the *) - answers✔✔Which mechanism does NOT appear explicitly in context-free
grammars?
Declarative languages describe what to do; imperative languages describe how to do it. -
answers✔✔What best characterizes the difference between declarative and imperative programming
languages?
A variable name that begins w a digit - answers✔✔What is a lexical (as opposed to syntactic or
semantic) error in C?
, They produce faster code, since tail-recursive calls may reuse the same space on the stack, and hence
don't involve push and pop operations. - answers✔✔Why are tail-recursive functions useful?
G -> decl decl_list;
decl_list -> , ID decl_list | epsilon
decl -> type ID
type -> int | float - answers✔✔Write a context-free grammar that describes simple var declarations in C
syntax, consisting of a type (int or float) followed by a list of identifiers separated by commas, followed
by a terminating semicolon such as: int x, y, z; You don't need to describe the identifiers, consider them
given by the scanner as ID.
(aa)*a - answers✔✔Write a regular expression that describes the set of strings consisting of an odd
number of a's, over alphabet {a}.
Internal fragmentation is represented by a request for allocation that is smaller than the block available,
therefore creating gaps/wasted space. External fragmentation is when there's a lot of open space but
it's all fragmented so that there's no continuous space large enough to satisfy the request. -
answers✔✔What are internal and external fragmentation?
E-> T-> T*F
T-> F -> (E)
E -> E+T
E -> T -> F -> identifier -> a
T -> F -> identifier -> b
F -> number -> 3
*show each step separately tho - answers✔✔E -> E+T | E-T | T
T -> T*F | T//F | F
F -> identifier | number | -F | (E)
Using this grammar, show leftmost derivation for string (a+b)*3.