From 4ed3b2ff0803379f81358a45d7434fb53240c0c5 Mon Sep 17 00:00:00 2001 From: Houtan Bastani <houtan@dynare.org> Date: Fri, 31 May 2019 14:44:52 +0200 Subject: [PATCH] doc: update slides for macro processor 2.0 --- doc/logos/cepremap.jpg | Bin 0 -> 25883 bytes doc/logos/dlogo.png | Bin 0 -> 37931 bytes doc/macroprocessor/macroprocessor.tex | 351 ++++++++++++++++++-------- 3 files changed, 243 insertions(+), 108 deletions(-) create mode 100644 doc/logos/cepremap.jpg create mode 100644 doc/logos/dlogo.png diff --git a/doc/logos/cepremap.jpg b/doc/logos/cepremap.jpg new file mode 100644 index 0000000000000000000000000000000000000000..172bb49e5ea4b54acf27b49eb94a1dfe952cd1c9 GIT binary patch literal 25883 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%0A(w<XVhVE2Yuz95cWinoXXMWl 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 P{_Kr!G8Q%1|Gx<UELlnx literal 0 HcmV?d00001 diff --git a/doc/logos/dlogo.png b/doc/logos/dlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..9595c03ad77b2c68dfb59aa82351458abf5d9a13 GIT binary patch literal 37931 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 literal 0 HcmV?d00001 diff --git a/doc/macroprocessor/macroprocessor.tex b/doc/macroprocessor/macroprocessor.tex index 8236bf20..76380441 100644 --- a/doc/macroprocessor/macroprocessor.tex +++ b/doc/macroprocessor/macroprocessor.tex @@ -7,12 +7,44 @@ \usetheme{Boadilla} +\titlegraphic{\includegraphics{../logos/dlogo.png}} + \title{The Dynare Macro Processor} -\subtitle{Dynare Summer School 2018} -\author{Sébastien Villemot and Houtan Bastani} -%\pgfdeclareimage[height=0.6cm]{logo}{logo-ofce} -\institute{CEPREMAP} -\date{July 9, 2018} + +\author[S. Villemot, H.Bastani]{Sébastien Villemot \and Houtan Bastani} + +\institute[CEPREMAP]{\includegraphics[scale=0.15]{../logos/cepremap.jpg}} + +\date{28 June 2019} + + +\setbeamertemplate{title page} +{ + \vbox{} + \begingroup + \centering + {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par}\vskip1em + \begin{beamercolorbox}[sep=8pt,center]{title} + \usebeamerfont{title}\inserttitle\par% + \ifx\insertsubtitle\@empty% + \else% + \vskip0.25em% + {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}% + \fi% + \end{beamercolorbox}% + \vskip1em\par + \begin{beamercolorbox}[sep=8pt,center]{author} + \usebeamerfont{author}\insertauthor + \end{beamercolorbox} + \begin{beamercolorbox}[sep=8pt,center]{institute} + \usebeamerfont{institute}\insertinstitute + \end{beamercolorbox} + \begin{beamercolorbox}[sep=8pt,center]{date} + \usebeamerfont{date}\insertdate + \end{beamercolorbox} + \endgroup + \vfill +} \AtBeginSection[] { @@ -26,6 +58,18 @@ \begin{frame} \titlepage + + \begin{columns}[T] + \column{0.2\textwidth} + \column{0.09\textwidth} + + \ccbysa + \column{0.71\textwidth} + \tiny + Copyright © 2008--2019 Dynare Team \\ + Licence: \href{http://creativecommons.org/licenses/by-sa/4.0/}{Creative + Commons Attribution-ShareAlike 4.0} + \end{columns} \end{frame} \begin{frame} @@ -38,37 +82,38 @@ \begin{frame} \frametitle{Motivation} \begin{itemize} - \item The \textbf{Dynare language} (used in MOD files) is well suited for many economic models - \item But it lacks some useful features such as: + \item The \textbf{Dynare language} (used in \texttt{.mod} files) is well suited for many economic models \begin{itemize} - \item a loop mechanism for automatically repeating similar blocks of equations (e.g. multi-country models) - \item an operator for indexed sums or products inside equations - \item a mechanism for splitting up large MOD files into smaller, modular files - \item the possibility of conditionally including some equations or some runtime commands - \end{itemize} - \item The \textbf{Dynare Macro-language} was specifically designed to address these issues - \item Being flexible and fairly general, it can also be helpful in other situations + \item It's a markup language that defines models + \item Lacks a programmatic element + \end{itemize} + \item The \textbf{Dynare macro language} adds a programmatic element to Dynare + \begin{itemize} + \item Introduces conditionals, loops, and other simple programmatic directives + \item Used to speed model development + \item Useful in various situations + \begin{itemize} + \item Multi-country models + \item Creation of modular \texttt{.mod} files + \item Variable flipping + \item Conditional inclusion of equations + \item ...among others + \end{itemize} + \end{itemize} \end{itemize} \end{frame} \begin{frame} - \frametitle{Design of the macro-language} + \frametitle{Design of the macro language} \begin{itemize} - \item The Dynare Macro-language provides a new set of \textbf{macro-commands} which can be used in MOD files - \item Language features include: - \begin{itemize} - \item file inclusion - \item loops (\textit{for} structure) - \item conditional inclusion (\textit{if/else} structures) - \item expression substitution - \end{itemize} - \item The macro processor transforms a MOD file with macro-commands into a MOD file without macro-commands (doing text expansions/inclusions) and then feeds it to the Dynare parser + \item The Dynare macro language provides a new set of \textbf{macro commands} that can be used in \texttt{.mod} files + \item The macro processor transforms a \texttt{.mod} file with macro commands into a \texttt{.mod} file without macro commands (doing text expansions/inclusions) and then feeds it to the Dynare parser \item The key point to understand is that the macro processor only does \textbf{text substitution} (like the C preprocessor or the PHP language) \end{itemize} \end{frame} \begin{frame} - \frametitle{Design of Dynare} + \frametitle{Dynare Flowchart} \includegraphics[width=0.95\linewidth]{new-design.pdf} \end{frame} @@ -77,8 +122,8 @@ \begin{frame}[fragile=singleslide] \frametitle{Macro Directives} \begin{itemize} - \item Directives begin with an at sign followed by a pound sign: \verb+@#+ - \item A directive produces no output but gives instructions to the macro processor + \item Directives begin with:\verb+@#+ + \item A directive gives instructions to the macro processor \item Main directives are: \begin{itemize} \item file inclusion: \verb+@#include+ @@ -95,64 +140,168 @@ \frametitle{Variables} \begin{itemize} \item The macro processor has its own list of variables which are different than model variables and MATLAB/Octave variables -\item There are 4 types of macro-variables: - \begin{itemize} - \item integer - \item string (declared between \textit{double} quotes) - \item integer array - \item string array - \end{itemize} -\item Macro-Functions are also supported +\item There are 6 types of macro-variables: \begin{itemize} - \item only accept string aruments - \item must evaluate to a string + \item boolean + \item double + \item string + \item tuple + \item array + \item function \end{itemize} -\item No boolean type: +\end{itemize} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Macro-expressions (1/8)} \begin{itemize} - \item false is represented by integer zero - \item true is any non-zero integer + \item Macro-expressions are constructed using literals of the 6 basic types + described above, macro-variables, comprehensions, and standard operators. + \item Macro-expressions can be used in two places: + \begin{itemize} + \item inside macro directives; no special markup is required + \item in the body of the \texttt{.mod} file, between an at sign and curly braces (like \verb+@{expr}+); the macro processor will substitute the expression with its value + \end{itemize} \end{itemize} -\end{itemize} \end{frame} + \begin{frame}[fragile=singleslide] - \frametitle{Macro-expressions (1/2)} + \frametitle{Macro-expressions (2/8): Boolean} It is possible to construct macro-expressions using standard operators. - \begin{block}{Operators on integers} + \begin{block}{Operators on booleans} \begin{itemize} - \item arithmetic operators: \texttt{+ - * /} + \item comparison operators: \texttt{== !=} + \item logical operators: \verb+&& || !+ + \end{itemize} + \end{block} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Macro-expressions (3/8): Double} + \begin{block}{Operators on doubles} + \begin{itemize} + \item arithmetic operators: \texttt{+ - * / \^{}} \item comparison operators: \texttt{< > <= >= == !=} \item logical operators: \verb+&& || !+ - \item integer ranges: \texttt{1:4} is equivalent to integer array \texttt{[1,2,3,4]} + \item integer ranges: \texttt{1:4} is equivalent to integer array \texttt{[1,2,3,4]}. NB \texttt{[1:4]} is equivalent to an array containing one integer array \texttt{[[1,2,3,4]]} \end{itemize} \end{block} + \begin{block}{Functions for doubles} + \begin{itemize} + \item \texttt{min, max, exp, ln (or log), log10} + \item \texttt{sin, cos, tan, asin, acos, atan} + \item \texttt{sqrt, cbrt, sign, floor, ceil, trunc, mod} + \item \texttt{erf, erfc, normpdf, normcdf, gamma, lgamma, round} + \end{itemize} + \end{block} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Macro-expressions (4/8): String} + String literals have to be declared between \textit{double} quotes, e.g. \texttt{``string''} \begin{block}{Operators on character strings} \begin{itemize} - \item comparison operators: \texttt{== !=} + \item comparison operators: \texttt{< > <= >= == !=} \item concatenation: \texttt{+} + \item string length: \texttt{length()} \item extraction of substrings: if \texttt{s} is a string, then one can write \texttt{s[3]} or \texttt{s[4:6]} \end{itemize} \end{block} \end{frame} \begin{frame}[fragile=singleslide] - \frametitle{Macro-expressions (2/2)} + \frametitle{Macro-expressions (5/8): Tuple} + Tuples are enclosed by parenthesis and elements separated by commas (like + \texttt{(a,b,c)} or \texttt{(1,2.2,c)}). + \begin{block}{Operators on tuples} + \begin{itemize} + \item comparison operators: \texttt{== !=} + \item functions: \texttt{length, empty} + \item testing membership in tuple: \texttt{in} operator \\ (example: + \texttt{"b" in ("a", "b", "c")} returns \texttt{1}) + \end{itemize} + \end{block} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Macro-expressions (6/8): Array} + Arrays are enclosed by brackets, and their elements are separated by commas + (like \texttt{[1,[2,3],4]} or \texttt{[``US'', ``EA'']}). \begin{block}{Operators on arrays} \begin{itemize} + \item comparison operators: \texttt{== !=} \item dereferencing: if \texttt{v} is an array, then \texttt{v[2]} is its $2^{\textrm{nd}}$ element \item concatenation: \texttt{+} + \item functions: \texttt{sum, length, empty} \item difference \texttt{-}: returns the first operand from which the elements of the second operand have been removed + \item Cartesian product of two arrays: \texttt{*} + \item Cartesian product of one array \texttt{N} times: \texttt{\^{}N} \item extraction of sub-arrays: \textit{e.g.} \texttt{v[4:6]} \item testing membership of an array: \texttt{in} operator \\ (example: \texttt{"b" in ["a", "b", "c"]} returns \texttt{1}) \end{itemize} \end{block} +\end{frame} - Macro-expressions can be used in two places: +\begin{frame}[fragile=singleslide] + \frametitle{Macro-expressions (7/8): Comprehension (1/3)} + Comprehensions are a shorthand way of creating arrays from other arrays. This is done by filtering, mapping, or filtering and mapping + \begin{block}{Filtering} + \begin{itemize} + \item Allows one to choose those elements from an array for which a condition holds + \item Syntax: \texttt{[variable/tuple IN array WHEN condition]} + \item Example: Choose even numbers from array + \begin{itemize} + \item Code: \texttt{@\{[ i in 1:5 when mod(i,2) == 0 ]\}} + \item Result: \texttt{[2, 4]} + \end{itemize} + \end{itemize} + \end{block} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Macro-expressions (7/8): Comprehension (2/3)} + \begin{block}{Mapping} + \begin{itemize} + \item Allows one to apply a transformation to every element of an array + \item Syntax: \texttt{[expr for variable/tuple IN array]} + \item Example: Square elements in array + \begin{itemize} + \item Code: \texttt{@\{[ i\^{}2 for i in 1:5 ]\}} + \item Result: \texttt{[1, 4, 9, 16, 25]} + \end{itemize} + \item Example: Reverse order of elements in array + \begin{itemize} + \item Code: \texttt{@\{[ (j,i) for (i,j) in (1:2)\^{}2 ]\}} + \item Result: \texttt{[(1, 1), (2, 1), (1, 2), (2, 2)]} + \end{itemize} + \end{itemize} + \end{block} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Macro-expressions (7/8): Comprehension (3/3)} + \begin{block}{Mapping and Filtering} + \begin{itemize} + \item Allows one to apply a transformation to the elements selected from an array + \item Syntax: \texttt{[expr for variable/tuple IN array WHEN condition]} + \item Example: Square odd numbers from array + \begin{itemize} + \item Code: \texttt{@\{[ i\^{}2 for i in 1:5 when mod(i,2) == 1 ]\}} + \item Result: \texttt{[1, 9, 25]} + \end{itemize} + \end{itemize} + \end{block} +\end{frame} + +\begin{frame}[fragile=singleslide] + \frametitle{Macro-expressions (8/8): Functions} \begin{itemize} - \item inside macro directives; no special markup is required - \item in the body of the MOD file, between an at sign and curly braces (like \verb+@{expr}+); the macro processor will substitute the expression with its value + \item Can take any number of arguments + \item Dynamic binding: is evaluated when invoked, not when defined + \item Can be included in expressions; valid operators depend on return type \end{itemize} \end{frame} @@ -162,50 +311,50 @@ The value of a macro-variable can be defined with the \verb+@#define+ directive. \begin{block}{Syntax} - \verb+@#define +\textit{variable\_name}\verb+ = +\textit{expression}\\ - \verb+@#define +\textit{function\_name}(\textit{arg1}, [\textit{arg2}, ...])\verb+ = +\textit{string\_expression} + \verb+@#define +\textit{variable\_name}\verb+ = +\textit{expression} \end{block} \begin{block}{Examples} \begin{verbatim} -@#define x = 5 // Integer -@#define y = "US" // String -@#define v = [ 1, 2, 4 ] // Integer array -@#define w = [ "US", "EA" ] // String array -@#define z = 3 + v[2] // Equals 5 -@#define t = ("US" in w) // Equals 1 (true) -@#define s = "@{y}" // Equals "US" -@#define f(x) = " + @{x} + @{y}" // A function "f(x)" equal - // to " + @{x} + US" +@#define x = 5 // Integer +@#define y = "US" // String +@#define v = [ 1, 2, 4 ] // Integer array +@#define w = [ "US", "EA" ] // String array +@#define z = 3 + v[2] // Equals 5 +@#define t = ("US" in w) // Equals 1 (true) +@#define f(x) = " " + x + y // Function f with argument x \end{verbatim} \end{block} + NB: You can define macro variables on the dynare command line by using the \texttt{-D} option \end{frame} \begin{frame}[fragile=singleslide] \frametitle{Expression substitution} \framesubtitle{Dummy example} - \begin{block}{Before macro-processing} + \begin{block}{Before macro processing} \begin{verbatim} -@#define x = [ "B", "C" ] +@#define x = 1 +@#define y = [ "B", "C" ] @#define i = 2 -@#define f(x) = " + @{x}" +@#define f(x) = x + " + " + y[i] +@#define i = 1 model; - A = @{x[i] + f("D")}; + A = @{y[i] + f("D")}; end; \end{verbatim} \end{block} - \begin{block}{After macro-processing} + \begin{block}{After macro processing} \begin{verbatim} model; - A = C + D; + A = BD + B; end; \end{verbatim} \end{block} \end{frame} \begin{frame}[fragile=singleslide] - \frametitle{Inclusion directive (1/2)} + \frametitle{Include directive (1/2)} \begin{itemize} \item This directive simply inserts the text of another file in its place \begin{block}{Syntax} @@ -223,7 +372,7 @@ end; \end{frame} \begin{frame}[fragile=singleslide] - \frametitle{Inclusion directive (2/2)} + \frametitle{Include directive (2/2)} \begin{itemize} \item The filename can be given by a macro-variable (useful in loops): \begin{block}{Example with variable} @@ -232,9 +381,9 @@ end; @#include fname \end{verbatim} \end{block} - \item Files to include are searched for in current directory. Other directories can - be added with - \texttt{@includepath} directive, \texttt{-I} command line option or + \item Files to include are searched for in the current directory. Other directories can + be added with the + \verb+@#includepath+ directive, the \texttt{-I} command line option, or the \texttt{[paths]} section in config file. \end{itemize} \end{frame} @@ -246,7 +395,7 @@ end; \verb+ +\textit{loop\_body} \\ \verb+@#endfor+ \end{block} - \begin{block}{Example: before macro-processing} + \begin{block}{Example: before macro processing} \small \begin{verbatim} model; @@ -258,7 +407,7 @@ end; \normalsize \end{block} - \begin{block}{Example: after macro-processing} + \begin{block}{Example: after macro processing} \small \begin{verbatim} model; @@ -271,7 +420,7 @@ end; \end{frame} \begin{frame}[fragile=singleslide] - \frametitle{Conditional inclusion directives (1/2)} + \frametitle{Conditional directives (1/2)} \begin{columns}[T] \column{0.47\linewidth} @@ -310,7 +459,7 @@ end; \end{frame} \begin{frame}[fragile=singleslide] - \frametitle{Conditional inclusion directives (2/2)} + \frametitle{Conditional directives (2/2)} \begin{columns}[T] \column{0.47\linewidth} @@ -341,12 +490,14 @@ There is also \verb+@#ifndef+, which is the opposite of \verb+@#ifdef+ \begin{itemize} \item The echo directive will simply display a message on standard output - \item The error directive will display the message and make Dynare stop (only makes sense inside a conditional inclusion directive) + \item The error directive will display the message and make Dynare stop (only makes sense inside a conditional directive) + \item The echomacrovars directive will display all of the macro variables and their values \end{itemize} \begin{block}{Syntax} \verb+@#echo +\textit{string\_expr} \\ -\verb+@#error +\textit{string\_expr} +\verb+@#error +\textit{string\_expr} \\ +\verb+@#echomacrovars + \end{block} \begin{block}{Examples} @@ -358,14 +509,12 @@ There is also \verb+@#ifndef+, which is the opposite of \verb+@#ifdef+ \end{frame} \begin{frame} - \frametitle{Saving the macro-expanded MOD file} + \frametitle{Macro-related command line options} \begin{itemize} - \item For \textbf{debugging or learning} purposes, it is possible to save the output of the macro processor - \item This output is a valid MOD file, obtained after processing the macro-commands of the original MOD file - \item Just add the \texttt{savemacro} option on the Dynare command line (after the name of your MOD file) - \item If MOD file is \texttt{filename.mod}, then the macro-expanded version will be saved in \texttt{filename-macroexp.mod} - \item You can specify the filename for the macro-expanded version with the syntax \texttt{savemacro=mymacroexp.mod} - \item To end processing when macro processing is finished, add the option \texttt{onlymacro} to the Dynare command line + \item \texttt{savemacro}: Useful for debugging or learning purposes, saves the output of the macro processor. If your \texttt{.mod} file is called \texttt{file.mod}, the output is saved to \texttt{file-macroexp.mod}. + \item \texttt{nolinemacro}: In the output of \texttt{savemacro}, don't print line numbers where the macro directives were placed. + \item \texttt{noemptylinemacro}: Remove empty lines in the output of \texttt{savemacro}. + \item \texttt{onlymacro}: Stops processing after the macro processing step. \end{itemize} \end{frame} @@ -374,7 +523,7 @@ There is also \verb+@#ifndef+, which is the opposite of \verb+@#ifdef+ \begin{frame}[fragile=singleslide] \frametitle{Modularization} \begin{itemize} - \item The \verb+@#include+ directive can be used to split MOD files into several modular components + \item The \verb+@#include+ directive can be used to split \texttt{.mod} files into several modular components \item Example setup: \begin{description} \item[\texttt{modeldesc.mod}:] contains variable declarations, model equations and shocks declarations @@ -392,7 +541,7 @@ There is also \verb+@#ifndef+, which is the opposite of \verb+@#ifdef+ \framesubtitle{Example: moving average} \begin{columns}[T] \column{0.47\linewidth} - \begin{block}{Before macro-processing} + \begin{block}{Before macro processing} \begin{verbatim} @#define window = 2 @@ -400,7 +549,7 @@ var x MA_x; ... model; ... -MA_x = 1/@{2*window+1}*( +MA_x = @{1/(2*window+1)}*( @#for i in -window:window +x(@{i}) @#endfor @@ -410,7 +559,7 @@ end; \end{verbatim} \end{block} \column{0.47\linewidth} - \begin{block}{After macro-processing} + \begin{block}{After macro processing} \begin{verbatim} var x MA_x; ... @@ -432,7 +581,7 @@ end; \begin{frame}[fragile=singleslide] \frametitle{Multi-country models} - \framesubtitle{MOD file skeleton example} + \framesubtitle{\texttt{.mod} file skeleton example} \scriptsize \begin{verbatim} @#define countries = [ "US", "EA", "AS", "JP", "RC" ] @@ -462,7 +611,7 @@ end; \begin{frame} \frametitle{Endogeneizing parameters (1/4)} \begin{itemize} - \item When doing the steady-state calibration of the model, it may be useful to consider a parameter as an endogenous (and vice-versa) + \item When calibrating the model it may be useful to consider a parameter as an endogenous (and vice-versa) \item Example: \begin{gather*} y = \left(\alpha^{\frac{1}{\xi}} \ell^{1-\frac{1}{\xi}} + (1-\alpha)^{\frac{1}{\xi}}k^{1-\frac{1}{\xi}}\right)^{\frac{\xi}{\xi - 1}} \\ @@ -554,7 +703,6 @@ end \begin{itemize} \item The loop is not unrolled \item MATLAB/Octave manages the iterations - \item Interesting when there are a lot of iterations \end{itemize} \end{frame} @@ -580,17 +728,15 @@ rhos = [ 0.8, 0.9, 1]; \frametitle{MATLAB/Octave loops vs macro processor loops (3/3)} \begin{block}{With a macro processor loop (case 2)} \begin{verbatim} -@#for rho_val in [ "0.8", "0.9", "1"] +@#for rho_val in [ 0.8, 0.9, 1] rho = @{rho_val}; stoch_simul(order=1); @#endfor \end{verbatim} \end{block} \begin{itemize} - \item Advantage: shorter syntax, since list of values directly given in the loop construct - \item Note that values are given as character strings (the macro processor does not - know floating point values) - \item Inconvenient: can not reuse an array stored in a MATLAB/Octave variable + \item Shorter syntax, since list of values directly given in the loop construct + \item NB: Array not stored as MATLAB/Octave variable, hence cannot be used in MATLAB/Octave \end{itemize} \end{frame} @@ -613,17 +759,6 @@ rhos = [ 0.8, 0.9, 1]; \vfill \end{center} \vfill - \begin{columns}[T] - \column{0.2\textwidth} - \column{0.09\textwidth} - - \ccbysa - \column{0.71\textwidth} - \tiny - Copyright © 2008--2017 Dynare Team \\ - Licence: \href{http://creativecommons.org/licenses/by-sa/4.0/}{Creative - Commons Attribution-ShareAlike 4.0} - \end{columns} \end{frame} -- GitLab