aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rcfile_y.y80
1 files changed, 41 insertions, 39 deletions
diff --git a/rcfile_y.y b/rcfile_y.y
index c6467af1..97f9889d 100644
--- a/rcfile_y.y
+++ b/rcfile_y.y
@@ -41,45 +41,47 @@ int yydebug; /* in case we didn't generate with -- debug */
%%
-rcfile:
- /* empty */
- | statement_list
- ;
-
-statement_list:
- statement
- | statement_list statement
- ;
-
-statement:
- define_server {prc_register(); prc_reset();}
- ;
-
-define_server: KW_SERVER PARAM_STRING server_options {prc_setserver($2);}
- | KW_SERVER PARAM_STRING {prc_setserver($2);}
- | KW_DEFAULTS server_options {prc_setserver("defaults");}
- ;
-
-server_options: serv_option_clause
- | server_options serv_option_clause
- ;
-
-serv_option_clause:
- KW_PROTOCOL KW_PROTO {prc_setproto($2);}
- | KW_LOCALNAME PARAM_STRING {prc_setlocal($2);}
- | KW_USERNAME PARAM_STRING {prc_setremote($2);}
- | KW_PASSWORD PARAM_STRING {prc_setpassword($2);}
- | KW_FOLDER PARAM_STRING {prc_setfolder($2);}
- | KW_SMTPHOST PARAM_STRING {prc_setsmtphost($2);}
- | KW_MDA PARAM_STRING {prc_setmda($2);}
- | KW_KEEP {prc_setkeep($1==FLAG_TRUE);}
- | KW_FLUSH {prc_setflush($1==FLAG_TRUE);}
- | KW_FETCHALL {prc_setfetchall($1==FLAG_TRUE);}
- | KW_REWRITE {prc_setrewrite($1==FLAG_TRUE);}
- | KW_SKIP {prc_setskip($1==FLAG_TRUE);}
- | KW_PORT PARAM_STRING {prc_setport($2);}
- ;
-
+rcfile : /* empty */
+ | statement_list
+ ;
+
+statement_list : statement
+ | statement_list statement
+ ;
+
+statement : define_server serverspecs userspecs
+ {prc_register(); prc_reset();}
+ ;
+
+define_server : KW_SERVER PARAM_STRING {prc_setserver($2);}
+ | KW_DEFAULTS {prc_setserver("defaults");}
+ ;
+
+serverspecs : /* EMPTY */
+ | serverspecs serv_option
+ ;
+
+serv_option : KW_PROTOCOL KW_PROTO {prc_setproto($2);}
+ | KW_PORT PARAM_STRING {prc_setport($2);}
+ ;
+
+userspecs : /* EMPTY */
+ | userspecs user_option
+ ;
+
+user_option : KW_LOCALNAME PARAM_STRING {prc_setlocal($2);}
+ | KW_USERNAME PARAM_STRING {prc_setremote($2);}
+ | KW_PASSWORD PARAM_STRING {prc_setpassword($2);}
+ | KW_FOLDER PARAM_STRING {prc_setfolder($2);}
+ | KW_SMTPHOST PARAM_STRING {prc_setsmtphost($2);}
+ | KW_MDA PARAM_STRING {prc_setmda($2);}
+
+ | KW_KEEP {prc_setkeep($1==FLAG_TRUE);}
+ | KW_FLUSH {prc_setflush($1==FLAG_TRUE);}
+ | KW_FETCHALL {prc_setfetchall($1==FLAG_TRUE);}
+ | KW_REWRITE {prc_setrewrite($1==FLAG_TRUE);}
+ | KW_SKIP {prc_setskip($1==FLAG_TRUE);}
+ ;
%%
yyerror (s)