The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

<!-- ASCII Control Characters -->
<!ELEMENT nul EMPTY>  <!-- "\\000" -->
<!ELEMENT soh EMPTY>  <!-- "\\001" -->
<!ELEMENT stx EMPTY>  <!-- "\\002" -->
<!ELEMENT etx EMPTY>  <!-- "\\003" -->
<!ELEMENT eot EMPTY>  <!-- "\\004" -->
<!ELEMENT enq EMPTY>  <!-- "\\005" -->
<!ELEMENT ack EMPTY>  <!-- "\\006" -->
<!ELEMENT bel EMPTY>  <!-- "\\007" -->
<!ELEMENT bs  EMPTY>  <!-- "\\010" -->
<!ELEMENT tab EMPTY>  <!-- "\\011" -->
<!ELEMENT lf  EMPTY>  <!-- "\\012" -->
<!ELEMENT vt  EMPTY>  <!-- "\\013" -->
<!ELEMENT ff  EMPTY>  <!-- "\\014" -->
<!ELEMENT cr  EMPTY>  <!-- "\\015" -->
<!ELEMENT so  EMPTY>  <!-- "\\016" -->
<!ELEMENT si  EMPTY>  <!-- "\\017" -->
<!ELEMENT dle EMPTY>  <!-- "\\020" -->
<!ELEMENT dc1 EMPTY>  <!-- "\\021" -->
<!ELEMENT dc2 EMPTY>  <!-- "\\022" -->
<!ELEMENT dc3 EMPTY>  <!-- "\\023" -->
<!ELEMENT dc4 EMPTY>  <!-- "\\024" -->
<!ELEMENT nak EMPTY>  <!-- "\\025" -->
<!ELEMENT syn EMPTY>  <!-- "\\026" -->
<!ELEMENT etb EMPTY>  <!-- "\\027" -->
<!ELEMENT can EMPTY>  <!-- "\\030" -->
<!ELEMENT em  EMPTY>  <!-- "\\031" -->
<!ELEMENT sub EMPTY>  <!-- "\\032" -->
<!ELEMENT esc EMPTY>  <!-- "\\033" -->
<!ELEMENT is4 EMPTY>  <!-- "\\034" -->
<!ELEMENT is3 EMPTY>  <!-- "\\035" -->
<!ELEMENT is2 EMPTY>  <!-- "\\036" -->
<!ELEMENT is1 EMPTY>  <!-- "\\037" -->

<!-- Basic Source Character Set -->
<!ELEMENT spc      EMPTY><!-- " " -->
<!ELEMENT excl     EMPTY><!-- "!" -->
<!ELEMENT quot     EMPTY><!-- "\042" -->
<!ELEMENT hash     EMPTY><!-- "#", "%:" -->
<!ELEMENT dollar   EMPTY><!-- "$" -->
<!ELEMENT percent  EMPTY><!-- "%" -->
<!ELEMENT amp      EMPTY><!-- "&" -->
<!ELEMENT apos     EMPTY><!-- "\047" -->
<!ELEMENT paren    ANY>  <!-- "(", ")" -->
<!ELEMENT ast      EMPTY><!-- "*" -->
<!ELEMENT plus     EMPTY><!-- "+" -->
<!ELEMENT comma    EMPTY><!-- "," -->
<!ELEMENT minus    EMPTY><!-- "-" -->
<!ELEMENT period   EMPTY><!-- "." -->
<!ELEMENT slash    EMPTY><!-- "/" -->
<!ELEMENT dig0     EMPTY><!-- "0" -->
<!ELEMENT dig1     EMPTY><!-- "1" -->
<!ELEMENT dig2     EMPTY><!-- "2" -->
<!ELEMENT dig3     EMPTY><!-- "3" -->
<!ELEMENT dig4     EMPTY><!-- "4" -->
<!ELEMENT dig5     EMPTY><!-- "5" -->
<!ELEMENT dig6     EMPTY><!-- "6" -->
<!ELEMENT dig7     EMPTY><!-- "7" -->
<!ELEMENT dig8     EMPTY><!-- "8" -->
<!ELEMENT dig9     EMPTY><!-- "9" -->
<!ELEMENT colon    EMPTY><!-- ":" -->
<!ELEMENT eos      EMPTY><!-- ";" -->
<!ELEMENT lt       EMPTY><!-- "<" -->
<!ELEMENT eq       EMPTY><!-- "=" -->
<!ELEMENT gt       EMPTY><!-- ">" -->
<!ELEMENT question EMPTY><!-- "?" -->
<!ELEMENT at       EMPTY><!-- "@" -->
<!ELEMENT A        EMPTY><!-- "A" -->
<!ELEMENT B        EMPTY><!-- "B" -->
<!ELEMENT C        EMPTY><!-- "C" -->
<!ELEMENT D        EMPTY><!-- "D" -->
<!ELEMENT E        EMPTY><!-- "E" -->
<!ELEMENT F        EMPTY><!-- "F" -->
<!ELEMENT G        EMPTY><!-- "G" -->
<!ELEMENT H        EMPTY><!-- "H" -->
<!ELEMENT I        EMPTY><!-- "I" -->
<!ELEMENT J        EMPTY><!-- "J" -->
<!ELEMENT K        EMPTY><!-- "K" -->
<!ELEMENT L        EMPTY><!-- "L" -->
<!ELEMENT M        EMPTY><!-- "M" -->
<!ELEMENT N        EMPTY><!-- "N" -->
<!ELEMENT U        EMPTY><!-- "O" -->
<!ELEMENT P        EMPTY><!-- "P" -->
<!ELEMENT Q        EMPTY><!-- "Q" -->
<!ELEMENT R        EMPTY><!-- "R" -->
<!ELEMENT S        EMPTY><!-- "S" -->
<!ELEMENT T        EMPTY><!-- "T" -->
<!ELEMENT U        EMPTY><!-- "U" -->
<!ELEMENT V        EMPTY><!-- "V" -->
<!ELEMENT W        EMPTY><!-- "W" -->
<!ELEMENT X        EMPTY><!-- "X" -->
<!ELEMENT Y        EMPTY><!-- "Y" -->
<!ELEMENT Z        EMPTY><!-- "Z" -->
<!ELEMENT bracket  ANY><!-- "[", "<:", "]",":>" -->
<!ELEMENT bslash   EMPTY><!-- "\134" -->
<!ELEMENT caret    EMPTY><!-- "^" -->
<!ELEMENT under    EMPTY><!-- "_" -->
<!ELEMENT a        EMPTY><!-- "a" -->
<!ELEMENT b        EMPTY><!-- "b" -->
<!ELEMENT c        EMPTY><!-- "c" -->
<!ELEMENT d        EMPTY><!-- "d" -->
<!ELEMENT e        EMPTY><!-- "e" -->
<!ELEMENT f        EMPTY><!-- "f" -->
<!ELEMENT g        EMPTY><!-- "g" -->
<!ELEMENT h        EMPTY><!-- "h" -->
<!ELEMENT i        EMPTY><!-- "i" -->
<!ELEMENT j        EMPTY><!-- "j" -->
<!ELEMENT k        EMPTY><!-- "k" -->
<!ELEMENT l        EMPTY><!-- "l" -->
<!ELEMENT m        EMPTY><!-- "," -->
<!ELEMENT n        EMPTY><!-- "n" -->
<!ELEMENT o        EMPTY><!-- "o" -->
<!ELEMENT p        EMPTY><!-- "p" -->
<!ELEMENT q        EMPTY><!-- "q" -->
<!ELEMENT r        EMPTY><!-- "r" -->
<!ELEMENT s        EMPTY><!-- "s" -->
<!ELEMENT t        EMPTY><!-- "t" -->
<!ELEMENT u        EMPTY><!-- "u" -->
<!ELEMENT v        EMPTY><!-- "v" -->
<!ELEMENT w        EMPTY><!-- "w" -->
<!ELEMENT x        EMPTY><!-- "x" -->
<!ELEMENT y        EMPTY><!-- "y" -->
<!ELEMENT z        EMPTY><!-- "z" -->
<!ELEMENT brace    ANY>  <!-- "{", "}", "<%", "%>" -->
<!ELEMENT vbar     EMPTY><!-- "|" -->
<!ELEMENT brace    EMPTY><!-- "}" -->
<!ELEMENT tilde    EMPTY><!-- "~" -->
<!ELEMENT del      EMPTY><!-- "\\177" -->

<!-- Key Words -->
<!ELEMENT asm              EMPTY>
<!ELEMENT auto             EMPTY>
<!ELEMENT bool             EMPTY>
<!ELEMENT break            EMPTY>
<!ELEMENT case             EMPTY>
<!ELEMENT catch            EMPTY>
<!ELEMENT char             EMPTY>
<!ELEMENT class            EMPTY>
<!ELEMENT const            EMPTY>
<!ELEMENT const_cast       EMPTY>
<!ELEMENT continue         EMPTY>
<!ELEMENT default          EMPTY>
<!ELEMENT delete           EMPTY>
<!ELEMENT do               EMPTY>
<!ELEMENT double           EMPTY>
<!ELEMENT dynamic_cast     EMPTY>
<!ELEMENT else             EMPTY>
<!ELEMENT enum             EMPTY>
<!ELEMENT explicit         EMPTY>
<!ELEMENT export           EMPTY>
<!ELEMENT extern           EMPTY>
<!ELEMENT false            EMPTY>
<!ELEMENT float            EMPTY>
<!ELEMENT for              EMPTY>
<!ELEMENT friend           EMPTY>
<!ELEMENT goto             EMPTY>
<!ELEMENT if               EMPTY>
<!ELEMENT inline           EMPTY>
<!ELEMENT int              EMPTY>
<!ELEMENT long             EMPTY>
<!ELEMENT mutable          EMPTY>
<!ELEMENT namespace        EMPTY>
<!ELEMENT new              EMPTY>
<!ELEMENT operator         EMPTY>
<!ELEMENT private          EMPTY>
<!ELEMENT protected        EMPTY>
<!ELEMENT public           EMPTY>
<!ELEMENT register         EMPTY>
<!ELEMENT reinterpret_cast EMPTY>
<!ELEMENT return           EMPTY>
<!ELEMENT short            EMPTY>
<!ELEMENT signed           EMPTY>
<!ELEMENT sizeof           EMPTY>
<!ELEMENT static           EMPTY>
<!ELEMENT static_cast      EMPTY>
<!ELEMENT struct           EMPTY>
<!ELEMENT switch           EMPTY>
<!ELEMENT template         EMPTY>
<!ELEMENT this             EMPTY>
<!ELEMENT throw            EMPTY>
<!ELEMENT true             EMPTY>
<!ELEMENT try              EMPTY>
<!ELEMENT typedef          EMPTY>
<!ELEMENT typename         EMPTY>
<!ELEMENT typeid           EMPTY>
<!ELEMENT union            EMPTY>
<!ELEMENT unsigned         EMPTY>
<!ELEMENT using            EMPTY>
<!ELEMENT virtual          EMPTY>
<!ELEMENT void             EMPTY>
<!ELEMENT volatile         EMPTY>
<!ELEMENT wchar_t          EMPTY>
<!ELEMENT while            EMPTY>

<!-- Preprocessing directives -->
<!ELEMENT ppd              EMPTY><!-- "#" -->
<!ELEMENT ppd_define       ANY>  <!-- "#define" -->
<!ELEMENT ppd_elif         ANY>  <!-- "#elif" -->
<!ELEMENT ppd_else         ANY>  <!-- "#else" -->
<!ELEMENT ppd_endif        ANY>  <!-- "#endif" -->
<!ELEMENT ppd_error        ANY>  <!-- "#error" -->
<!ELEMENT ppd_if           ANY>  <!-- "#if" -->
<!ELEMENT ppd_ifdef        ANY>  <!-- "#ifdef" -->
<!ELEMENT ppd_ifndef       ANY>  <!-- "#ifndef" -->
<!ELEMENT ppd_include      ANY>  <!-- "#include" -->
<!ELEMENT ppd_line         ANY>  <!-- "#line" -->
<!ELEMENT ppd_pragma       ANY>  <!-- "#pragma" -->
<!ELEMENT ppd_undef        ANY>  <!-- "#undef" -->

<!-- Operators -->
<!ELEMENT not       EMPTY><!-- "!", "not" -->
<!ELEMENT not_eq    EMPTY><!-- "!=", "not_eq" -->
<!ELEMENT stringize EMPTY><!-- "#" -->
<!ELEMENT splice    EMPTY><!-- "##" -->
<!ELEMENT mod       EMPTY><!-- "%" -->
<!ELEMENT splice    EMPTY><!-- "%:%:" -->
<!ELEMENT mod_eq    EMPTY><!-- "%=" -->
<!ELEMENT bitand    EMPTY><!-- "&", "bitand" -->
<!ELEMENT adr       EMPTY><!-- "&" -->
<!ELEMENT and       EMPTY><!-- "&&", "and" -->
<!ELEMENT and_eq    EMPTY><!-- "&=", "and_eq" -->
<!ELEMENT deref     EMPTY><!-- "*" -->
<!ELEMENT mult      EMPTY><!-- "*" -->
<!ELEMENT mult_eq   EMPTY><!-- "*=" -->
<!ELEMENT plus      EMPTY><!-- "+" -->
<!ELEMENT uplus     EMPTY><!-- "+" -->
<!ELEMENT incr      EMPTY><!-- "++" -->
<!ELEMENT plus_eq   EMPTY><!-- "+=" -->
<!ELEMENT comma_op  EMPTY><!-- "," -->
<!ELEMENT minus     EMPTY><!-- "-" -->
<!ELEMENT uminus    EMPTY><!-- "-" -->
<!ELEMENT decr      EMPTY><!-- "--" -->
<!ELEMENT minus_eq  EMPTY><!-- "-=" -->
<!ELEMENT ptr_m     EMPTY><!-- "->" -->
<!ELEMENT ptr_ptm   EMPTY><!-- "->*" -->
<!ELEMENT obj_m     EMPTY><!-- "." -->
<!ELEMENT obj_ptm   EMPTY><!-- ".*" -->
<!ELEMENT div       EMPTY><!-- "/" -->
<!ELEMENT div_eq    EMPTY><!-- "/=" -->
<!ELEMENT else      EMPTY><!-- ":" -->
<!ELEMENT scope     EMPTY><!-- "::" -->
<!ELEMENT lt        EMPTY><!-- "<" -->
<!ELEMENT lsl       EMPTY><!-- "<<" -->
<!ELEMENT lsl_eq    EMPTY><!-- "<<=" -->
<!ELEMENT le        EMPTY><!-- "<=" -->
<!ELEMENT eq        EMPTY><!-- "=" -->
<!ELEMENT equals    EMPTY><!-- "==" -->
<!ELEMENT gt        EMPTY><!-- ">" -->
<!ELEMENT ge        EMPTY><!-- ">=" -->
<!ELEMENT lsr       EMPTY><!-- ">>" -->
<!ELEMENT lsr_eq    EMPTY><!-- ">>=" -->
<!ELEMENT cond      EMPTY><!-- "?" -->
<!ELEMENT xor       EMPTY><!-- "^", "xor" -->
<!ELEMENT xor_eq    EMPTY><!-- "^=", "xor_eq" -->
<!ELEMENT bitor     EMPTY><!-- "|", "bitor" -->
<!ELEMENT or_eq     EMPTY><!-- "|=", "or_eq" -->
<!ELEMENT or        EMPTY><!-- "||", "or" -->
<!ELEMENT compl     EMPTY><!-- "~", "compl" -->

<!ELEMENT reference            EMPTY><!-- "&" -->
<!ELEMENT pointer              EMPTY><!-- "*" -->
<!ELEMENT ellipsis             EMPTY><!-- "..." -->

<!ELEMENT system_header        ()>
<!ELEMENT header               ()>
<!ELEMENT char_lit             ()>
<!ELEMENT lchar_lit            ()>
<!ELEMENT str_lit              ()>
<!ELEMENT lstr_lit             ()>
<!ELEMENT int_lit              ()>
<!ELEMENT oct_lit              ()>
<!ELEMENT dec_lit              ()>
<!ELEMENT hex_lit              ()>
<!ELEMENT float_lit            ()>
<!ELEMENT identifier           ()>
<!ELEMENT replaced_identifier  ()>
<!ELEMENT comment              ANY>
<!ELEMENT block_comment        ANY>
<!ELEMENT command_line         (include_directory | object_macro)*>
<!ELEMENT predefined_macro     (object_macro*)>
<!ELEMENT location             ()>
<!ELEMENT include_directory    EMPTY>
<!ATTLIST include_directory path CDATA #REQUIRED
                            used (yes | no) #REQUIRED>

<!ELEMENT use_on_code          ()>

<!ELEMENT constant_expression  ()>
<!ELEMENT elif_group           ()>
<!ELEMENT else_group           ()>
<!ELEMENT function_macro       ()>
<!ELEMENT group_part           ()>
<!ELEMENT if_section           ()>
<!ELEMENT if_group             ()>

<!ELEMENT object_macro         (str_lit)>
<!ATTLIST object_macro identifier CDATA #REQUIRED>

<!ELEMENT translation_unit    (predefined_macro, command_line, preprocessing_file)>
<!ELEMENT preprocessing_file  ANY>
<!ATTLIST preprocessing_file guarded (yes | no) #IMPLIED
                             lines CDATA  #IMPLIED
                             path CDATA #REQUIRED>
<!ELEMENT replacement_list"    ANY>