\documentclass{beamer} %include lhs2TeX.fmt \author{Piyush P Kurur\\ Office no: 224\\ Dept. of Comp. Sci. and Engg.\\ IIT Kanpur} \newcommand{\Token}[2][]{\node(#2#1)[token]{#2};} \newcommand{\Symbol}[2][]{\node(#2#1)[symbol]{#2};} \newcommand{\Point}[1]{\node(#1)[point]{#1};} \usepackage{tikz} \usetikzlibrary{positioning,shapes,chains,fit} \usetikzlibrary{shapes.symbols} \usetikzlibrary{matrix} \usetikzlibrary{backgrounds} \usetikzlibrary{shapes.geometric} \usepackage{multicol} \usepackage{algorithm2e} \usepackage{pgfkeys} %% \newcommand{\SingleLinkedList}[1]{ %% \foreach \datum/\anchor in {#1} %% \begin{scope} %% \node[rectangle, fill=yellow!30]{#2}; %% \node[rectangle, below, fill=green!30](#1){$\cdot$}; %% \end{scope} %% } %% \newcommand{\Null}{ %% \node[circle, fill=black, minimum size=1em]{}; %% } \pgfkeys {% /tikz/redbox/.style={% shape=rectangle,% minimum size=1.5em,% top color = white, % bottom color=red!50!black!50, inner sep=0pt, draw=black }, /tikz/null/.style={% shape=circle, minimum size=0.5em, draw=black, }, /tikz/greybox/.style={ shape=rectangle,% minimum width=7em,% minimum height=1.5em, fill=black!20, inner sep=0pt, draw=black }, /tikz/blackbox/.style={ shape=rectangle,% minimum width=7em,% minimum height=1.5em, fill=black, inner sep=0pt, draw=black }, /tikz/whitebox/.style={ shape=rectangle, minimum width=7em, minimum height=1.5em, draw=black }, /tikz/bluebox/.style={ shape=rectangle, minimum width=7em, minimum height=1.5em, fill=blue!40, draw=black }, /tikz/whitetape/.style={ shape=rectangle, minimum width=4em, minimum height=1.5em, draw=black }, /tikz/bluearr/.style={ ->, line width=0.25em, draw=blue!40 }, /tikz/greenarr/.style={ ->, line width=0.25em, draw=green!40!black!60 } } \newcommand{\arraythree}[4]{ \begin{tikzpicture}[node distance=0] \pgfsetstrokeopacity{#4}; \node[#1](a0#3){#2}; \node[#1, right=of a0#3](a1#3){#2}; \node[#1, right=of a1#3](a1#3){#2}; \end{tikzpicture} } \newcommand{\arraytwo}[4]{ \begin{tikzpicture}[node distance=0] \pgfsetstrokeopacity{#4}; \node[#1](a0#3){#2}; \node[#1,right=of a0#3]{#2}; \end{tikzpicture} } \newcommand{\Array}[0]{ \arraythree{box}{}{a}{1} } \newcommand{\AArray}[0]{% \arraythree{bbox}{\Array}{b}{0.5}} \newcommand{\AAArray}[0]{% \arraytwo{bbbox}{\AArray}{c}{0.25}} \newcommand{\T}[1]{\ensuremath{T\left(#1\right)}} \newcommand{\BigOh}[1]{\ensuremath{O\left(#1\right)}} \title{Fundamentals of Computing: Lecture 33} \date{October 30, 2009} \begin{document} \begin{frame} \maketitle \end{frame} \begin{frame} \frametitle{Summary of the last class} \begin{itemize} \pause \item The |static| key word. \pause \item The |extern| key word \end{itemize} \end{frame} \begin{frame} \frametitle{Reverse polish calculator} \pause A calculator where the operators are given in postfix notation \pause The expression (2 + 3) * 5 is given by 2 3 + 5 * \pause In the reverse polish notation there is no need to provide any bracket \pause Proof ? \pause Our goal is to write a program for reverse polish notation. \end{frame} \begin{frame} \frametitle{The stack data structure} \pause A stack is a last in first out data structure. \pause It supports two operations \begin{itemize} \pause \item |push(x)| : `pushes' the value |x| on top of the stack. \pause \item |pop()| : `pops' the top of the stack. \end{itemize} \end{frame} \begin{frame} \frametitle{Evaluating a RPN expression using stack} \pause \begin{itemize} \pause \item As you get numbers, keep pushing it. \pause \item Whenever you get an operator, pop its operand(s), perform the operation and push the result back. \end{itemize} \end{frame} \begin{frame} \frametitle{Lexical analysis} Splitting up the input into ``tokens''. \pause \begin{itemize} \pause \item Number \pause \item operators |'+'| |'-'| |'*'| and |'/'| \pause \item |p| for popping the stack and \pause \item |P| for emptying the stack \end{itemize} \end{frame} \begin{frame} \frametitle{Organisation of the code} \begin{itemize} \item |stack.c| is the code for stack manipulation. \item |lex.c| performes a lexical analysis. \item |calc.c| is the main program. \end{itemize} \end{frame} \end{document}