hws/hw05.tex
author Christian Urban <christian.urban@kcl.ac.uk>
Fri, 03 Dec 2021 17:45:11 +0000
changeset 853 568671822d52
parent 619 136517d67d40
child 937 dc5ab66b11cc
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
93
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     1
\documentclass{article}
292
7ed2a25dd115 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 267
diff changeset
     2
\usepackage{../style}
7ed2a25dd115 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 267
diff changeset
     3
\usepackage{../graphics}
527
2a62f0845f98 updated
cu
parents: 444
diff changeset
     4
\usepackage{../grammar}
93
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     5
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     6
\begin{document}
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     7
267
a1544b804d1e updated homeworks
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 147
diff changeset
     8
% explain what is a context-free grammar and the language it generates 
a1544b804d1e updated homeworks
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 147
diff changeset
     9
%
a1544b804d1e updated homeworks
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 147
diff changeset
    10
a1544b804d1e updated homeworks
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 147
diff changeset
    11
93
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    12
\section*{Homework 5}
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    13
359
db106e5b7c4d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 322
diff changeset
    14
\HEADER
db106e5b7c4d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 322
diff changeset
    15
db106e5b7c4d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 322
diff changeset
    16
93
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    17
\begin{enumerate}
294
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    18
\item Consider the basic regular expressions
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    19
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    20
\begin{center}
401
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    21
$r ::= \ZERO \;|\; \ONE \;|\; c  \;|\; r_1 + r_2  \;|\; r_1 \cdot r_2 \;|\; r^*$
294
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    22
\end{center}
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    23
401
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    24
      and suppose you want to show a property $P(r)$ for all
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    25
      regular expressions $r$ by structural induction. Write
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    26
      down which cases do you need to analyse. State clearly
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    27
      the induction hypotheses if applicable in a case.
294
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    28
401
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    29
\item Define a regular expression, written $ALL$, that can
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    30
      match every string. This definition should be in terms
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    31
      of the following extended regular expressions:
294
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    32
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    33
\begin{center}
401
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    34
$r ::= \ZERO \;|\; 
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    35
       \ONE \;|\;  
294
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    36
       c  \;|\; 
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    37
       r_1 + r_2 \;|\; 
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    38
       r_1 \cdot r_2 \;|\; 
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    39
       r^* \;|\;
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    40
       \sim r$
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    41
\end{center}
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    42
322
698ed1c96cd0 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 294
diff changeset
    43
%\item Assume the delimiters for comments are \texttt{$\slash$*}
698ed1c96cd0 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 294
diff changeset
    44
%and \texttt{*$\slash$}. Give a regular expression that can
698ed1c96cd0 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 294
diff changeset
    45
%recognise comments of the form
698ed1c96cd0 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 294
diff changeset
    46
%
698ed1c96cd0 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 294
diff changeset
    47
%\begin{center}
698ed1c96cd0 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 294
diff changeset
    48
%\texttt{$\slash$*~\ldots{}~*$\slash$} 
698ed1c96cd0 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 294
diff changeset
    49
%\end{center}
698ed1c96cd0 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 294
diff changeset
    50
%
698ed1c96cd0 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 294
diff changeset
    51
%where the three dots stand for arbitrary characters, but not
698ed1c96cd0 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 294
diff changeset
    52
%comment delimiters.
294
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    53
93
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    54
\item Define the following regular expressions 
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    55
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    56
\begin{center}
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    57
\begin{tabular}{ll}
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    58
$r^+$ & (one or more matches)\\
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    59
$r^?$   & (zero or one match)\\
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    60
$r^{\{n\}}$ & (exactly $n$ matches)\\
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    61
$r^{\{m, n\}}$ & (at least $m$ and maximal $n$ matches, with the\\
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    62
&  \phantom{(}assumption $m \le n$)\\
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    63
\end{tabular}
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    64
\end{center}
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    65
294
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    66
in terms of the usual basic regular expressions
93
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    67
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    68
\begin{center}
401
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    69
$r ::= \ZERO \;|\; \ONE \;|\; c  \;|\; r_1 + r_2  \;|\; r_1 \cdot r_2 \;|\; r^*$
93
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    70
\end{center}
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    71
294
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    72
\item Give the regular expressions for lexing a language
401
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    73
      consisting of identifiers, left-parenthesis \texttt{(},
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    74
      right-parenthesis \texttt{)}, numbers that can be either
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    75
      positive or negative, and the operations \texttt{+},
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    76
      \texttt{-} and \texttt{*}. 
93
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    77
401
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    78
      Decide whether the following strings can be lexed in
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
    79
      this language?
147
4725bba8ef26 added slides
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 102
diff changeset
    80
294
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    81
\begin{enumerate}
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    82
\item \texttt{"(a3+3)*b"}
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    83
\item \texttt{")()++-33"}
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    84
\item \texttt{"(b42/3)*3"}
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    85
\end{enumerate}
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    86
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    87
In case they can, give the corresponding token sequences. (Hint: 
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    88
Observe the maximal munch rule and the priorities of your regular
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    89
expressions that make the process of lexing unambiguous.)
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
    90
602
9aa901039e33 updated
Christian Urban <urbanc@in.tum.de>
parents: 527
diff changeset
    91
\item Suppose the following context-free grammar $G$
527
2a62f0845f98 updated
cu
parents: 444
diff changeset
    92
  
2a62f0845f98 updated
cu
parents: 444
diff changeset
    93
\begin{plstx}[margin=1cm]
2a62f0845f98 updated
cu
parents: 444
diff changeset
    94
  : \meta{S\/} ::= \meta{A\/}\cdot\meta{S\/}\cdot\meta{B\/} \;\mid\;
2a62f0845f98 updated
cu
parents: 444
diff changeset
    95
                   \meta{B\/}\cdot\meta{S\/}\cdot\meta{A\/} \;\mid\; \epsilon\\
2a62f0845f98 updated
cu
parents: 444
diff changeset
    96
  : \meta{A\/} ::= a \mid \epsilon\\
2a62f0845f98 updated
cu
parents: 444
diff changeset
    97
  : \meta{B\/} ::= b\\
2a62f0845f98 updated
cu
parents: 444
diff changeset
    98
\end{plstx}
2a62f0845f98 updated
cu
parents: 444
diff changeset
    99
602
9aa901039e33 updated
Christian Urban <urbanc@in.tum.de>
parents: 527
diff changeset
   100
where the starting symbol is $\meta{S}$.
9aa901039e33 updated
Christian Urban <urbanc@in.tum.de>
parents: 527
diff changeset
   101
Which of the following strings are in the language of $G$?
527
2a62f0845f98 updated
cu
parents: 444
diff changeset
   102
2a62f0845f98 updated
cu
parents: 444
diff changeset
   103
\begin{itemize}
2a62f0845f98 updated
cu
parents: 444
diff changeset
   104
\item[$\bullet$] $a$
2a62f0845f98 updated
cu
parents: 444
diff changeset
   105
\item[$\bullet$] $b$
2a62f0845f98 updated
cu
parents: 444
diff changeset
   106
\item[$\bullet$] $ab$
2a62f0845f98 updated
cu
parents: 444
diff changeset
   107
\item[$\bullet$] $ba$
2a62f0845f98 updated
cu
parents: 444
diff changeset
   108
\item[$\bullet$] $bb$
2a62f0845f98 updated
cu
parents: 444
diff changeset
   109
\item[$\bullet$] $baa$
619
136517d67d40 updated
Christian Urban <urbanc@in.tum.de>
parents: 602
diff changeset
   110
\end{itemize}
136517d67d40 updated
Christian Urban <urbanc@in.tum.de>
parents: 602
diff changeset
   111
136517d67d40 updated
Christian Urban <urbanc@in.tum.de>
parents: 602
diff changeset
   112
\item Suppose the following context-free grammar 
136517d67d40 updated
Christian Urban <urbanc@in.tum.de>
parents: 602
diff changeset
   113
  
136517d67d40 updated
Christian Urban <urbanc@in.tum.de>
parents: 602
diff changeset
   114
  \begin{plstx}[margin=1cm]
136517d67d40 updated
Christian Urban <urbanc@in.tum.de>
parents: 602
diff changeset
   115
  : \meta{S\/} ::= a\cdot \meta{S\/}\cdot a\;\mid\;
136517d67d40 updated
Christian Urban <urbanc@in.tum.de>
parents: 602
diff changeset
   116
                   b\cdot \meta{S\/}\cdot b\;\mid\; \epsilon\\
136517d67d40 updated
Christian Urban <urbanc@in.tum.de>
parents: 602
diff changeset
   117
  \end{plstx}
136517d67d40 updated
Christian Urban <urbanc@in.tum.de>
parents: 602
diff changeset
   118
136517d67d40 updated
Christian Urban <urbanc@in.tum.de>
parents: 602
diff changeset
   119
Describe which language is generated by this grammar.
136517d67d40 updated
Christian Urban <urbanc@in.tum.de>
parents: 602
diff changeset
   120
  
527
2a62f0845f98 updated
cu
parents: 444
diff changeset
   121
2a62f0845f98 updated
cu
parents: 444
diff changeset
   122
444
3056a4c071b0 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 401
diff changeset
   123
\item {\bf(Optional)} Recall the definitions for $Der$ and $der$
401
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
   124
      from the lectures. Prove by induction on $r$ the
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
   125
      property that 
147
4725bba8ef26 added slides
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 102
diff changeset
   126
4725bba8ef26 added slides
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 102
diff changeset
   127
\[
4725bba8ef26 added slides
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 102
diff changeset
   128
L(der\,c\,r) = Der\,c\,(L(r))
4725bba8ef26 added slides
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 102
diff changeset
   129
\]
4725bba8ef26 added slides
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 102
diff changeset
   130
401
5d85dc9779b1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 359
diff changeset
   131
      holds.
294
c29853b672fb updated hws
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 292
diff changeset
   132
444
3056a4c071b0 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 401
diff changeset
   133
\item \POSTSCRIPT        
93
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   134
\end{enumerate}
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   135
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   136
\end{document}
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   137
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   138
%%% Local Variables: 
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   139
%%% mode: latex
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   140
%%% TeX-master: t
4794759139ea better organised
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   141
%%% End: