The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
// DESCRIPTION: Verilog::Preproc: Example source code
// This file ONLY is placed into the Public Domain, for any use,
// without warranty, 2000-2012 by Wilson Snyder.

`define EMPTY_TRUE
`ifndef EMPTY_TRUE
  `error "Empty is still true"
`endif

`define A
`ifdef A
  $display("1A");
 `ifdef C
  $display("%Error: 2C");
 `elsif A
  $display("2A");
  `ifdef C
  $display("%Error: 3C");
  `elsif B
  $display("%Error: 3B");
  `else
  $display("3AELSE");
  `endif
 `else
  $display("%Error: 2ELSE");
 `endif
`elsif B
  $display("%Error: 1B");
  `ifdef A
  $display("%Error: noC");
  `elsif A
  $display("%Error: noB");
  `else
  $display("%Error: noELSE");
  `endif
`elsif C
  $display("%Error: 1C");
`else
  $display("%Error: 1ELSE");
`endif