diff -r 0b5f06539a84 -r dc5ab66b11cc hws/hw05.tex --- a/hws/hw05.tex Mon Oct 02 23:10:56 2023 +0100 +++ b/hws/hw05.tex Tue Oct 03 14:29:12 2023 +0100 @@ -118,7 +118,30 @@ Describe which language is generated by this grammar. +\item Remember we have specified identifiers with regular expressions as + strings that start with a letter followed by letters, digits and + underscores. This can also be specified by a grammar rule or rules. + What would the rule(s) look like for identifiers? + \solution{ + \begin{plstx}[margin=1cm] + : \meta{Id\/} ::= \meta{Let\/}\cdot \meta{R}\\ + : \meta{Let\/} ::= a \;\mid\; \dots \;\mid\; z\\ + : \meta{Dig\/} ::= 0 \;\mid\; \dots \;\mid\; 9\\ + : \meta{R\/} ::= \meta{Let\/} \cdot \meta{R\/} \;\mid\; + \meta{Dig\/} \cdot \meta{R\/} \;\mid\; + $\_$ \cdot \meta{R\/} \;\mid\; \epsilon\\ + \end{plstx} +} + +\item If we specify keywords, identifiers (see above) and programs + by grammar rules, are there any problems you need to be careful + about when using a parser for identifying tokens? + + \solution{Parsers do not have the POSIX rules (e.g.~longest munch + rule) built in. I am not aware that any parser does this out of + the box and you would need to build in such constraints into the + grammar rules or parsing mechanism.} \item {\bf(Optional)} Recall the definitions for $Der$ and $der$ from the lectures. Prove by induction on $r$ the