diff --git a/preprocessor/CodeInterpreter.hh b/preprocessor/CodeInterpreter.hh
index d39567b83ad8bd7c09f119c46ebe1941d26d7806..b95908f52c3b1c336c453f81dd9e748096076367 100644
--- a/preprocessor/CodeInterpreter.hh
+++ b/preprocessor/CodeInterpreter.hh
@@ -246,7 +246,8 @@ enum PriorDistributions
     eInvGamma1 = 4,
     eUniform = 5,
     eInvGamma2 = 6,
-    eDirichlet = 7
+    eDirichlet = 7,
+    eWeibull = 8
   };
 
 struct Block_contain_type
diff --git a/preprocessor/ComputingTasks.cc b/preprocessor/ComputingTasks.cc
index e22f157725a7e3c1a93a0c9d5cca4b36e0cec1f9..f518f50cdccd907a4c596a80ef102389f8031301 100644
--- a/preprocessor/ComputingTasks.cc
+++ b/preprocessor/ComputingTasks.cc
@@ -2221,6 +2221,9 @@ BasicPriorStatement::writeCShape(ostream &output) const
     case eDirichlet:
       output  << "\"dirichlet\";" << endl;
       break;
+    case eWeibull:
+      output  << "\"weibull\";" << endl;
+      break;
     case eNoShape:
       assert(prior_shape != eNoShape);
     }
diff --git a/preprocessor/DynareBison.yy b/preprocessor/DynareBison.yy
index a92801207b30fbe9414955f65fae44061c49096f..45b5b8ec6ce12296f4bbf34ce2a3bd3226b4b1c8 100644
--- a/preprocessor/DynareBison.yy
+++ b/preprocessor/DynareBison.yy
@@ -148,7 +148,7 @@ class ParsingDriver;
 %token RESTRICTION RESTRICTION_FNAME CROSS_RESTRICTIONS NLAGS CONTEMP_REDUCED_FORM REAL_PSEUDO_FORECAST
 %token DUMMY_OBS NSTATES INDXSCALESSTATES NO_BAYESIAN_PRIOR SPECIFICATION SIMS_ZHA
 %token <string_val> ALPHA BETA ABAND NINV CMS NCMS CNUM GAMMA INV_GAMMA INV_GAMMA1 INV_GAMMA2 NORMAL UNIFORM EPS PDF FIG DR NONE PRIOR PRIOR_VARIANCE HESSIAN IDENTITY_MATRIX DIRICHLET
-%token GSIG2_LMDM Q_DIAG FLAT_PRIOR NCSK NSTD
+%token GSIG2_LMDM Q_DIAG FLAT_PRIOR NCSK NSTD WEIBULL WEIBULL_PDF
 %token INDXPARR INDXOVR INDXAP APBAND INDXIMF IMFBAND INDXFORE FOREBAND INDXGFOREHAT INDXGIMFHAT
 %token INDXESTIMA INDXGDLS EQ_MS FILTER_COVARIANCE FILTER_DECOMPOSITION
 %token EQ_CMS TLINDX TLNUMBER BANACT RESTRICTIONS
@@ -1330,6 +1330,8 @@ prior_distribution : BETA
                      { $$ = eInvGamma2; }
                    | DIRICHLET
                      { $$ = eDirichlet; }
+                   | WEIBULL
+                     { $$ = eWeibull; }
                    ;
 
 prior_pdf : BETA_PDF
@@ -1346,6 +1348,8 @@ prior_pdf : BETA_PDF
             { $$ = eUniform; }
           | INV_GAMMA2_PDF
             { $$ = eInvGamma2; }
+          | WEIBULL_PDF
+            { $$ = eWeibull; }
           ;
 
 date_str : DATES { $$ = $1; }
diff --git a/preprocessor/DynareFlex.ll b/preprocessor/DynareFlex.ll
index 9052a1027dad845da6378e740c5e5bdd292fc486..f84686a073ea9b4091aa55f4f6691404ea78f1c3 100644
--- a/preprocessor/DynareFlex.ll
+++ b/preprocessor/DynareFlex.ll
@@ -402,6 +402,10 @@ DATE -?[0-9]+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4]|[Ww]([1-9]{1}|[1-4][0-9]|5[0-2
   yylval->string_val = new string(yytext);
   return token::DIRICHLET;
 }
+<DYNARE_STATEMENT>weibull {
+  yylval->string_val = new string(yytext);
+  return token::WEIBULL;
+}
 <DYNARE_STATEMENT>normal {
   yylval->string_val = new string(yytext);
   return token::NORMAL;
@@ -587,6 +591,7 @@ DATE -?[0-9]+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4]|[Ww]([1-9]{1}|[1-4][0-9]|5[0-2
 <DYNARE_BLOCK>inv_gamma1_pdf {return token::INV_GAMMA1_PDF;}
 <DYNARE_BLOCK>inv_gamma2_pdf {return token::INV_GAMMA2_PDF;}
 <DYNARE_BLOCK>uniform_pdf {return token::UNIFORM_PDF;}
+<DYNARE_BLOCK>weibull_pdf {return token::WEIBULL_PDF;}
 <DYNARE_BLOCK>dsge_prior_weight {return token::DSGE_PRIOR_WEIGHT;}
 
 <DYNARE_BLOCK>; {return Dynare::parser::token_type (yytext[0]);}