%token EOL %token STRING /* this is for parameters */ %token COMMAND %start args %type args %% params: | STRING params { $1 :: $2 } | EOL { [] } args: | STRING COMMAND params { (Some $1, $2, $3) } | COMMAND params { (None, $1, $2) }