Blame compiler/ppyac.mly

Packit bd2e5d
/***********************************************************************/
Packit bd2e5d
/*                                                                     */
Packit bd2e5d
/*                 MLTk, Tcl/Tk interface of OCaml                     */
Packit bd2e5d
/*                                                                     */
Packit bd2e5d
/*    Francois Rouaix, Francois Pessaux, Jun Furuse and Pierre Weis    */
Packit bd2e5d
/*               projet Cristal, INRIA Rocquencourt                    */
Packit bd2e5d
/*            Jacques Garrigue, Kyoto University RIMS                  */
Packit bd2e5d
/*                                                                     */
Packit bd2e5d
/*  Copyright 2002 Institut National de Recherche en Informatique et   */
Packit bd2e5d
/*  en Automatique and Kyoto University.  All rights reserved.         */
Packit bd2e5d
/*  This file is distributed under the terms of the GNU Library        */
Packit bd2e5d
/*  General Public License, with the special exception on linking      */
Packit bd2e5d
/*  described in file ../../../LICENSE.                                */
Packit bd2e5d
/*                                                                     */
Packit bd2e5d
/***********************************************************************/
Packit bd2e5d
Packit bd2e5d
%{
Packit bd2e5d
open Code
Packit bd2e5d
%}
Packit bd2e5d
Packit bd2e5d
%token <string> IFDEF
Packit bd2e5d
%token <string> IFNDEF
Packit bd2e5d
%token ELSE
Packit bd2e5d
%token ENDIF
Packit bd2e5d
%token <string> DEFINE
Packit bd2e5d
%token <string> UNDEF
Packit bd2e5d
%token <string> OTHER
Packit bd2e5d
%token EOF
Packit bd2e5d
Packit bd2e5d
/* entry */
Packit bd2e5d
Packit bd2e5d
%start code_list
Packit bd2e5d
%type <Code.code list> code_list
Packit bd2e5d
Packit bd2e5d
%%
Packit bd2e5d
Packit bd2e5d
code_list:
Packit bd2e5d
    /* empty */ { [] }
Packit bd2e5d
  | code code_list { $1 :: $2 }
Packit bd2e5d
;
Packit bd2e5d
Packit bd2e5d
code:
Packit bd2e5d
  | DEFINE { Define $1 }
Packit bd2e5d
  | UNDEF { Undef $1 }
Packit bd2e5d
  | IFDEF code_list ELSE code_list ENDIF { Ifdef (true, $1, $2, Some ($4)) }
Packit bd2e5d
  | IFNDEF code_list ELSE code_list ENDIF { Ifdef (false, $1, $2, Some ($4)) }
Packit bd2e5d
  | IFDEF code_list ENDIF { Ifdef (true, $1, $2, None) }
Packit bd2e5d
  | IFNDEF code_list ENDIF { Ifdef (false, $1, $2, None) }
Packit bd2e5d
  | OTHER { Line $1 }
Packit bd2e5d
;
Packit bd2e5d
Packit bd2e5d
%%