Changeset f51aefb


Ignore:
Timestamp:
Nov 1, 2016, 3:18:59 PM (7 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
84118d8
Parents:
40744af8 (diff), 0afffee (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Files:
10 added
41 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r40744af8 rf51aefb  
    1212libcfa/Makefile
    1313src/Makefile
     14version
    1415
    1516# genereted by premake
  • config.h.in

    r40744af8 rf51aefb  
    1818/* Location of cfa install. */
    1919#undef CFA_PREFIX
     20
     21/* Major.Minor */
     22#undef CFA_VERSION
     23
     24/* Build version number. */
     25#undef CFA_VERSION_BUILD
     26
     27/* Major.Minor.Patch.Build */
     28#undef CFA_VERSION_FULL
     29
     30/* Major.Minor.Patch */
     31#undef CFA_VERSION_LONG
     32
     33/* Major version number. */
     34#undef CFA_VERSION_MAJOR
     35
     36/* Minor version number. */
     37#undef CFA_VERSION_MINOR
     38
     39/* Patch version number. */
     40#undef CFA_VERSION_PATCH
     41
     42/* Major */
     43#undef CFA_VERSION_SHORT
    2044
    2145/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
  • configure

    r40744af8 rf51aefb  
    11#! /bin/sh
    22# Guess values for system-dependent variables and create Makefiles.
    3 # Generated by GNU Autoconf 2.68 for cfa-cc 1.0.0.
     3# Generated by GNU Autoconf 2.68 for cfa-cc 1.0.0.0.
    44#
    55# Report bugs to <cforall@plg.uwaterloo.ca>.
     
    561561PACKAGE_NAME='cfa-cc'
    562562PACKAGE_TARNAME='cfa-cc'
    563 PACKAGE_VERSION='1.0.0'
    564 PACKAGE_STRING='cfa-cc 1.0.0'
     563PACKAGE_VERSION='1.0.0.0'
     564PACKAGE_STRING='cfa-cc 1.0.0.0'
    565565PACKAGE_BUGREPORT='cforall@plg.uwaterloo.ca'
    566566PACKAGE_URL=''
     
    12781278  # This message is too long to be a string in the A/UX 3.1 sh.
    12791279  cat <<_ACEOF
    1280 \`configure' configures cfa-cc 1.0.0 to adapt to many kinds of systems.
     1280\`configure' configures cfa-cc 1.0.0.0 to adapt to many kinds of systems.
    12811281
    12821282Usage: $0 [OPTION]... [VAR=VALUE]...
     
    13441344if test -n "$ac_init_help"; then
    13451345  case $ac_init_help in
    1346      short | recursive ) echo "Configuration of cfa-cc 1.0.0:";;
     1346     short | recursive ) echo "Configuration of cfa-cc 1.0.0.0:";;
    13471347   esac
    13481348  cat <<\_ACEOF
     
    14481448if $ac_init_version; then
    14491449  cat <<\_ACEOF
    1450 cfa-cc configure 1.0.0
     1450cfa-cc configure 1.0.0.0
    14511451generated by GNU Autoconf 2.68
    14521452
     
    20362036running configure, to aid debugging if configure makes a mistake.
    20372037
    2038 It was created by cfa-cc $as_me 1.0.0, which was
     2038It was created by cfa-cc $as_me 1.0.0.0, which was
    20392039generated by GNU Autoconf 2.68.  Invocation command line was
    20402040
     
    29002900# Define the identity of the package.
    29012901 PACKAGE='cfa-cc'
    2902  VERSION='1.0.0'
     2902 VERSION='1.0.0.0'
    29032903
    29042904
     
    29632963
    29642964                        # may require auto* software to be installed
     2965
     2966rm -f version
     2967echo ${PACKAGE_VERSION} > version               # file containing version number for other tools
     2968chmod ugo-w version
     2969ver_major=`cut -d '.' -f1 version`              # subdivide version number into components at periods
     2970ver_minor=`cut -d '.' -f2 version`
     2971ver_patch=`cut -d '.' -f3 version`
     2972ver_build=`cut -d '.' -f4 version`
     2973
     2974# AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version'])
     2975
     2976cat >>confdefs.h <<_ACEOF
     2977#define CFA_VERSION_MAJOR ${ver_major}
     2978_ACEOF
     2979
     2980
     2981cat >>confdefs.h <<_ACEOF
     2982#define CFA_VERSION_MINOR ${ver_minor}
     2983_ACEOF
     2984
     2985
     2986cat >>confdefs.h <<_ACEOF
     2987#define CFA_VERSION_PATCH ${ver_patch}
     2988_ACEOF
     2989
     2990
     2991cat >>confdefs.h <<_ACEOF
     2992#define CFA_VERSION_BUILD ${ver_build}
     2993_ACEOF
     2994
     2995
     2996cat >>confdefs.h <<_ACEOF
     2997#define CFA_VERSION_SHORT "${ver_major}"
     2998_ACEOF
     2999
     3000
     3001cat >>confdefs.h <<_ACEOF
     3002#define CFA_VERSION "${ver_major}.${ver_minor}"
     3003_ACEOF
     3004
     3005
     3006cat >>confdefs.h <<_ACEOF
     3007#define CFA_VERSION_LONG "${ver_major}.${ver_minor}.${ver_patch}"
     3008_ACEOF
     3009
     3010
     3011cat >>confdefs.h <<_ACEOF
     3012#define CFA_VERSION_FULL "${ver_major}.${ver_minor}.${ver_patch}.${ver_build}"
     3013_ACEOF
     3014
    29653015
    29663016# Installation paths
     
    63516401# values after options handling.
    63526402ac_log="
    6353 This file was extended by cfa-cc $as_me 1.0.0, which was
     6403This file was extended by cfa-cc $as_me 1.0.0.0, which was
    63546404generated by GNU Autoconf 2.68.  Invocation command line was
    63556405
     
    64176467ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
    64186468ac_cs_version="\\
    6419 cfa-cc config.status 1.0.0
     6469cfa-cc config.status 1.0.0.0
    64206470configured by $0, generated by GNU Autoconf 2.68,
    64216471  with options \\"\$ac_cs_config\\"
  • configure.ac

    r40744af8 rf51aefb  
    33
    44AC_PREREQ([2.68])
    5 AC_INIT([cfa-cc],[1.0.0],[cforall@plg.uwaterloo.ca])
     5AC_INIT([cfa-cc],[1.0.0.0],[cforall@plg.uwaterloo.ca])
    66AC_CONFIG_AUX_DIR([automake])
    77#AC_CONFIG_SRCDIR([src/main.cc])
     
    1717AM_INIT_AUTOMAKE
    1818AM_MAINTAINER_MODE(enable)                      # may require auto* software to be installed
     19
     20rm -f version
     21echo ${PACKAGE_VERSION} > version               # file containing version number for other tools
     22chmod ugo-w version
     23ver_major=`cut -d '.' -f1 version`              # subdivide version number into components at periods
     24ver_minor=`cut -d '.' -f2 version`
     25ver_patch=`cut -d '.' -f3 version`
     26ver_build=`cut -d '.' -f4 version`
     27
     28# AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version'])
     29AC_DEFINE_UNQUOTED(CFA_VERSION_MAJOR, ${ver_major}, [Major version number.])
     30AC_DEFINE_UNQUOTED(CFA_VERSION_MINOR, ${ver_minor}, [Minor version number.])
     31AC_DEFINE_UNQUOTED(CFA_VERSION_PATCH, ${ver_patch}, [Patch version number.])
     32AC_DEFINE_UNQUOTED(CFA_VERSION_BUILD, ${ver_build}, [Build version number.])
     33AC_DEFINE_UNQUOTED(CFA_VERSION_SHORT, ["${ver_major}"], [Major])
     34AC_DEFINE_UNQUOTED(CFA_VERSION, ["${ver_major}.${ver_minor}"], [Major.Minor])
     35AC_DEFINE_UNQUOTED(CFA_VERSION_LONG, ["${ver_major}.${ver_minor}.${ver_patch}"], [Major.Minor.Patch])
     36AC_DEFINE_UNQUOTED(CFA_VERSION_FULL, ["${ver_major}.${ver_minor}.${ver_patch}.${ver_build}"], [Major.Minor.Patch.Build])
    1937
    2038# Installation paths
  • doc/LaTeXmacros/common.tex

    r40744af8 rf51aefb  
    11%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2 %% 
     2%%
    33%% Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
    44%%
    55%% The contents of this file are covered under the licence agreement in the
    66%% file "LICENCE" distributed with Cforall.
    7 %% 
    8 %% common.tex -- 
    9 %% 
     7%%
     8%% common.tex --
     9%%
    1010%% Author           : Peter A. Buhr
    1111%% Created On       : Sat Apr  9 10:06:17 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Sun Aug 14 08:27:29 2016
    14 %% Update Count     : 231
     13%% Last Modified On : Tue Oct 25 22:04:19 2016
     14%% Update Count     : 234
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    4141\newcommand{\CCeleven}{\rm C\kern-.1em\hbox{+\kern-.25em+}11\xspace} % C++11 symbolic name
    4242\newcommand{\Celeven}{C11\xspace}               % C11 symbolic name
     43\newcommand{\Csharp}{C\raisebox{0.4ex}{\#}\xspace}      % C# symbolic name
    4344
    4445%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    226227
    227228% CFA programming language, based on ANSI C (with some gcc additions)
     229\lstdefinelanguage{Pseudo}{
     230        morekeywords={string,uint,int,bool,float},%
     231        sensitive=true,%
     232        morecomment=[l]{//},%
     233        morecomment=[s]{/*}{*/},%
     234        morestring=[b]',%
     235        morestring=[b]",%
     236        morestring=[s]{`}{`},%
     237}%
     238
     239\lstset{
     240language=Pseudo,
     241columns=fullflexible,
     242basicstyle=\linespread{0.9}\tt\small,           % reduce line spacing and use typewriter font
     243stringstyle=\sf\color{Mahogany},                        % use sanserif font
     244commentstyle=\itshape\color{OliveGreen},                % green and italic comments
     245tabsize=4,                                                      % 4 space tabbing
     246xleftmargin=\parindentlnth,                             % indent code to paragraph indentation
     247extendedchars=true,                                     % allow ASCII characters in the range 128-255
     248escapechar=§,                                           % escape to latex in CFA code
     249mathescape=true,                                                % allow $...$ LaTeX math escapes in code
     250%keepspaces=true,                                               %
     251showstringspaces=false,                                 % do not show spaces with cup
     252showlines=true,                                         % show blank lines at end of code
     253aboveskip=4pt,                                          % spacing above/below code block
     254belowskip=3pt,
     255moredelim=**[is][\color{red}]{®}{®},    % red highlighting
     256moredelim=**[is][\color{blue}]{ß}{ß},   % blue highlighting
     257moredelim=**[is][\color{OliveGreen}]{¢}{¢}, % green highlighting
     258moredelim=[is][\lstset{keywords={}}]{¶}{¶}, % temporarily turn off keywords
     259% replace/adjust listing characters that look bad in sanserif
     260literate={-}{\raisebox{-0.15ex}{\texttt{-}}}1 {^}{\raisebox{0.6ex}{$\scriptscriptstyle\land\,$}}1 {©}{{\"u}}1
     261        {~}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}}1 {_}{\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}1 {`}{\ttfamily\upshape\hspace*{-0.1ex}`}1
     262        {<-}{$\leftarrow$}2 {=>}{$\Rightarrow$}2,
     263}%
     264
     265% CFA programming language, based on ANSI C (with some gcc additions)
    228266\lstdefinelanguage{CFA}[ANSI]{C}{
    229267        morekeywords={_Alignas,_Alignof,__alignof,__alignof__,asm,__asm,__asm__,_At,_Atomic,__attribute,__attribute__,auto,
     
    260298\lstMakeShortInline©    % single-character for \lstinline
    261299
     300
    262301\let\Oldthebibliography\thebibliography
    263302\renewcommand\thebibliography[1]{
  • doc/bibliography/cfa.bib

    r40744af8 rf51aefb  
    2121%  tcs: Theoretical Computer Science
    2222@string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
     23% @string{ieeepds="IEEE Trans. Parallel Distrib. Syst."}
    2324@string{ieeese="IEEE Transactions on Software Engineering"}
     25% @string{ieeese="IEEE Trans. Softw. Eng."}
    2426@string{spe="Software---\-Practice and Experience"}
     27% @string{spe="Softw. Pract. Exp."}
     28@string{ccpe="Concurrency and Computation: Practice and Experience"}
     29% @string{ccpe="Concurrency Comput. Pract. Exp."}
    2530@string{sigplan="SIGPLAN Notices"}
     31% @string{sigplan="SIGPLAN Not."}
    2632@string{joop="Journal of Object-Oriented Programming"}
     33% @string{joop="J. of Object-Oriented Program."}
    2734@string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"}
    2835@string{osr="Operating Systems Review"}
    2936@string{pldi="Programming Language Design and Implementation"}
     37@string{mathann="Mathematische Annalen"}
     38% @string{mathann="Math. Ann."}
    3039
    3140% A
     
    3948    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    4049    publisher   = {MIT Press},
     50    address     = {New York},
    4151    series      = {Scientific and Engineering Computation Series},
    4252    year        = 1996,
     
    120130    year        = 1996,
    121131    pages       = {483-499},
    122     publisher   = {Addison-Wesley Longman Publishing Co., Inc.},
    123     address     = {Boston, MA, USA},
     132    publisher   = {Addison-Wesley Longman Publishing},
     133    address     = {Boston},
    124134}
    125135
     
    161171    author      = {Gul A. Agha},
    162172    title       = {Actors: A Model of Concurrent Computation in Distributed Systems},
    163     publisher   = {MIT Press, Cambridge, Mass.},
     173    publisher   = {MIT Press, Cambridge},
    164174    year        = 1986
    165175}
     
    311321    publisher   = {Microsoft Press},
    312322    year        = 1997,
    313     edition     = {third},
     323    edition     = {3rd},
    314324}
    315325
     
    325335    year        = 1977,
    326336    pages       = {604-605},
     337}
     338
     339@manual{Akka,
     340    keywords    = {Akka actor model},
     341    contributer = {pabuhr@plg},
     342    title       = {{A}kka {S}cala Documentation, Release 2.4.11},
     343    organization= {Lightbend Inc.},
     344    month       = sep,
     345    year        = 2016,
     346    note        = {\href{http://doc.akka.io/docs/akka/2.4/AkkaScala.pdf}{http://\-doc.akka.io/\-docs/\-akka/\-2.4/\-AkkaScala.pdf}},
    327347}
    328348
     
    378398    author      = {M. Raynal},
    379399    title       = {Algorithms for Mutual Exclusion},
    380     publisher   = {The MIT Press},
    381     address     = {Cambridge, Massachusetts},
     400    publisher   = {MIT Press},
     401    address     = {Cambridge},
    382402    series      = {Scientific Computation Series},
    383403    year        = 1986,
     
    394414    pages       = {329-342},
    395415    publisher   = {Springer},
     416    address     = {New York},
    396417    year        = 2005,
    397418    volume      = 3669,
     
    404425    editor      = {Richard L. Sites},
    405426    title       = {Alpha Architecture Reference Manual},
    406     publisher   = {Digital Press, One Burlington Woods Drive, Burlington, MA, U. S. A., 01803},
     427    publisher   = {Digital Press, Burlington},
    407428    year        = 1992,
    408429}
     
    413434    editor      = {Mary Shaw},
    414435    title       = {{ALPHARD}: Form and Content},
    415     publisher   = {Springer-Verlag},
     436    publisher   = {Springer},
     437    address     = {New York},
    416438    year        = 1981,
    417439    comment     = {Collection of papers about Alphard.}
     
    470492    editor      = {Gul Agha and Peter Wegner and Akinori Yonezawa},
    471493    publisher   = {MIT Press},
     494    address     = {New York},
    472495    year        = 1993,
    473496    pages       = {107-150},
     
    495518    location    = {Toulouse, France},
    496519    doi         = {http://doi.acm.org/10.1145/318773.319251},
    497     publisher   = {Springer-Verlag},
     520    publisher   = {Springer},
    498521    address     = {London, UK},
    499522}
     
    504527    title       = {The Annotated {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Reference Manual},
    505528    publisher   = {Addison-Wesley},
     529    address     = {Boston},
    506530    year        = 1990,
    507     edition     = {first},
     531    edition     = {1st},
    508532}
    509533
     
    567591    year        = 2008,
    568592    isbn        = {0123705916, 9780123705914},
    569     publisher   = {Morgan Kaufmann Publishers Inc.},
    570     address     = {San Francisco, CA, USA},
     593    publisher   = {Morgan Kaufmann Publishers},
     594    address     = {San Francisco},
    571595}
    572596
     
    747771}
    748772
     773@misc{BoostCoroutines15,
     774    keywords    = {Boost Coroutine Library},
     775    contributer = {pabuhr@plg},
     776    author      = {Oliver Kowalke},
     777    title       = {Boost Coroutine Library},
     778    year        = 2015,
     779    note        = {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html}
     780                  {{http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}} [Accessed September 2016]},
     781}
     782
    749783@mastersthesis{Krischer02,
    750784    author      = {Roy Krischer },
     
    779813    editor      = {C. Dony and J. L. Knudsen and A. Romanovsky and A. Tripathi},
    780814    booktitle   = {Advanced Topics in Exception Handling Techniques},
    781     publisher   = {Springer-Verlag},
     815    publisher   = {Springer},
    782816    series      = {Lecture Notes in Computer Science},
    783817    volume      = 4119,
     
    793827    author      = {Brian W. Kernighan and Dennis M. Ritchie},
    794828    title       = {The {C} Programming Language},
    795     publisher   = {Prentice Hall},
     829    publisher   = {Prentice-Hall},
     830    address     = {Englewood Cliffs},
    796831    year        = 1988,
    797     edition     = {second},
    798     series      = {Prentice Hall Software Series},
     832    edition     = {2nd},
     833    series      = {Prentice-Hall Software Series},
    799834    comment     = {
    800835         based on draft-proposed ANSI C
     
    807842    author      = {Brian W. Kernighan and Dennis M. Ritchie},
    808843    title       = {The {C} Programming Language},
    809     publisher   = {Prentice Hall},
     844    publisher   = {Prentice-Hall},
     845    address     = {Englewood Cliffs},
    810846    year        = 1978,
    811     edition     = {first},
     847    edition     = {1st},
    812848}
    813849
     
    835871
    836872@manual{C++Concepts,
    837         keywords = {ISO/IEC TS 19217:2015},
    838         contributer = {a3moss@uwaterloo.ca},
    839         key = {C++ Concepts},
    840         title = {Information technology -- Programming languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Extensions for concepts},
    841         organization = {International Standard ISO/IEC TS 19217:2015},
    842         publisher = {International Standard Organization},
    843         address = {http://www.iso.org},
    844         year = 2015
     873    keywords    = {ISO/IEC TS 19217:2015},
     874    contributer = {a3moss@uwaterloo.ca},
     875    key         = {C++ Concepts},
     876    title       = {Information technology -- Programming languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Extensions for concepts},
     877    organization= {International Standard ISO/IEC TS 19217:2015},
     878    publisher   = {International Standard Organization},
     879    address     = {http://www.iso.org},
     880    year        = 2015
    845881}
    846882
     
    914950    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Primer},
    915951    publisher   = {Addison-Wesley},
     952    address     = {Boston},
    916953    year        = 1991,
    917     edition     = {second},
     954    edition     = {2nd},
    918955    note        = {QA76.73.C15L57},
    919956}
     
    925962    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
    926963    publisher   = {Addison-Wesley},
     964    address     = {Boston},
    927965    year        = 1986,
    928     edition     = {first},
     966    edition     = {1st},
    929967    series      = {Addison-Wesley Series in Computer Science}
    930968}
     
    936974    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
    937975    publisher   = {Addison-Wesley},
     976    address     = {Boston},
    938977    year        = 1991,
    939     edition     = {second},
     978    edition     = {2nd},
    940979}
    941980
     
    945984    author      = {Bjarne Stroustrup},
    946985    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
    947     publisher   = {Addison-Wesley},
     986    publisher   = {Addison Wesley Longman},
    948987    year        = 1997,
    949     edition     = {third},
     988    edition     = {3rd},
    950989}
    951990
     
    10021041    title       = {Classics in Software Engineering},
    10031042    publisher   = {Yourdon Press},
     1043    address     = {New York},
    10041044    year        = 1979,
    10051045}
     
    10421082                Moss and J. Craig Schaffert and Robert Scheifler and Alan Snyder},
    10431083    title       = {CLU Reference Manual},
    1044     publisher   = {Springer-Verlag},
     1084    publisher   = {Springer},
     1085    address     = {New York},
    10451086    year        = 1981,
    10461087    volume      = 114,
     
    10531094    key         = {Cobol14},
    10541095    title       = {Programming Languages -- {Cobol}},
    1055     edition     = {second},
     1096    edition     = {2nd},
    10561097    organization= {International Standard ISO/IEC 1989:2014},
    10571098    publisher   = {International Standard Organization},
     
    11061147    title       = {Commentary on Standard {ML}},
    11071148    publisher   = {MIT Press},
    1108     address     = {Cambridge, Massachusetts, U.S.A.},
     1149    address     = {Cambridge},
    11091150    year        = 1991
    11101151}
     
    11321173    year        = 1987,
    11331174    pages       = {151-170},
    1134     publisher   = {Springer-Verlag}
     1175    publisher   = {Springer}
    11351176}
    11361177
     
    11381179    keywords    = {common lisp},
    11391180    contributer = {pabuhr@plg},
    1140     author      = {G. Steele},
     1181    author      = {Guy Steele},
    11411182    title       = {COMMON LISP: The Language},
    11421183    publisher   = {Digital Press},
     1184    address     = {New York},
    11431185    year        = 1984
    11441186}
     
    11831225    year        = 1985,
    11841226    isbn        = {0-13-153271-5},
    1185     publisher   = {Prentice-Hall, Inc.},
     1227    publisher   = {Prentice-Hall},
    11861228    address     = {Upper Saddle River, NJ, USA},
    11871229    note        = {\href{http://www.usingcsp.com/cspbook.pdf}{http://\-www.usingcsp.com/\-cspbook.pdf}},
     
    12021244    author      = {Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman},
    12031245    title       = {Compilers: Principles, Techniques, and Tools},
    1204     edition     = {second},
     1246    edition     = {2nd},
    12051247    year        = {2006},
    1206     publisher   = {Addison-Wesley Longman Publishing Co., Inc.},
     1248    publisher   = {Addison-Wesley Longman Publishing},
    12071249    address     = {Boston, MA, USA},
    12081250}
     
    12121254    contributer = {pabuhr@plg},
    12131255    author      = {David F. Bacon and Susan L. Graham and Oliver J. Sharp},
    1214     title       = {Compiler Transformations for High-Performance Computing},
     1256    title       = {Compiler Transformations for High-Performance Com\-puting},
    12151257    journal     = acmcs,
    12161258    volume      = 26,
     
    12501292    month       = sep,
    12511293    address     = {Waterloo, Ontario, Canada, N2L 3G1},
    1252     note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-MokThesis.ps.gz}}},
     1294    note        = {\href{http://plg.uwaterloo.ca/theses/MokThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-MokThesis.pdf}},
    12531295}
    12541296
     
    13281370    editor      = {P. E. Lauer},
    13291371    pages       = {165-198},
    1330     publisher   = {Springer-Verlag},
     1372    publisher   = {Springer},
    13311373    address     = {Berlin, DE},
    13321374    year        = 1993,
     
    13931435    month       = jul,
    13941436    year        = 2015,
    1395     note        = {\href{http://plg.uwaterloo.ca/~usystem/pub/uSystem/u++-6.1.0.sh}{\textsf{http://plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/\-u++-6.1.0.sh}}},
     1437    note        = {\href{http://plg.uwaterloo.ca/~usystem/pub/uSystem/u++-6.1.0.sh}{\textsf{http://\-plg.\-uwaterloo.\-ca/\-$\sim$usystem/\-pub/\-uSystem/\-u++-6.1.0.sh}}},
    13961438}
    13971439
     
    14011443    author      = {Alan Burns and Geoff Davies},
    14021444    title       = {Concurrent Programming},
    1403     publisher   = {Addison-Wesley},
     1445    publisher   = {Addison Wesley Longman},
    14041446    year        = 1993,
    14051447}
     
    14241466    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
    14251467    publisher   = {Addison-Wesley},
     1468    address     = {Boston},
    14261469    year        = 1997,
    1427     edition     = {first},
     1470    edition     = {1st},
    14281471}
    14291472
     
    14351478    publisher   = {Oxford University Press},
    14361479    year        = 1998,
    1437     edition     = {first},
     1480    edition     = {1st},
    14381481}
    14391482
     
    14441487    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
    14451488    publisher   = {Addison-Wesley},
     1489    address     = {Boston},
    14461490    year        = 2000,
    1447     edition     = {second},
     1491    edition     = {2nd},
    14481492}
    14491493
     
    14531497    author      = {N. H. Gehani and W. D. Roome},
    14541498    title       = {The {Concurrent C} Programming Language},
    1455     publisher   = {Silicon Press, NJ},
     1499    publisher   = {Silicon Press},
     1500    address     = {Summit},
    14561501    year        = 1989,
    14571502}
     
    14621507    author      = {Gregory R. Andrews},
    14631508    title       = {Concurrent Programming: Principles and Practice},
    1464     publisher   = {Benjamin/Cummings Publishing Company, Inc., Redwood City, California},
     1509    publisher   = {Benjamin/Cummings Publish\-ing},
     1510    address     = {Redwood City},
    14651511    year        = 1991,
    14661512}
     
    14711517    author      = {Peter A. Buhr and Ashif S. Harji},
    14721518    title       = {Concurrent Urban Legends},
    1473     journal     = {Concurrency and Computation: Practice and Experience},
     1519    journal     = ccpe,
    14741520    month       = aug,
    14751521    year        = 2005,
     
    14971543    publisher   = {Cambridge University Press},
    14981544    year        = 1998,
    1499     edition     = {second},
     1545    edition     = {2nd},
    15001546}
    15011547
     
    15141560    title       = {Condition Handling in the Lisp Language Family},
    15151561    booktitle   = {Exception Handling},
    1516     publisher   = {Springer-Verlag},
     1562    publisher   = {Springer},
    15171563    volume      = 2022,
    15181564    series      = {LNCS},
     
    15271573    title       = {Conformace, Genericity, Inheritance and Enhancement},
    15281574    pages       = {223-233},
    1529     publisher   = {Springer-Verlag},
     1575    publisher   = {Springer},
    15301576    year        = 1987,
    15311577    volume      = 276,
     
    16361682
    16371683@unpublished{Ditchfield:conversions,
    1638         contributer = {a3moss@uwaterloo.ca},
    1639         author = {Glen Ditchfield},
    1640         title = {Conversions for {Cforall}},
    1641         note = {\href{http://plg.uwaterloo.ca/~cforall/Conversions/index.html}{http://\-plg.uwaterloo.ca/\-\textasciitilde cforall/\-Conversions/\-index.html}},
    1642         month = {Nov},
    1643         year = {2002},
    1644         urldate = {28 July 2016},
    1645 }
    1646 
     1684    contributer = {a3moss@uwaterloo.ca},
     1685    author      = {Glen Ditchfield},
     1686    title       = {Conversions for {Cforall}},
     1687    note        = {\href{http://plg.uwaterloo.ca/~cforall/Conversions/index.html}{http://\-plg.uwaterloo.ca/\-\textasciitilde cforall/\-Conversions/\-index.html}},
     1688    month       = {Nov},
     1689    year        = {2002},
     1690    urldate     = {28 July 2016},
     1691}
    16471692
    16481693@techreport{Dijkstra65,
     
    16621707    author      = {Christopher D. Marlin},
    16631708    title       = {Coroutines: A Programming Methodology, a Language Design and an Implementation},
    1664     publisher   = {Springer-Verlag},
     1709    publisher   = {Springer},
     1710    address     = {New York},
    16651711    year        = 1980,
    16661712    volume      = 95,
     
    16991745    publisher   = {Benjamin Cummings},
    17001746    year        = 1991,
     1747}
     1748
     1749@article{Moore75,
     1750    keywords    = {approximation methods, integrated circuits},
     1751    contributer = {pabuhr@plg},
     1752    author      = {Gordon E. Moore},
     1753    title       = {Progress in Digital Integrated Electronics},
     1754    journal     = {Technical Digest, International Electron Devices Meeting, IEEE},
     1755    year        = 1975,
     1756    pages       = {11-13},
    17011757}
    17021758
     
    18401896    title       = {The Definition of Standard {ML}},
    18411897    publisher   = {MIT Press},
    1842     address     = {Cambridge, Massachusetts, U.S.A.},
     1898    address     = {Cambridge},
    18431899    year        = 1990
    18441900}
     
    18701926    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
    18711927    title       = {Dekker's Mutual Exclusion Algorithm Made RW-Safe},
    1872     journal     = {Concurrency and Computation: Practice and Experience},
     1928    journal     = ccpe,
    18731929    volume      = 28,
    18741930    number      = 1,
     
    19201976    title       = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    19211977    publisher   = {Addison-Wesley},
     1978    address     = {Boston},
    19221979    year        = 1994
    19231980}
     
    19772034    author      = {G. Motet and A. Mapinard and J. C. Geoffroy},
    19782035    title       = {Design of Dependable {A}da Software},
    1979     publisher   = {Prentice Hall},
     2036    publisher   = {Prentice-Hall},
     2037    address     = {Englewood Cliffs},
    19802038    year        = 1996,
    19812039}
     
    20122070    title       = {Design Patterns: Elements of Reusable Object-Oriented Software},
    20132071    publisher   = {Addison-Wesley},
     2072    address     = {Boston},
    20142073    year        = 1995,
    20152074    series      = {Professional Computing Series},
     
    20542113    author      = {Ralph E. Johnson and Brian Foote},
    20552114    title       = {Designing Reusable Classes},
    2056     journal     = {Journal of Object-Oriented Programming},
     2115    journal     = joop,
    20572116    year        = 1988,
    20582117    volume      = 1, number = 2, pages = {22-35},
     
    21092168    title       = {A Discipline of Programming},
    21102169    publisher   = {Prentice-Hall},
     2170    address     = {Englewood Cliffs},
    21112171    year        = 1976,
    21122172}
     
    21252185    title       = {Distributed Systems: Principles and Paradigms},
    21262186    publisher   = {Prentice-Hall},
     2187    address     = {Englewood Cliffs},
    21272188    year        = 2002,
    21282189}
     
    22532314    title       = {Eiffel: The Language},
    22542315    publisher   = {Prentice-Hall},
     2316    address     = {Englewood Cliffs},
    22552317    year        = 1992,
    2256     series      = {Prentice Hall Object-Oriented Series},
     2318    series      = {Prentice-Hall Object-Oriented Series},
    22572319}
    22582320
     
    23882450    month       = jun,
    23892451    year        = 2015,
    2390     note        = {\href{http://www.erlang.org/doc/pdf/otp-system-documentation.pdf}{\textsf{http://www.erlang.org/\-doc/\-pdf/\-otp-system-documentation.pdf}}},
     2452    note        = {\href{http://www.erlang.org/doc/pdf/otp-system-documentation.pdf}{\textsf{http://www.erlang.org/\-doc/\-pdf/\-otp-system-\-documentation.pdf}}},
    23912453}
    23922454
     
    24672529    booktitle   = {Advances in COMPUTERS},
    24682530    publisher   = {Academic Press},
     2531    address     = {London},
    24692532    volume      = 56,
    24702533    year        = 2002,
     
    25612624    title       = {Exception Handling in Parallel Computations},
    25622625    journal     = sigplan,
     2626    publisher   = {ACM},
     2627    address     = {New York, NY, USA},
    25632628    volume      = 20,
    25642629    number      = 10,
    25652630    month       = oct,
    25662631    year        = 1985,
    2567     issn        = {0362-1340},
    25682632    pages       = {95-104},
    2569     url         = {http://doi.acm.org/10.1145/382286.382385},
    2570     doi         = {http://doi.acm.org/10.1145/382286.382385},
    2571     acmid       = {382385},
    2572     publisher   = {ACM},
    2573     address     = {New York, NY, USA},
    25742633}
    25752634
     
    26802739    title       = {Fault Tolerance and Exception Handling in {BETA}},
    26812740    booktitle   = {Exception Handling},
    2682     publisher   = {Springer-Verlag},
     2741    publisher   = {Springer},
    26832742    volume      = 2022,
    26842743    series      = {Lecture Notes in Computer Science},
     
    28392898    title       = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
    28402899    booktitle   = {Exception Handling},
    2841     publisher   = {Springer-Verlag},
     2900    publisher   = {Springer},
    28422901    volume      = 2022,
    28432902    series      = {Lecture Notes in Computer Science},
     
    28592918    series      = {The Art of Computer Programming},
    28602919    publisher   = {Addison-Wesley},
     2920    address     = {Boston},
    28612921    year        = 1973,
    28622922    volume      = 1,
    2863     edition     = {second},
     2923    edition     = {2nd},
    28642924}
    28652925
     
    29122972    author      = {Richard M. Stallman},
    29132973    organization= {Free Software Foundation},
    2914     address     = {Cambridge, MA}
     2974    address     = {Cambridge}
    29152975}
    29162976
     
    29523012}
    29533013
    2954 
    29553014@article{Haskell,
    29563015    keywords    = {lazy evaluation, type class},
     
    29733032    organization= {Google},
    29743033    year        = 2009,
    2975     note        = {\href{http://golang.org/ref/spec}{http://golang.org/\-ref/\-spec}},
     3034    note        = {\href{http://golang.org/ref/spec}{http://\-golang.org/\-ref/\-spec}},
    29763035}
    29773036
     
    30903149    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini},
    30913150    title       = {Hermes: A Language for Distributed Computing},
    3092     publisher   = {Prentice Hall},
     3151    publisher   = {Prentice-Hall},
     3152    address     = {Englewood Cliffs},
    30933153    series      = {Innovative Technology},
    30943154    year        = 1991,
     
    31343194    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
    31353195    title       = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
    3136     journal     = {Concurrency and Computation: Practice and Experience},
     3196    journal     = ccpe,
    31373197    volume      = 27,
    31383198    number      = 3,
     
    31483208    title       = {Zum Hilbertschen Aufbau der reellen Zahlen},
    31493209    publisher   = {Springer},
    3150     journal     = {Mathematische Annalen},
     3210    journal     = mathann,
    31513211    number      = 1,
    31523212    volume      = 99,
     
    31873247    title       = {The Icon Programming Language},
    31883248    publisher   = {Prentice-Hall},
     3249    address     = {Englewood Cliffs},
    31893250    year        = 1983,
    31903251}
     
    32623323    issn        = {0164-0925},
    32633324    pages       = {1270--1343},
    3264     doi         = {http://doi.acm.org/10.1145/1108970.1108975},
    32653325    publisher   = {ACM Press},
    32663326    address     = {New York, NY, USA},
     
    32773337    pages       = {55-59},
    32783338    issn        = {0163-5719},
    3279     doi         = {http://doi.acm.org/10.1145/872736.806932},
    3280  }
     3339}
    32813340
    32823341@book{Algol68,
     
    33613420    title       = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
    33623421    publisher   = {Addison-Wesley},
     3422    address     = {Boston},
    33633423    series      = {ACM Press Books},
    33643424    year        = 1996,
     
    34343494    title       = {Introduction to Algorithms},
    34353495    publisher   = {MIT Press/McGraw-Hill},
     3496    address     = {Cambridge},
    34363497    series      = {Electrical Engineering and Computer Science Series},
    34373498    year        = 1992,
     
    34443505    title       = {Introduction to Automata Theory, Languages and Computation},
    34453506    publisher   = {Addison-Wesley},
     3507    address     = {Boston},
    34463508    year        = 1979,
    34473509}
     
    34763538    title       = {An Introduction to Operating Systems},
    34773539    publisher   = {Addison-Wesley},
     3540    address     = {Boston},
    34783541    year        = 1990,
    3479     edition     = {second},
     3542    edition     = {2nd},
    34803543}
    34813544
     
    35253588    title       = {Issues with Exception Hnadling in Object-Oriented Systems},
    35263589    booktitle   = {ECOOP'97},
    3527     publisher   = {Springer-Verlag},
     3590    publisher   = {Springer},
    35283591    volume      = 1241,
    35293592    series      = {Lecture Notes in Computer Science},
     
    35533616    title       = {The {Java} Language Specification},
    35543617    publisher   = {Addison-Wesley},
     3618    address     = {Reading},
    35553619    year        = 2000,
    3556     edition     = {second},
     3620    edition     = {2nd},
    35573621}
    35583622
     
    35973661    title       = {Konstruktion nichtrekursiver Funktionen},
    35983662    publisher   = {Springer},
    3599     journal     = {Mathematische Annalen},
     3663    journal     = mathann,
    36003664    number      = 111,
    36013665    volume      = 1,
     
    37403804    title       = {Lisp 1.5 Primer},
    37413805    publisher   = {Dickenson Publishing},
     3806    address     = {Belmont},
    37423807    year        = 1967,
    37433808}
     
    39374002    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
    39384003    organization= {ECOOP'88},
    3939     publisher   = {Springer-Verlag},
     4004    publisher   = {Springer},
    39404005    volume      = 322,
    39414006    editor      = {S. Gjessing and K. Nygaard},
     
    39794044    title       = {Modern C++ Design: Generic Programming and Design Patterns Applied},
    39804045    publisher   = {Addison-Wesley Professional},
     4046    address     = {Boston},
    39814047    month       = feb,
    39824048    year        = 2001,
     
    39904056    title       = {Modern Operating Systems},
    39914057    publisher   = {Prentice-Hall},
     4058    address     = {Englewood Cliffs},
    39924059    year        = 1992,
    39934060}
     
    43104377    title       = {Nesting in an Object Oriented Language is NOT for the Birds},
    43114378    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
    4312     publisher   = {Springer-Verlag},
     4379    publisher   = {Springer},
    43134380    volume      = 322,
    43144381    editor      = {S. Gjessing and K. Nygaard},
     
    44374504    editor      = {S. Gjessing and K. Nygaard},
    44384505    organization= {DND, The Norwegian Computer Society},
    4439     publisher   = {Springer-Verlag},
     4506    publisher   = {Springer},
    44404507    comment     = {
    44414508           Objectives:
     
    44724539    title       = {Object-oriented programming; an evolutionary approach},
    44734540    publisher   = {Addison-Wesley},
     4541    address     = {Boston},
    44744542    year        = 1986
    44754543}
     
    44814549    title       = {Object-oriented Programming in the {BETA} Programming Language},
    44824550    publisher   = {Addison-Wesley},
     4551    address     = {Boston},
    44834552    year        = 1993,
    44844553}
     
    45124581    author      = {Bertrand Meyer},
    45134582    title       = {Object-oriented Software Construction},
    4514     publisher   = {Prentice Hall},
     4583    publisher   = {Prentice-Hall},
     4584    address     = {Englewood Cliffs},
    45154585    year        = {1988},
    4516     series      = {Prentice Hall International Series in Computer Science},
     4586    series      = {Prentice-Hall International Series in Computer Science},
    45174587}
    45184588
     
    45414611    author      = {John Galletly},
    45424612    title       = {{OCCAM} 2: Including {OCCAM} 2.1},
    4543     publisher   = {{UCL} (University College London) Press Ltd.},
    4544     edition     = {second},
     4613    publisher   = {{UCL} (University College London) Press},
     4614    address     = {London},
     4615    edition     = {2nd},
    45454616    year        = 1996,
    45464617}
     
    46024673    month       = jul,
    46034674    year        = 2013,
    4604     note        = {\href{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}{\textsf{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}}},
     4675    note        = {\href{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}{\textsf{http://\-www.openmp.org/\-mp-documents/\-OpenMP4.0.0.pdf}}},
    46054676}
    46064677
     
    46114682    title       = {Operating Systems},
    46124683    publisher   = {Pearson Prentice-Hall},
     4684    address     = {Englewood Cliffs},
    46134685    year        = 2004,
    4614     edition     = {third},
     4686    edition     = {3rd},
    46154687}
    46164688
     
    46214693    title       = {Operating Systems: Internals and Design Principles},
    46224694    publisher   = {Prentice-Hall},
     4695    address     = {Englewood Cliffs},
    46234696    year        = 1998,
    4624     edition     = {third},
     4697    edition     = {3rd},
    46254698}
    46264699
     
    46314704    title       = {Operating Systems: Internals and Design Principles},
    46324705    publisher   = {Prentice-Hall},
     4706    address     = {Englewood Cliffs},
    46334707    year        = 2001,
    4634     edition     = {fourth},
     4708    edition     = {4th},
    46354709}
    46364710
     
    46414715    title       = {Operating System Concepts},
    46424716    publisher   = {Addision-Wesley},
     4717    address     = {Boston},
    46434718    year        = 1991,
    4644     edition     = {third},
     4719    edition     = {3rd},
    46454720}
    46464721
     
    46514726    title       = {Operating Systems : Design and Implementation},
    46524727    publisher   = {Prentice-Hall},
     4728    address     = {Englewood Cliffs},
    46534729    series      = {Software Series},
    46544730    year        = 1987,
     
    46614737    title       = {Operating System Principles},
    46624738    publisher   = {Prentice-Hall},
     4739    address     = {Englewood Cliffs},
    46634740    year        = 1973,
    46644741}
     
    46704747    title       = {Operating System Principles},
    46714748    publisher   = {Prentice-Hall},
     4749    address     = {Englewood Cliffs},
    46724750    year        = 2003,
    46734751}
     
    46864764
    46874765@article{Ganzinger80,
    4688         contributer = {a3moss@uwaterloo.ca},
    4689         author = {Ganzinger, Harald and Ripken, Knut},
    4690         title = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
    4691         journal = {SIGPLAN Notices},
    4692         issue_date = {February 1980},
    4693         volume = {15},
    4694         number = {2},
    4695         month = feb,
    4696         year = {1980},
    4697         issn = {0362-1340},
    4698         pages = {30--42},
    4699         numpages = {13},
    4700         url = {http://doi.acm.org/10.1145/947586.947589},
    4701         doi = {10.1145/947586.947589},
    4702         publisher = {ACM},
    4703         address = {New York, NY, USA}
     4766    contributer = {a3moss@uwaterloo.ca},
     4767    author      = {Ganzinger, Harald and Ripken, Knut},
     4768    title       = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
     4769    journal     = {SIGPLAN Notices},
     4770    issue_date  = {February 1980},
     4771    volume      = {15},
     4772    number      = {2},
     4773    month       = feb,
     4774    year        = {1980},
     4775    issn        = {0362-1340},
     4776    pages       = {30--42},
     4777    numpages    = {13},
     4778    url         = {http://doi.acm.org/10.1145/947586.947589},
     4779    doi         = {10.1145/947586.947589},
     4780    publisher   = {ACM},
     4781    address     = {New York, NY, USA}
    47044782}
    47054783
     
    47234801    title       = {{OS} and {DOS} {PL/I} Reference Manual},
    47244802    organization= {International Business Machines},
    4725     edition     = {first},
     4803    edition     = {1st},
    47264804    month       = sep,
    47274805    year        = 1981,
     
    48434921    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    48444922    publisher   = {MIT Press},
    4845     address     = {Cambridge, MA, USA},
     4923    address     = {Cambridge},
    48464924    series      = {Scientific and Engineering Computation Series},
    48474925    pages       = {507-546},
     
    49225000    publisher   = {Springer--Verlag},
    49235001    year        = 1985,
    4924     edition     = {third},
     5002    edition     = {3rd},
    49255003    note        = {Revised by Andrew B. Mickel and James F. Miner, ISO Pascal Standard}
    49265004}
     
    49335011    publisher   = {Springer--Verlag},
    49345012    year        = 1975,
    4935     edition     = {first},
     5013    edition     = {1st},
    49365014}
    49375015
     
    49555033    title       = {{P}ascal/{VS} Language Reference Manual},
    49565034    organization= {International Business Machines},
    4957     edition     = {first},
     5035    edition     = {1st},
    49585036    year        = 1981,
    49595037    note        = {Manual SH20-6168-1},
     
    51075185    title       = {Principles of Concurrent Programming},
    51085186    publisher   = {Prentice-Hall International},
     5187    address     = {Englewood Cliffs},
    51095188    year        = 1982,
    51105189}
     
    51145193    title       = {Principles of Programming Languages},
    51155194    publisher   = {Prentice-Hall International},
     5195    address     = {Englewood Cliffs},
    51165196    year        = 1981,
    51175197    series      = {Series in Computer Science}
     
    51855265    title       = {Programming with {POSIX} Threads},
    51865266    publisher   = {Addison-Wesley},
     5267    address     = {Boston},
    51875268    series      = {Professional Computing},
    51885269    year        = 1997,
     
    51945275    author      = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
    51955276    title       = {Programming with Sets: An Introduction to {SETL}},
    5196     publisher   = {Springer-Verlag},
     5277    publisher   = {Springer},
    51975278    year        = 1986,
    51985279}
     
    52355316    key         = {C++14},
    52365317    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    5237     edition     = {fourth},
     5318    edition     = {4th},
    52385319    organization= {International Standard ISO/IEC 14882:2014 (E)},
    52395320    publisher   = {International Standard Organization},
     
    53295410    author      = {Niklaus Wirth},
    53305411    title       = {Programming in Modula-2},
    5331     publisher   = {Springer-Verlag},
     5412    publisher   = {Springer},
     5413    address     = {New York},
    53325414    year        = 1988,
    5333     edition     = {fourth},
     5415    edition     = {4th},
    53345416    series      = {Texts and Monographs in Computer Science},
    53355417}
     
    53435425    month       = feb,
    53445426    year        = 1983,
    5345     note        = {Published by Springer-Verlag}
     5427    note        = {Springer, New York},
    53465428}
    53475429
     
    53515433    title       = {The Programming Language {Ada}: Reference Manual},
    53525434    organization= {United States Department of Defense},
    5353     publisher   = {Springer-Verlag},
     5435    publisher   = {Springer},
    53545436    year        = 1981
    53555437}
     
    55055587
    55065588@article{Grossman06,
    5507  keywords = {Cyclone, existential types, polymorphism, type variables},
    5508  contributer = {a3moss@plg},
    5509  author = {Grossman, Dan},
    5510  title = {Quantified Types in an Imperative Language},
    5511  journal = toplas,
    5512  issue_date = {May 2006},
    5513  volume = {28},
    5514  number = {3},
    5515  month = may,
    5516  year = {2006},
    5517  issn = {0164-0925},
    5518  pages = {429--475},
    5519  numpages = {47},
    5520  url = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
    5521  doi = {10.1145/1133651.1133653},
    5522  acmid = {1133653},
    5523  publisher = {ACM},
    5524  address = {New York, NY, USA},
     5589    keywords    = {Cyclone, existential types, polymorphism, type variables},
     5590    contributer = {a3moss@plg},
     5591    author      = {Grossman, Dan},
     5592    title       = {Quantified Types in an Imperative Language},
     5593    journal     = toplas,
     5594    issue_date  = {May 2006},
     5595    volume      = {28},
     5596    number      = {3},
     5597    month       = may,
     5598    year        = {2006},
     5599    issn        = {0164-0925},
     5600    pages       = {429--475},
     5601    numpages    = {47},
     5602    url         = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
     5603    doi         = {10.1145/1133651.1133653},
     5604    acmid       = {1133653},
     5605    publisher   = {ACM},
     5606    address     = {New York, NY, USA},
    55255607}
    55265608
     
    55695651    title       = {{A}da Reference Manual},
    55705652    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
    5571     organization = {Intermetrics, Inc.},
     5653    organization= {Intermetrics, Inc.},
    55725654    month       = dec,
    55735655    year        = 1995,
     
    55795661    contributer = {pabuhr@plg},
    55805662    title       = {Programming languages -- {Ada}},
    5581     edition     = {third},
     5663    edition     = {3rd},
    55825664    organization= {International Standard ISO/IEC 1989:2014},
    55835665    publisher   = {International Standard Organization},
     
    56045686    series      = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
    56055687    publisher   = {Addison-Wesley},
     5688    address     = {Boston},
    56065689    year        = 2000,
    56075690}
     
    57555838% S
    57565839
     5840@manual{Scala,
     5841    keywords    = {Scala programming language},
     5842    contributer = {pabuhr@plg},
     5843    title       = {{Scala} Language Specification, Version 2.11},
     5844    organization= {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
     5845    year        = 2016,
     5846    note        = {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}},
     5847}
     5848
    57575849@inproceedings{Michael04,
    57585850    keywords    = {lock free, dynamic memory allocation},
     
    58025894    pages       = {51-67},
    58035895    editor      = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
    5804     publisher   = {Springer-Verlag},
     5896    publisher   = {Springer},
    58055897    note        = {Lecture Notes in Computer Science v. 173},
    58065898}
     
    58525944    month       = may,
    58535945    year        = 2001,
    5854     note        = {{\small\textsf{http://www.python.org/peps/pep-0255.html}}},
     5946    note        = {\href{http://www.python.org/peps/pep-0255.html}{http://\-www.python.org/\-peps/\-pep-0255.html}},
    58555947}
    58565948
     
    58715963
    58725964@article{Pennello80,
    5873         contributer = {a3moss@uwaterloo.ca},
    5874         author = {Pennello, Tom and DeRemer, Frank and Meyers, Richard},
    5875         title = {A Simplified Operator Identification Scheme for {Ada}},
    5876         journal = {SIGPLAN Notices},
    5877         issue_date = {July-August 1980},
    5878         volume = {15},
    5879         number = {7 and 8},
    5880         month = jul,
    5881         year = {1980},
    5882         issn = {0362-1340},
    5883         pages = {82--87},
    5884         numpages = {6},
    5885         url = {http://doi.acm.org/10.1145/947680.947688},
    5886         doi = {10.1145/947680.947688},
    5887         publisher = {ACM},
    5888         address = {New York, NY, USA},
     5965    contributer = {a3moss@uwaterloo.ca},
     5966    author      = {Pennello, Tom and DeRemer, Frank and Meyers, Richard},
     5967    title       = {A Simplified Operator Identification Scheme for {Ada}},
     5968    journal     = {SIGPLAN Notices},
     5969    issue_date  = {July-August 1980},
     5970    volume      = {15},
     5971    number      = {7 and 8},
     5972    month       = jul,
     5973    year        = {1980},
     5974    issn        = {0362-1340},
     5975    pages       = {82--87},
     5976    numpages    = {6},
     5977    url         = {http://doi.acm.org/10.1145/947680.947688},
     5978    doi         = {10.1145/947680.947688},
     5979    publisher   = {ACM},
     5980    address     = {New York, NY, USA},
    58895981}
    58905982
     
    59276019    year        = {1980},
    59286020    address     = {Lund, Sweden},
    5929     edition     = {second},
     6021    edition     = {2nd},
    59306022}
    59316023
    59326024@book{Simula67,
    5933     author      = "O-J Dahl and B. Myhrhaug and K. Nygaard",
    5934     address     = "Oslo Norway",
     6025    author      = {O-J Dahl and B. Myhrhaug and K. Nygaard},
     6026    title       = {Simula67 Common Base Language},
    59356027    month       = oct,
    59366028    year        = 1970,
    5937     publisher   = "Norwegian Computing Center",
    5938     title       = "Simula67 Common Base Language"
     6029    publisher   = {Norwegian Com\-puting Center},
     6030    address     = {Oslo Norway},
    59396031}
    59406032
     
    59456037    title       = {Smalltalk-80: The Language and its Implementation},
    59466038    publisher   = {Addison-Wesley},
     6039    address     = {Reading},
    59476040    year        = 1983
    59486041}
     
    59666059    author      = {R. E. Griswold and J. F. Poage and I. P. Polonsky},
    59676060    title       = {The SNOBOL4 Programming Language},
    5968     edition     = {second},
     6061    edition     = {2nd},
    59696062    publisher   = {Prentice-Hall},
     6063    address     = {Englewood Cliffs},
    59706064    year        = 1971,
    59716065}
     
    60736167    author      = {R. H. Campbell and A. N. Habermann},
    60746168    title       = {The Specification of Process Synchronization by Path Expressions},
    6075     publisher   = {Springer-Verlag},
     6169    publisher   = {Springer},
    60766170    year        = 1974,
    60776171    volume      = 16,
     
    61176211    title       = {A Standard {ML} Compiler},
    61186212    booktitle   = {Functional Programming Languages and Computer Architecture},
    6119     publisher   = {Springer-Verlag},
     6213    publisher   = {Springer},
    61206214    series      = {Lecture Notes in Computer Science},
    61216215    volume      = 274,
     
    61726266    title       = {Structured Concurrent Programming with Operating System Applications},
    61736267    publisher   = {Addison-Wesley},
     6268    address     = {Boston},
    61746269    year        = 1978,
    61756270}
     
    63206415    author      = {Gadi Taubenfeld},
    63216416    title       = {Synchronization Algorithms and Concurrent Programming},
    6322     publisher   = {Pearson/Prentice Hall},
     6417    publisher   = {Pearson/Prentice-Hall},
     6418    address     = {Harlow, England},
    63236419    year        = 2006,
    63246420}
     
    63806476    author      = {Andrew Birrell and Mark R. Brown and Luca Cardelli and Jim Donahue and Lucille Glassman and John Gutag and Jim Harning and Bill Kalsow and Roy Levin and Greg Nelson},
    63816477    title       = {Systems Programming with Modula-3},
    6382     publisher   = {Prentice-Hall, Inc.},
     6478    publisher   = {Prentice-Hall},
     6479    address     = {Englewood Cliffs},
    63836480    year        = 1991,
    6384     series      = {Prentice Hall Series in Innovative Technology}
     6481    series      = {Prentice-Hall Series in Innovative Technology}
    63856482}
    63866483
     
    64646561    pages       = {408-423},
    64656562    editor      = {B. Robinet},
    6466     publisher   = {Springer-Verlag},
     6563    publisher   = {Springer},
    64676564    note        = {Lecture Notes in Computer Science, v. 19},
    64686565    abstract    = {
     
    65466643    publisher   = {Holt Software Associates Inc.},
    65476644    year        = 1992,
    6548     edition     = {third},
     6645    edition     = {3rd},
    65496646}
    65506647
     
    65666663    title       = {Tutorial: Programming Language Design},
    65676664    publisher   = {Computer Society Press},
     6665    address     = {Los Alamitos},
    65686666    year        = 1980
    65696667}
     
    66356733% U
    66366734
    6637 @unpublished{uC++book,
    6638     keywords    = {control structure, concurrency},
     6735@book{uC++book,
     6736    keywords    = {control structure, concurrency, uC++},
    66396737    contributer = {pabuhr@plg},
    66406738    author      = {Peter A. Buhr},
    6641     title       = {Understanding Control Flow with Concurrent Programming using $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    6642     year        = 1999,
    6643     note        = {Textbook in preparation}
     6739    title       = {Understanding Control Flow: Concurrent Programming using $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     6740    publisher   = {Springer},
     6741    address     = {Switzerland},
     6742    year        = 2016,
    66446743}
    66456744
     
    66646763    booktitle   = {Proceedings of the International Workshop on Memory Management},
    66656764    location    = {St. Malo, France},
    6666     publisher   = {Springer-Verlag},
     6765    publisher   = {Springer},
    66676766    series      = {Lecture Notes in Computer Science},
    66686767    volume      = 637,
     
    67886887    title       = {VAX-11 Architecture Reference Manual},
    67896888    publisher   = {Digital Press},
     6889    address     = {Bedford},
    67906890    month       = may,
    67916891    year        = 1982,
     
    67966896    title       = {{VAX/VMS} Internals and Data Structures Version 4.4},
    67976897    publisher   = {Digital Press},
     6898    address     = {Bedford},
    67986899    year        = 1988,
    67996900}
     
    68056906    title       = {Verifying a Simplification of Mutual Exclusion by {L}ycklama--{H}adzilacos},
    68066907    journal     = {Acta Informatica},
    6807     publisher   = {Springer-Verlag},
     6908    publisher   = {Springer},
     6909    address     = {New York},
    68086910    year        = {2013},
    68096911    volume      = {50},
     
    68716973    month       = jun,
    68726974    year        = 1985,
    6873     note        = {\textsf{http://www.hpl.hp.com/\-techreports/\-tandem/\-TR-85.7.pdf}},
     6975    note        = {\href{http://www.hpl.hp.com/techreports/tandem/TR-85.7.pdf}{http://www.hpl.hp.com/\-techreports/\-tandem/\-TR-85.7.pdf}},
    68746976}
    68756977
  • doc/user/user.tex

    r40744af8 rf51aefb  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Sun Aug 14 08:23:06 2016
    14 %% Update Count     : 1323
     13%% Last Modified On : Tue Oct 25 23:03:59 2016
     14%% Update Count     : 1357
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    3333\usepackage{textcomp}
    3434\usepackage[latin1]{inputenc}
     35
    3536\usepackage{fullpage,times,comment}
    3637\usepackage{epic,eepic}
     
    325326\begin{description}
    326327\item
    327 \Indexc{__CFA__}\index{preprocessor variables!__CFA__@{©__CFA__©}}
    328 is always available during preprocessing and its value is the current major \Index{version number} of \CFA.\footnote{
     328\Indexc{__CFA_MAJOR__}\index{preprocessor variables!__CFA__@{©__CFA__©}}
     329is available during preprocessing and its value is the major \Index{version number} of \CFA.\footnote{
    329330The C preprocessor allows only integer values in a preprocessor variable so a value like ``\Version'' is not allowed.
    330331Hence, the need to have three variables for the major, minor and patch version number.}
     
    332333\item
    333334\Indexc{__CFA_MINOR__}\index{preprocessor variables!__CFA_MINOR__@{©__CFA_MINOR__©}}
    334 is always available during preprocessing and its value is the current minor \Index{version number} of \CFA.
     335is available during preprocessing and its value is the minor \Index{version number} of \CFA.
    335336
    336337\item
    337338\Indexc{__CFA_PATCH__}\index{preprocessor variables!__CFA_PATCH__@©__CFA_PATCH__©}
    338 is always available during preprocessing and its value is the current patch \Index{version number} of \CFA.
    339 
    340 \item
     339is available during preprocessing and its value is the patch \Index{level number} of \CFA.
     340
     341\item
     342\Indexc{__CFA__}\index{preprocessor variables!__CFA__@©__CFA__©} and
    341343\Indexc{__CFORALL__}\index{preprocessor variables!__CFORALL__@©__CFORALL__©}
    342 is always available during preprocessing and has no value.
     344are always available during preprocessing and have no value.
    343345\end{description}
    344346These preprocessor variables allow conditional compilation of programs that must work differently in these situations.
     
    18531855case 1:  case 2:  case 3: ...
    18541856\end{lstlisting}
    1855 still work.
     1857still works.
    18561858Nevertheless, reversing the default action would have a non-trivial effect on case actions that compound, such as the above example of processing shell arguments.
    1857 <<<<<<< HEAD
    1858 Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthru©, \eg:
    1859 =======
    18601859Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthrough©/©fallthru©, e.g.:
    1861 >>>>>>> 080615890f586cb9954c252b55cab47f52c25758
    18621860\begin{lstlisting}
    18631861®choose® ( i ) {
  • src/ControlStruct/LabelFixer.h

    r40744af8 rf51aefb  
    2626namespace ControlStruct {
    2727        /// normalizes label definitions and generates multi-level exit labels
    28         class LabelFixer : public Visitor {
     28        class LabelFixer final : public Visitor {
    2929                typedef Visitor Parent;
    3030          public:
     
    3333                std::map < Label, Statement * > *resolveJumps() throw ( SemanticError );
    3434
     35                using Visitor::visit;
     36
    3537                // Declarations
    36                 virtual void visit( FunctionDecl *functionDecl );
     38                virtual void visit( FunctionDecl *functionDecl ) override;
    3739
    3840                // Statements
    3941                void visit( Statement *stmt );
    4042
    41                 virtual void visit( CompoundStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    42                 virtual void visit( NullStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    43                 virtual void visit( ExprStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    44                 virtual void visit( IfStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    45                 virtual void visit( WhileStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    46                 virtual void visit( ForStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    47                 virtual void visit( SwitchStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    48                 virtual void visit( CaseStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    49                 virtual void visit( ReturnStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    50                 virtual void visit( TryStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    51                 virtual void visit( CatchStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    52                 virtual void visit( DeclStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    53                 virtual void visit( BranchStmt *branchStmt );
    54                 virtual void visit( UntypedExpr *untyped );
     43                virtual void visit( CompoundStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     44                virtual void visit( NullStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     45                virtual void visit( ExprStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     46                virtual void visit( IfStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     47                virtual void visit( WhileStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     48                virtual void visit( ForStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     49                virtual void visit( SwitchStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     50                virtual void visit( CaseStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     51                virtual void visit( ReturnStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     52                virtual void visit( TryStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     53                virtual void visit( CatchStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     54                virtual void visit( DeclStmt *stmt ) override { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     55                virtual void visit( BranchStmt *branchStmt ) override;
     56                virtual void visit( UntypedExpr *untyped ) override;
    5557
    5658                Label setLabelsDef( std::list< Label > &, Statement *definition );
  • src/ControlStruct/LabelTypeChecker.cc

    r40744af8 rf51aefb  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // LabelTypeChecker.cc -- 
     7// LabelTypeChecker.cc --
    88//
    99// Author           : Rodolfo G. Esteves
     
    2828                assert( untypedExpr != 0 );
    2929                NameExpr *fname;
    30                 if ( ((fname = dynamic_cast<NameExpr *>(untypedExpr->get_function())) != 0) 
     30                if ( ((fname = dynamic_cast<NameExpr *>(untypedExpr->get_function())) != 0)
    3131                         && fname->get_name() == std::string("&&") )
    3232                        std::cerr << "Taking the label of an address." << std::endl;
     
    5858
    5959                NameExpr *name;
    60                 if ( ((name = dynamic_cast<NameExpr *>(target)) == 0) )
     60                if ( (name = dynamic_cast<NameExpr *>(target)) == 0 )
    6161                        return; // Not a name expression
    62        
     62
    6363                std::list< DeclarationWithType * > interps;
    6464                index.lookupId(name->get_name(), interps);
  • src/GenPoly/Box.cc

    r40744af8 rf51aefb  
    6464
    6565                /// Adds layout-generation functions to polymorphic types
    66                 class LayoutFunctionBuilder : public DeclMutator {
     66                class LayoutFunctionBuilder final : public DeclMutator {
    6767                        unsigned int functionNesting;  // current level of nested functions
    6868                public:
    6969                        LayoutFunctionBuilder() : functionNesting( 0 ) {}
    7070
    71                         virtual DeclarationWithType *mutate( FunctionDecl *functionDecl );
    72                         virtual Declaration *mutate( StructDecl *structDecl );
    73                         virtual Declaration *mutate( UnionDecl *unionDecl );
     71                        using DeclMutator::mutate;
     72                        virtual DeclarationWithType *mutate( FunctionDecl *functionDecl ) override;
     73                        virtual Declaration *mutate( StructDecl *structDecl ) override;
     74                        virtual Declaration *mutate( UnionDecl *unionDecl ) override;
    7475                };
    7576
    7677                /// Replaces polymorphic return types with out-parameters, replaces calls to polymorphic functions with adapter calls as needed, and adds appropriate type variables to the function call
    77                 class Pass1 : public PolyMutator {
     78                class Pass1 final : public PolyMutator {
    7879                  public:
    7980                        Pass1();
    80                         virtual Expression *mutate( ApplicationExpr *appExpr );
    81                         virtual Expression *mutate( AddressExpr *addrExpr );
    82                         virtual Expression *mutate( UntypedExpr *expr );
    83                         virtual DeclarationWithType* mutate( FunctionDecl *functionDecl );
    84                         virtual TypeDecl *mutate( TypeDecl *typeDecl );
    85                         virtual Expression *mutate( CommaExpr *commaExpr );
    86                         virtual Expression *mutate( ConditionalExpr *condExpr );
    87                         virtual Statement * mutate( ReturnStmt *returnStmt );
    88                         virtual Type *mutate( PointerType *pointerType );
    89                         virtual Type * mutate( FunctionType *functionType );
    90 
    91                         virtual void doBeginScope();
    92                         virtual void doEndScope();
     81
     82                        using PolyMutator::mutate;
     83                        virtual Expression *mutate( ApplicationExpr *appExpr ) override;
     84                        virtual Expression *mutate( AddressExpr *addrExpr ) override;
     85                        virtual Expression *mutate( UntypedExpr *expr ) override;
     86                        virtual DeclarationWithType* mutate( FunctionDecl *functionDecl ) override;
     87                        virtual TypeDecl *mutate( TypeDecl *typeDecl ) override;
     88                        virtual Expression *mutate( CommaExpr *commaExpr ) override;
     89                        virtual Expression *mutate( ConditionalExpr *condExpr ) override;
     90                        virtual Statement * mutate( ReturnStmt *returnStmt ) override;
     91                        virtual Type *mutate( PointerType *pointerType ) override;
     92                        virtual Type * mutate( FunctionType *functionType ) override;
     93
     94                        virtual void doBeginScope() override;
     95                        virtual void doEndScope() override;
    9396                  private:
    9497                        /// Pass the extra type parameters from polymorphic generic arguments or return types into a function application
     
    135138                /// * Moves polymorphic returns in function types to pointer-type parameters
    136139                /// * adds type size and assertion parameters to parameter lists
    137                 class Pass2 : public PolyMutator {
     140                class Pass2 final : public PolyMutator {
    138141                  public:
    139142                        template< typename DeclClass >
    140143                        DeclClass *handleDecl( DeclClass *decl, Type *type );
    141                         virtual DeclarationWithType *mutate( FunctionDecl *functionDecl );
    142                         virtual ObjectDecl *mutate( ObjectDecl *objectDecl );
    143                         virtual TypeDecl *mutate( TypeDecl *typeDecl );
    144                         virtual TypedefDecl *mutate( TypedefDecl *typedefDecl );
    145                         virtual Type *mutate( PointerType *pointerType );
    146                         virtual Type *mutate( FunctionType *funcType );
     144
     145                        using PolyMutator::mutate;
     146                        virtual DeclarationWithType *mutate( FunctionDecl *functionDecl ) override;
     147                        virtual ObjectDecl *mutate( ObjectDecl *objectDecl ) override;
     148                        virtual TypeDecl *mutate( TypeDecl *typeDecl ) override;
     149                        virtual TypedefDecl *mutate( TypedefDecl *typedefDecl ) override;
     150                        virtual Type *mutate( PointerType *pointerType ) override;
     151                        virtual Type *mutate( FunctionType *funcType ) override;
    147152
    148153                  private:
     
    156161                /// * Calculates polymorphic offsetof expressions from offset array
    157162                /// * Inserts dynamic calculation of polymorphic type layouts where needed
    158                 class PolyGenericCalculator : public PolyMutator {
     163                class PolyGenericCalculator final : public PolyMutator {
    159164                public:
    160165                        typedef PolyMutator Parent;
     
    163168                        template< typename DeclClass >
    164169                        DeclClass *handleDecl( DeclClass *decl, Type *type );
    165                         virtual DeclarationWithType *mutate( FunctionDecl *functionDecl );
    166                         virtual ObjectDecl *mutate( ObjectDecl *objectDecl );
    167                         virtual TypedefDecl *mutate( TypedefDecl *objectDecl );
    168                         virtual TypeDecl *mutate( TypeDecl *objectDecl );
    169                         virtual Statement *mutate( DeclStmt *declStmt );
    170                         virtual Type *mutate( PointerType *pointerType );
    171                         virtual Type *mutate( FunctionType *funcType );
    172                         virtual Expression *mutate( MemberExpr *memberExpr );
    173                         virtual Expression *mutate( SizeofExpr *sizeofExpr );
    174                         virtual Expression *mutate( AlignofExpr *alignofExpr );
    175                         virtual Expression *mutate( OffsetofExpr *offsetofExpr );
    176                         virtual Expression *mutate( OffsetPackExpr *offsetPackExpr );
    177 
    178                         virtual void doBeginScope();
    179                         virtual void doEndScope();
     170                        virtual DeclarationWithType *mutate( FunctionDecl *functionDecl ) override;
     171                        virtual ObjectDecl *mutate( ObjectDecl *objectDecl ) override;
     172                        virtual TypedefDecl *mutate( TypedefDecl *objectDecl ) override;
     173                        virtual TypeDecl *mutate( TypeDecl *objectDecl ) override;
     174                        virtual Statement *mutate( DeclStmt *declStmt ) override;
     175                        virtual Type *mutate( PointerType *pointerType ) override;
     176                        virtual Type *mutate( FunctionType *funcType ) override;
     177                        virtual Expression *mutate( MemberExpr *memberExpr ) override;
     178                        virtual Expression *mutate( SizeofExpr *sizeofExpr ) override;
     179                        virtual Expression *mutate( AlignofExpr *alignofExpr ) override;
     180                        virtual Expression *mutate( OffsetofExpr *offsetofExpr ) override;
     181                        virtual Expression *mutate( OffsetPackExpr *offsetPackExpr ) override;
     182
     183                        virtual void doBeginScope() override;
     184                        virtual void doEndScope() override;
    180185
    181186                private:
     
    197202
    198203                /// Replaces initialization of polymorphic values with alloca, declaration of dtype/ftype with appropriate void expression, and sizeof expressions of polymorphic types with the proper variable
    199                 class Pass3 : public PolyMutator {
     204                class Pass3 final : public PolyMutator {
    200205                  public:
    201206                        template< typename DeclClass >
    202207                        DeclClass *handleDecl( DeclClass *decl, Type *type );
    203                         virtual DeclarationWithType *mutate( FunctionDecl *functionDecl );
    204                         virtual ObjectDecl *mutate( ObjectDecl *objectDecl );
    205                         virtual TypedefDecl *mutate( TypedefDecl *objectDecl );
    206                         virtual TypeDecl *mutate( TypeDecl *objectDecl );
    207                         virtual Type *mutate( PointerType *pointerType );
    208                         virtual Type *mutate( FunctionType *funcType );
     208
     209                        using PolyMutator::mutate;
     210                        virtual DeclarationWithType *mutate( FunctionDecl *functionDecl ) override;
     211                        virtual ObjectDecl *mutate( ObjectDecl *objectDecl ) override;
     212                        virtual TypedefDecl *mutate( TypedefDecl *objectDecl ) override;
     213                        virtual TypeDecl *mutate( TypeDecl *objectDecl ) override;
     214                        virtual Type *mutate( PointerType *pointerType ) override;
     215                        virtual Type *mutate( FunctionType *funcType ) override;
    209216                  private:
    210217                };
  • src/GenPoly/InstantiateGeneric.cc

    r40744af8 rf51aefb  
    147147
    148148        /// Mutator pass that replaces concrete instantiations of generic types with actual struct declarations, scoped appropriately
    149         class GenericInstantiator : public DeclMutator {
     149        class GenericInstantiator final : public DeclMutator {
    150150                /// Map of (generic type, parameter list) pairs to concrete type instantiations
    151151                InstantiationMap< AggregateDecl, AggregateDecl > instantiations;
     
    158158                GenericInstantiator() : DeclMutator(), instantiations(), dtypeStatics(), typeNamer("_conc_") {}
    159159
    160                 virtual Type* mutate( StructInstType *inst );
    161                 virtual Type* mutate( UnionInstType *inst );
    162 
    163                 virtual void doBeginScope();
    164                 virtual void doEndScope();
     160                using DeclMutator::mutate;
     161                virtual Type* mutate( StructInstType *inst ) override;
     162                virtual Type* mutate( UnionInstType *inst ) override;
     163
     164                virtual void doBeginScope() override;
     165                virtual void doEndScope() override;
    165166        private:
    166167                /// Wrap instantiation lookup for structs
  • src/GenPoly/Specialize.cc

    r40744af8 rf51aefb  
    3636        const std::list<Label> noLabels;
    3737
    38         class Specialize : public PolyMutator {
     38        class Specialize final : public PolyMutator {
    3939          public:
    4040                Specialize( std::string paramPrefix = "_p" );
    4141
    42                 virtual Expression * mutate( ApplicationExpr *applicationExpr );
    43                 virtual Expression * mutate( AddressExpr *castExpr );
    44                 virtual Expression * mutate( CastExpr *castExpr );
     42                using PolyMutator::mutate;
     43                virtual Expression * mutate( ApplicationExpr *applicationExpr ) override;
     44                virtual Expression * mutate( AddressExpr *castExpr ) override;
     45                virtual Expression * mutate( CastExpr *castExpr ) override;
    4546                // virtual Expression * mutate( LogicalExpr *logicalExpr );
    4647                // virtual Expression * mutate( ConditionalExpr *conditionalExpr );
  • src/InitTweak/FixInit.cc

    r40744af8 rf51aefb  
    5050                const std::list<Expression*> noDesignators;
    5151
    52                 class InsertImplicitCalls : public GenPoly::PolyMutator {
     52                class InsertImplicitCalls final : public GenPoly::PolyMutator {
    5353                public:
    5454                        /// wrap function application expressions as ImplicitCopyCtorExpr nodes so that it is easy to identify which
     
    5656                        static void insert( std::list< Declaration * > & translationUnit );
    5757
    58                         virtual Expression * mutate( ApplicationExpr * appExpr );
    59                 };
    60 
    61                 class ResolveCopyCtors : public SymTab::Indexer {
     58                        using GenPoly::PolyMutator::mutate;
     59                        virtual Expression * mutate( ApplicationExpr * appExpr ) override;
     60                };
     61
     62                class ResolveCopyCtors final : public SymTab::Indexer {
    6263                public:
    6364                        /// generate temporary ObjectDecls for each argument and return value of each ImplicitCopyCtorExpr,
     
    6667                        static void resolveImplicitCalls( std::list< Declaration * > & translationUnit );
    6768
    68                         virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr );
     69                        using SymTab::Indexer::visit;
     70                        virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr ) override;
    6971
    7072                        /// create and resolve ctor/dtor expression: fname(var, [cpArg])
     
    8284                        using Parent::visit;
    8385                        typedef std::set< ObjectDecl * > ObjectSet;
    84                         virtual void visit( CompoundStmt *compoundStmt );
    85                         virtual void visit( DeclStmt *stmt );
     86                        virtual void visit( CompoundStmt *compoundStmt ) override;
     87                        virtual void visit( DeclStmt *stmt ) override;
    8688                  protected:
    8789                        ObjectSet curVars;
     
    103105                }
    104106
    105                 class LabelFinder : public ObjDeclCollector {
     107                class LabelFinder final : public ObjDeclCollector {
    106108                  public:
    107109                        typedef ObjDeclCollector Parent;
     
    117119                        // subclasses are added, there is only one place that the code has to be updated, rather than ensure that
    118120                        // every specialized class knows about every new kind of statement that might be added.
    119                         virtual void visit( CompoundStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    120                         virtual void visit( ExprStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    121                         virtual void visit( AsmStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    122                         virtual void visit( IfStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    123                         virtual void visit( WhileStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    124                         virtual void visit( ForStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    125                         virtual void visit( SwitchStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    126                         virtual void visit( CaseStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    127                         virtual void visit( BranchStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    128                         virtual void visit( ReturnStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    129                         virtual void visit( TryStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    130                         virtual void visit( CatchStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    131                         virtual void visit( FinallyStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    132                         virtual void visit( NullStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    133                         virtual void visit( DeclStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    134                         virtual void visit( ImplicitCtorDtorStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
    135                 };
    136 
    137                 class InsertDtors : public ObjDeclCollector {
     121                        using Parent::visit;
     122                        virtual void visit( CompoundStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     123                        virtual void visit( ExprStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     124                        virtual void visit( AsmStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     125                        virtual void visit( IfStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     126                        virtual void visit( WhileStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     127                        virtual void visit( ForStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     128                        virtual void visit( SwitchStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     129                        virtual void visit( CaseStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     130                        virtual void visit( BranchStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     131                        virtual void visit( ReturnStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     132                        virtual void visit( TryStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     133                        virtual void visit( CatchStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     134                        virtual void visit( FinallyStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     135                        virtual void visit( NullStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     136                        virtual void visit( DeclStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     137                        virtual void visit( ImplicitCtorDtorStmt *stmt ) override { handleStmt( stmt ); return Parent::visit( stmt ); }
     138                };
     139
     140                class InsertDtors final : public ObjDeclCollector {
    138141                public:
    139142                        /// insert destructor calls at the appropriate places.  must happen before CtorInit nodes are removed
     
    147150                        InsertDtors( LabelFinder & finder ) : labelVars( finder.vars ) {}
    148151
    149                         virtual void visit( ObjectDecl * objDecl );
    150 
    151                         virtual void visit( CompoundStmt * compoundStmt );
    152                         virtual void visit( ReturnStmt * returnStmt );
    153                         virtual void visit( BranchStmt * stmt );
     152                        using Parent::visit;
     153
     154                        virtual void visit( ObjectDecl * objDecl ) override;
     155
     156                        virtual void visit( CompoundStmt * compoundStmt ) override;
     157                        virtual void visit( ReturnStmt * returnStmt ) override;
     158                        virtual void visit( BranchStmt * stmt ) override;
    154159                private:
    155160                        void handleGoto( BranchStmt * stmt );
     
    159164                };
    160165
    161                 class FixInit : public GenPoly::PolyMutator {
     166                class FixInit final : public GenPoly::PolyMutator {
    162167                  public:
    163168                        /// expand each object declaration to use its constructor after it is declared.
    164169                        static void fixInitializers( std::list< Declaration * > &translationUnit );
    165170
    166                         virtual DeclarationWithType * mutate( ObjectDecl *objDecl );
     171                        using GenPoly::PolyMutator::mutate;
     172                        virtual DeclarationWithType * mutate( ObjectDecl *objDecl ) override;
    167173
    168174                        std::list< Declaration * > staticDtorDecls;
    169175                };
    170176
    171                 class FixCopyCtors : public GenPoly::PolyMutator {
     177                class FixCopyCtors final : public GenPoly::PolyMutator {
    172178                  public:
    173179                        /// expand ImplicitCopyCtorExpr nodes into the temporary declarations, copy constructors, call expression,
     
    175181                        static void fixCopyCtors( std::list< Declaration * > &translationUnit );
    176182
    177                         virtual Expression * mutate( ImplicitCopyCtorExpr * impCpCtorExpr );
    178                 };
    179 
    180                 class GenStructMemberCalls : public SymTab::Indexer {
     183                        using GenPoly::PolyMutator::mutate;
     184                        virtual Expression * mutate( ImplicitCopyCtorExpr * impCpCtorExpr ) override;
     185                };
     186
     187                class GenStructMemberCalls final : public SymTab::Indexer {
    181188                  public:
    182189                        typedef Indexer Parent;
     
    186193                        static void generate( std::list< Declaration * > & translationUnit );
    187194
    188                         virtual void visit( FunctionDecl * funcDecl );
    189 
    190                         virtual void visit( MemberExpr * memberExpr );
    191                         virtual void visit( ApplicationExpr * appExpr );
     195                        using Parent::visit;
     196
     197                        virtual void visit( FunctionDecl * funcDecl ) override;
     198
     199                        virtual void visit( MemberExpr * memberExpr ) override;
     200                        virtual void visit( ApplicationExpr * appExpr ) override;
    192201
    193202                        SemanticError errors;
     
    207216                // resolve UntypedExprs that are found within newly
    208217                // generated constructor/destructor calls
    209                 class MutatingResolver : public Mutator {
     218                class MutatingResolver final : public Mutator {
    210219                  public:
    211220                        MutatingResolver( SymTab::Indexer & indexer ) : indexer( indexer ) {}
    212221
    213                         virtual DeclarationWithType* mutate( ObjectDecl *objectDecl );
    214 
    215                         virtual Expression* mutate( UntypedExpr *untypedExpr );
    216                         private:
     222                        using Mutator::mutate;
     223                        virtual DeclarationWithType* mutate( ObjectDecl *objectDecl ) override;
     224                        virtual Expression* mutate( UntypedExpr *untypedExpr ) override;
     225
     226                  private:
    217227                        SymTab::Indexer & indexer;
    218228                };
    219229
    220                 class FixCtorExprs : public GenPoly::DeclMutator {
     230                class FixCtorExprs final : public GenPoly::DeclMutator {
    221231                  public:
    222232                        /// expands ConstructorExpr nodes into comma expressions, using a temporary for the first argument
    223233                        static void fix( std::list< Declaration * > & translationUnit );
    224234
    225                         virtual Expression * mutate( ConstructorExpr * ctorExpr );
     235                        using GenPoly::DeclMutator::mutate;
     236                        virtual Expression * mutate( ConstructorExpr * ctorExpr ) override;
    226237                };
    227238        } // namespace
  • src/InitTweak/GenInit.cc

    r40744af8 rf51aefb  
    3636        }
    3737
    38         class ReturnFixer : public GenPoly::PolyMutator {
     38        class ReturnFixer final : public GenPoly::PolyMutator {
    3939          public:
    4040                /// consistently allocates a temporary variable for the return value
     
    4545                ReturnFixer();
    4646
    47                 virtual DeclarationWithType * mutate( FunctionDecl *functionDecl );
    48 
    49                 virtual Statement * mutate( ReturnStmt * returnStmt );
     47                using GenPoly::PolyMutator::mutate;
     48                virtual DeclarationWithType * mutate( FunctionDecl *functionDecl ) override;
     49                virtual Statement * mutate( ReturnStmt * returnStmt ) override;
    5050
    5151          protected:
     
    5555        };
    5656
    57         class CtorDtor : public GenPoly::PolyMutator {
     57        class CtorDtor final : public GenPoly::PolyMutator {
    5858          public:
    5959                typedef GenPoly::PolyMutator Parent;
     
    6565                static void generateCtorDtor( std::list< Declaration * > &translationUnit );
    6666
    67                 virtual DeclarationWithType * mutate( ObjectDecl * );
    68                 virtual DeclarationWithType * mutate( FunctionDecl *functionDecl );
     67                virtual DeclarationWithType * mutate( ObjectDecl * ) override;
     68                virtual DeclarationWithType * mutate( FunctionDecl *functionDecl ) override;
    6969                // should not traverse into any of these declarations to find objects
    7070                // that need to be constructed or destructed
    71                 virtual Declaration* mutate( StructDecl *aggregateDecl );
    72                 virtual Declaration* mutate( UnionDecl *aggregateDecl ) { return aggregateDecl; }
    73                 virtual Declaration* mutate( EnumDecl *aggregateDecl ) { return aggregateDecl; }
    74                 virtual Declaration* mutate( TraitDecl *aggregateDecl ) { return aggregateDecl; }
    75                 virtual TypeDecl* mutate( TypeDecl *typeDecl ) { return typeDecl; }
    76                 virtual Declaration* mutate( TypedefDecl *typeDecl ) { return typeDecl; }
    77 
    78                 virtual Type * mutate( FunctionType *funcType ) { return funcType; }
    79 
    80                 virtual CompoundStmt * mutate( CompoundStmt * compoundStmt );
     71                virtual Declaration* mutate( StructDecl *aggregateDecl ) override;
     72                virtual Declaration* mutate( UnionDecl *aggregateDecl ) override { return aggregateDecl; }
     73                virtual Declaration* mutate( EnumDecl *aggregateDecl ) override { return aggregateDecl; }
     74                virtual Declaration* mutate( TraitDecl *aggregateDecl ) override { return aggregateDecl; }
     75                virtual TypeDecl* mutate( TypeDecl *typeDecl ) override { return typeDecl; }
     76                virtual Declaration* mutate( TypedefDecl *typeDecl ) override { return typeDecl; }
     77
     78                virtual Type * mutate( FunctionType *funcType ) override { return funcType; }
     79
     80                virtual CompoundStmt * mutate( CompoundStmt * compoundStmt ) override;
    8181
    8282          private:
     
    9191        };
    9292
    93         class HoistArrayDimension : public GenPoly::DeclMutator {
     93        class HoistArrayDimension final : public GenPoly::DeclMutator {
    9494          public:
    9595                typedef GenPoly::DeclMutator Parent;
     
    101101
    102102          private:
    103                 virtual DeclarationWithType * mutate( ObjectDecl * objectDecl );
    104                 virtual DeclarationWithType * mutate( FunctionDecl *functionDecl );
     103                using Parent::mutate;
     104
     105                virtual DeclarationWithType * mutate( ObjectDecl * objectDecl ) override;
     106                virtual DeclarationWithType * mutate( FunctionDecl *functionDecl ) override;
    105107                // should not traverse into any of these declarations to find objects
    106108                // that need to be constructed or destructed
    107                 virtual Declaration* mutate( StructDecl *aggregateDecl ) { return aggregateDecl; }
    108                 virtual Declaration* mutate( UnionDecl *aggregateDecl ) { return aggregateDecl; }
    109                 virtual Declaration* mutate( EnumDecl *aggregateDecl ) { return aggregateDecl; }
    110                 virtual Declaration* mutate( TraitDecl *aggregateDecl ) { return aggregateDecl; }
    111                 virtual TypeDecl* mutate( TypeDecl *typeDecl ) { return typeDecl; }
    112                 virtual Declaration* mutate( TypedefDecl *typeDecl ) { return typeDecl; }
    113 
    114                 virtual Type* mutate( FunctionType *funcType ) { return funcType; }
     109                virtual Declaration* mutate( StructDecl *aggregateDecl ) override { return aggregateDecl; }
     110                virtual Declaration* mutate( UnionDecl *aggregateDecl ) override { return aggregateDecl; }
     111                virtual Declaration* mutate( EnumDecl *aggregateDecl ) override { return aggregateDecl; }
     112                virtual Declaration* mutate( TraitDecl *aggregateDecl ) override { return aggregateDecl; }
     113                virtual TypeDecl* mutate( TypeDecl *typeDecl ) override { return typeDecl; }
     114                virtual Declaration* mutate( TypedefDecl *typeDecl ) override { return typeDecl; }
     115
     116                virtual Type* mutate( FunctionType *funcType ) override { return funcType; }
    115117
    116118                void hoist( Type * type );
  • src/InitTweak/InitTweak.h

    r40744af8 rf51aefb  
    100100
    101101                class ExpanderImpl;
     102                typedef std::list< Expression * > IndexList;
    102103        private:
    103104                std::shared_ptr< ExpanderImpl > expander;
     
    105106
    106107                // invariant: list of size 2N (elements come in pairs [index, dimension])
    107                 typedef std::list< Expression * > IndexList;
    108108                IndexList indices;
    109109        };
  • src/Makefile.am

    r40744af8 rf51aefb  
    66## file "LICENCE" distributed with Cforall.
    77##
    8 ## Makefile.am -- 
     8## Makefile.am --
    99##
    1010## Author           : Peter A. Buhr
    1111## Created On       : Sun May 31 08:51:46 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Sat Sep 24 15:03:52 2016
    14 ## Update Count     : 73
     13## Last Modified On : Thu Oct 27 20:41:25 2016
     14## Update Count     : 75
    1515###############################################################################
    1616
     
    4141driver_cfa_cpp_SOURCES = ${SRC}
    4242driver_cfa_cpp_LDADD = ${LEXLIB} -ldl                   # yywrap
    43 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -rdynamic -I${abs_top_srcdir}/src/include
     43driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT
     44driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic
    4445
    4546MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}}
  • src/Makefile.in

    r40744af8 rf51aefb  
    197197driver_cfa_cpp_DEPENDENCIES = $(am__DEPENDENCIES_1)
    198198driver_cfa_cpp_LINK = $(CXXLD) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) \
    199         $(AM_LDFLAGS) $(LDFLAGS) -o $@
     199        $(driver_cfa_cpp_LDFLAGS) $(LDFLAGS) -o $@
    200200DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    201201depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
     
    417417driver_cfa_cpp_SOURCES = ${SRC}
    418418driver_cfa_cpp_LDADD = ${LEXLIB} -ldl                   # yywrap
    419 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -rdynamic -I${abs_top_srcdir}/src/include
     419driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT
     420driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic
    420421all: $(BUILT_SOURCES)
    421422        $(MAKE) $(AM_MAKEFLAGS) all-am
  • src/Parser/DeclarationNode.cc

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Sep 26 22:18:40 2016
    13 // Update Count     : 640
     12// Last Modified On : Mon Oct  3 18:03:08 2016
     13// Update Count     : 651
    1414//
    1515
     
    5656                extension( false ) {
    5757
    58         variable.name = nullptr;
    59         variable.tyClass = DeclarationNode::Otype;
     58//      variable.name = nullptr;
     59        variable.tyClass = NoTypeClass;
    6060        variable.assertions = nullptr;
    6161
    62         attr.name = nullptr;
     62//      attr.name = nullptr;
    6363        attr.expr = nullptr;
    6464        attr.type = nullptr;
     
    6666
    6767DeclarationNode::~DeclarationNode() {
    68         delete attr.name;
     68//      delete attr.name;
    6969        delete attr.expr;
    7070        delete attr.type;
    7171
    72         delete variable.name;
     72//      delete variable.name;
    7373        delete variable.assertions;
    7474
     
    9191        newnode->linkage = linkage;
    9292
    93         newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
     93//      newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
    9494        newnode->variable.tyClass = variable.tyClass;
    9595        newnode->variable.assertions = maybeClone( variable.assertions );
    9696
    97         newnode->attr.name = attr.name ? new string( *attr.name ) : nullptr;
     97//      newnode->attr.name = attr.name ? new string( *attr.name ) : nullptr;
    9898        newnode->attr.expr = maybeClone( attr.expr );
    9999        newnode->attr.type = maybeClone( attr.type );
     
    114114
    115115        if ( linkage != LinkageSpec::Cforall ) {
    116                 os << LinkageSpec::toString( linkage ) << " ";
     116                os << LinkageSpec::linkageName( linkage ) << " ";
    117117        } // if
    118118
     
    283283        DeclarationNode * newnode = new DeclarationNode;
    284284        newnode->type = nullptr;
     285        assert( ! newnode->name );
     286//      newnode->variable.name = name;
     287        newnode->name = name;
    285288        newnode->variable.tyClass = tc;
    286         newnode->variable.name = name;
     289        newnode->variable.assertions = nullptr;
    287290        return newnode;
    288291} // DeclarationNode::newTypeParam
     
    375378        DeclarationNode * newnode = new DeclarationNode;
    376379        newnode->type = nullptr;
    377         newnode->attr.name = name;
     380//      newnode->attr.name = name;
     381        newnode->name = name;
    378382        newnode->attr.expr = expr;
    379383        return newnode;
     
    383387        DeclarationNode * newnode = new DeclarationNode;
    384388        newnode->type = nullptr;
    385         newnode->attr.name = name;
     389//      newnode->attr.name = name;
     390        newnode->name = name;
    386391        newnode->attr.type = type;
    387392        return newnode;
     
    604609
    605610DeclarationNode * DeclarationNode::addAssertions( DeclarationNode * assertions ) {
    606         if ( variable.name ) {
     611        if ( variable.tyClass != NoTypeClass ) {
    607612                if ( variable.assertions ) {
    608613                        variable.assertions->appendList( assertions );
     
    622627                } // if
    623628                break;
    624           // case TypeData::Variable:
    625           //    if ( variable.assertions ) {
    626           //            variable.assertions->appendList( assertions );
    627           //    } else {
    628           //            variable.assertions = assertions;
    629           //    } // if
    630           //    break;
    631629          default:
    632630                assert( false );
     
    938936        if ( ! error.empty() ) throw SemanticError( error + " in declaration of ", this );
    939937
    940         if ( variable.name ) {
     938//      if ( variable.name ) {
     939        if ( variable.tyClass != NoTypeClass ) {
    941940                static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
    942                 TypeDecl * ret = new TypeDecl( *variable.name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
     941//              TypeDecl * ret = new TypeDecl( *variable.name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
     942                TypeDecl * ret = new TypeDecl( *name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
    943943                buildList( variable.assertions, ret->get_assertions() );
    944944                return ret;
     
    960960        assert( type );
    961961
    962         if ( attr.name ) {
    963                 AttrType * ret;
    964                 if ( attr.expr ) {
    965                         ret = new AttrType( buildQualifiers( type ), *attr.name, attr.expr->build() );
    966                 } else {
    967                         assert( attr.type );
    968                         ret = new AttrType( buildQualifiers( type ), *attr.name, attr.type->buildType() );
    969                 } // if
    970                 return ret;
     962        if ( attr.expr ) {
     963//              return new AttrType( buildQualifiers( type ), *attr.name, attr.expr->build() );
     964                return new AttrType( buildQualifiers( type ), *name, attr.expr->build() );
     965        } else if ( attr.type ) {
     966//              return new AttrType( buildQualifiers( type ), *attr.name, attr.type->buildType() );
     967                return new AttrType( buildQualifiers( type ), *name, attr.type->buildType() );
    971968        } // if
    972969
  • src/Parser/InitializerNode.cc

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 13:20:24 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 18:27:02 2016
    13 // Update Count     : 20
     12// Last Modified On : Sat Oct  1 23:09:51 2016
     13// Update Count     : 21
    1414//
    1515
     
    2323
    2424InitializerNode::InitializerNode( ExpressionNode *_expr, bool aggrp, ExpressionNode *des )
    25         : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
     25                : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    2626        if ( aggrp )
    2727                kids = dynamic_cast< InitializerNode * >( get_next() );
     
    3232
    3333InitializerNode::InitializerNode( InitializerNode *init, bool aggrp, ExpressionNode *des )
    34         : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
     34                : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    3535        if ( init != 0 )
    3636                set_last( init );
     
    7979
    8080Initializer *InitializerNode::build() const {
    81         // if ( get_expression() == 0 ) return 0;  // XXX (?)
    82 
    8381        if ( aggregate ) {
    84                 //assert( next_init() != 0 );
    85 
    8682                std::list< Initializer * > initlist;
    8783                buildList< Initializer, InitializerNode >( next_init(), initlist );
  • src/Parser/LinkageSpec.cc

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 13:22:09 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug 21 12:32:53 2016
    13 // Update Count     : 17
     12// Last Modified On : Sun Oct  2 23:16:21 2016
     13// Update Count     : 23
    1414//
    1515
     
    1717#include <string>
    1818#include <cassert>
     19using namespace std;
    1920
    2021#include "LinkageSpec.h"
    2122#include "Common/SemanticError.h"
    2223
    23 LinkageSpec::Spec LinkageSpec::fromString( const std::string &spec ) {
    24         std::unique_ptr<const std::string> guard(&spec);                // allocated by lexer
    25         if ( spec == "\"Cforall\"" ) {
     24LinkageSpec::Spec LinkageSpec::linkageCheck( const string * spec ) {
     25        unique_ptr<const string> guard( spec ); // allocated by lexer
     26        if ( *spec == "\"Cforall\"" ) {
    2627                return Cforall;
    27         } else if ( spec == "\"C\"" ) {
     28        } else if ( *spec == "\"C\"" ) {
    2829                return C;
    2930        } else {
    30                 throw SemanticError( "Invalid linkage specifier " + spec );
     31                throw SemanticError( "Invalid linkage specifier " + *spec );
    3132        } // if
    3233}
    3334
    34 std::string LinkageSpec::toString( LinkageSpec::Spec linkage ) {
    35         assert( linkage >= 0 && linkage < LinkageSpec::NoOfSpecs );
     35string LinkageSpec::linkageName( LinkageSpec::Spec linkage ) {
     36        assert( 0 <= linkage && linkage < LinkageSpec::NoOfSpecs );
    3637        static const char *linkageKinds[LinkageSpec::NoOfSpecs] = {
    3738                "intrinsic", "Cforall", "C", "automatically generated", "compiler built-in",
     
    4142
    4243bool LinkageSpec::isDecoratable( Spec spec ) {
    43         assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs );
     44        assert( 0 <= spec && spec < LinkageSpec::NoOfSpecs );
    4445        static bool decoratable[LinkageSpec::NoOfSpecs] = {
    4546                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     
    5051
    5152bool LinkageSpec::isGeneratable( Spec spec ) {
    52         assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs );
     53        assert( 0 <= spec && spec < LinkageSpec::NoOfSpecs );
    5354        static bool generatable[LinkageSpec::NoOfSpecs] = {
    5455                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
  • src/Parser/LinkageSpec.h

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 13:24:28 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 20 19:22:23 2016
    13 // Update Count     : 8
     12// Last Modified On : Sat Oct  1 23:03:17 2016
     13// Update Count     : 11
    1414//
    1515
     
    2929        };
    3030 
    31         static Spec fromString( const std::string & );
    32         static std::string toString( Spec );
     31        static Spec linkageCheck( const std::string * );
     32        static std::string linkageName( Spec );
    3333 
    3434        static bool isDecoratable( Spec );
  • src/Parser/ParseNode.cc

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Aug 17 23:14:16 2016
    13 // Update Count     : 126
     12// Last Modified On : Sat Oct  1 23:10:43 2016
     13// Update Count     : 127
    1414//
    1515
     
    2020
    2121std::ostream & operator<<( std::ostream & out, const ParseNode * node ) {
    22   node->print( out );
    23   return out;
     22        node->print( out );
     23        return out;
    2424}
    2525
  • src/Parser/ParseNode.h

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Sep 24 11:12:04 2016
    13 // Update Count     : 633
     12// Last Modified On : Mon Oct  3 18:03:08 2016
     13// Update Count     : 636
    1414//
    1515
     
    109109        ExpressionNode * set_extension( bool exten ) { extension = exten; return this; }
    110110
    111         void print( std::ostream &os, int indent = 0 ) const {}
     111        virtual void print( std::ostream &os, int indent = 0 ) const override {}
    112112        void printOneLine( std::ostream &os, int indent = 0 ) const {}
    113113
     
    187187//##############################################################################
    188188
    189 class TypeData;
     189struct TypeData;
    190190
    191191class DeclarationNode : public ParseNode {
     
    198198        enum Signedness { Signed, Unsigned, NoSignedness };
    199199        enum Length { Short, Long, LongLong, NoLength };
    200         enum Aggregate { Struct, Union, Trait };
    201         enum TypeClass { Otype, Dtype, Ftype };
     200        enum Aggregate { Struct, Union, Trait, NoAggregate };
     201        enum TypeClass { Otype, Dtype, Ftype, NoTypeClass };
    202202        enum BuiltinType { Valist };
    203203
     
    271271        }
    272272
    273         void print( std::ostream &os, int indent = 0 ) const;
    274         void printList( std::ostream &os, int indent = 0 ) const;
     273        virtual void print( std::ostream &os, int indent = 0 ) const override;
     274        virtual void printList( std::ostream &os, int indent = 0 ) const override;
    275275
    276276        Declaration * build() const;
     
    287287  public:
    288288        struct Variable_t {
    289                 const std::string * name;
     289//              const std::string * name;
    290290                DeclarationNode::TypeClass tyClass;
    291291                DeclarationNode * assertions;
     
    294294
    295295        struct Attr_t {
    296                 const std::string * name;
     296//              const std::string * name;
    297297                ExpressionNode * expr;
    298298                DeclarationNode * type;
     
    345345        virtual StatementNode * append_last_case( StatementNode * );
    346346
    347         virtual void print( std::ostream &os, int indent = 0 ) {}
    348         virtual void printList( std::ostream &os, int indent = 0 ) {}
     347        virtual void print( std::ostream &os, int indent = 0 ) const override {}
     348        virtual void printList( std::ostream &os, int indent = 0 ) const override {}
    349349  private:
    350350        std::unique_ptr<Statement> stmt;
  • src/Parser/TypeData.h

    r40744af8 rf51aefb  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Sep 24 11:10:38 2016
    13 // Update Count     : 141
     12// Last Modified On : Mon Oct  3 12:34:08 2016
     13// Update Count     : 142
    1414//
    1515
     
    2323
    2424struct TypeData {
    25         enum Kind { Unknown, Basic, Pointer, Array, Function, Aggregate, AggregateInst,
    26                                 Enum, EnumConstant, Symbolic, SymbolicInst, Tuple, Typeof, Builtin };
     25        enum Kind { Basic, Pointer, Array, Function, Aggregate, AggregateInst, Enum, EnumConstant, Symbolic,
     26                                SymbolicInst, Tuple, Typeof, Builtin, Unknown };
    2727
    2828        struct Aggregate_t {
  • src/Parser/lex.cc

    r40744af8 rf51aefb  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 181
    385 #define YY_END_OF_BUFFER 182
     384#define YY_NUM_RULES 183
     385#define YY_END_OF_BUFFER 184
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[892] =
     393static yyconst flex_int16_t yy_accept[895] =
    394394    {   0,
    395         0,    0,    0,    0,    0,    0,  116,  116,  119,  119,
    396       182,  180,    7,    9,    8,  139,  118,  103,  144,  147,
    397       115,  126,  127,  142,  140,  130,  141,  133,  143,  108,
    398       109,  110,  131,  132,  149,  151,  150,  152,  180,  103,
    399       124,  180,  125,  145,  103,  105,  103,  103,  103,  103,
     395        0,    0,    0,    0,    0,    0,  118,  118,  121,  121,
     396      184,  182,    7,    9,    8,  141,  120,  103,  146,  149,
     397      117,  128,  129,  144,  142,  132,  143,  135,  145,  108,
     398      109,  110,  133,  134,  151,  153,  152,  154,  182,  103,
     399      126,  182,  127,  147,  103,  105,  103,  103,  103,  103,
    400400      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    401       103,  103,  128,  148,  129,  146,    7,  180,    4,    4,
    402       181,  106,  181,  107,  116,  117,  123,  119,  120,    7,
    403         9,    0,    8,  156,  175,  103,    0,  168,  138,  161,
    404       169,  166,  153,  164,  154,  165,  163,    0,  113,    3,
    405 
    406         0,  167,  113,  111,    0,    0,  111,  111,    0,    0,
    407       111,  110,  110,  110,    0,  110,  136,  137,  135,  157,
    408       159,  155,  160,  158,    0,    0,    0,    0,    0,    0,
     401      103,  103,  130,  150,  131,  148,    7,  182,    4,    4,
     402      183,  106,  183,  107,  118,  119,  125,  121,  122,    7,
     403        9,    0,    8,  158,  177,  103,    0,  170,  140,  163,
     404      171,  168,  155,  166,  156,  167,  165,    0,  114,    3,
     405
     406        0,  169,  113,  111,    0,    0,  111,  111,    0,    0,
     407      111,  110,  110,  110,    0,  110,  138,  139,  137,  159,
     408      161,  157,  162,  160,    0,    0,    0,    0,    0,    0,
    409409        0,    0,    0,    0,    0,    0,    0,    0,    0,  104,
    410       174,    0,  118,  115,  103,    0,    0,  171,    0,  103,
     410      176,    0,  120,  117,  103,    0,    0,  173,    0,  103,
    411411      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    412412      103,  103,  103,  103,  103,  103,   38,  103,  103,  103,
    413413      103,  103,  103,  103,  103,  103,  103,   57,  103,  103,
    414414      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    415       103,  103,  103,  103,  170,  162,    7,    0,    0,    0,
    416 
    417         2,    0,    5,  106,    0,    0,    0,  116,    0,  122,
    418       121,  121,    0,    0,    0,  119,    0,    0,    0,    0,
     415      103,  103,  103,  103,  172,  164,    7,    0,    0,    0,
     416
     417        2,    0,    5,  106,    0,    0,    0,  118,    0,  124,
     418      123,  123,    0,    0,    0,  121,    0,    0,    0,    0,
    419419        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    420         0,  134,  113,  113,    0,  113,  113,    0,    0,    6,
    421         0,  111,    0,    0,    0,  113,    0,  111,  111,  111,
     420        0,  136,  114,  115,    0,  115,  115,    0,    0,    6,
     421      115,  111,    0,    0,    0,  115,    0,  111,  111,  111,
    422422      111,    0,  112,    0,    0,  110,  110,  110,  110,    0,
    423       172,  173,    0,  178,  176,    0,    0,    0,  104,    0,
     423      174,  175,    0,  180,  178,    0,    0,    0,  104,    0,
    424424        0,    0,    0,    0,    0,    0,    0,  103,   17,  103,
    425425      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     
    431431      103,  103,  103,  103,  103,   90,  103,  103,  103,  103,
    432432      103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
    433         0,  121,    0,    0,    0,    0,    0,  121,    0,    0,
    434       179,    0,    0,    0,    0,    0,    0,    0,  113,    0,
    435       113,    0,  113,    0,    0,  113,    0,  111,  111,    0,
    436         0,  112,  112,    0,  112,    0,  112,  110,  110,    0,
    437         0,    0,    0,    0,    0,    0,    0,    0,    0,  177,
    438 
     433        0,  123,    0,    0,    0,    0,    0,  123,    0,    0,
     434      181,    0,    0,    0,    0,    0,    0,    0,  115,    0,
     435      115,    0,  115,    0,  115,    0,    0,  115,    0,  111,
     436      111,    0,    0,  112,  112,    0,  112,    0,  112,  110,
     437      110,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     438
     439        0,  179,  103,  103,  103,  103,  103,  103,  103,  103,
    439440      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     441      103,  103,  103,  103,  103,   21,  103,   24,  103,   27,
     442      103,  103,  103,  103,  103,  103,  103,   41,  103,   43,
     443      103,  103,  103,  103,  103,  103,  103,   56,  103,   67,
    440444      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    441       103,  103,  103,   21,  103,   24,  103,   27,  103,  103,
    442       103,  103,  103,  103,  103,   41,  103,   43,  103,  103,
    443       103,  103,  103,  103,  103,   56,  103,   67,  103,  103,
     445      103,  103,  103,  103,  103,  103,   98,  103,  103,    0,
     446        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     447        0,    0,    0,  123,    0,    0,    0,    0,    0,  115,
     448        0,    0,    0,    0,    0,    0,    0,  112,  112,    0,
     449
     450      116,    0,  112,  112,    0,    0,    0,    0,    0,    0,
     451        0,    0,    0,    0,    0,    0,    0,  103,  103,   22,
     452      103,  103,  103,  103,  103,  103,  103,   15,  103,  103,
    444453      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    445       103,  103,  103,  103,   98,  103,  103,    0,    0,    0,
     454      103,  103,   23,   25,  103,   32,  103,  103,  103,  103,
     455       40,  103,  103,  103,  103,   49,  103,  103,   54,  103,
     456      103,   71,  103,  103,  103,   77,  103,  103,  103,  103,
     457      103,   87,   89,  103,  103,   95,  103,  103,  102,    0,
    446458        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    447         0,  121,    0,    0,    0,    0,    0,  113,    0,    0,
    448         0,    0,    0,    0,  112,  112,    0,  114,    0,  112,
    449 
    450       112,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    451         0,    0,    0,    0,  103,  103,   22,  103,  103,  103,
    452       103,  103,  103,  103,   15,  103,  103,  103,  103,  103,
    453       103,  103,  103,  103,  103,  103,  103,  103,  103,   23,
    454        25,  103,   32,  103,  103,  103,  103,   40,  103,  103,
    455       103,  103,   49,  103,  103,   54,  103,  103,   71,  103,
    456       103,  103,   77,  103,  103,  103,  103,  103,   87,   89,
    457       103,  103,   95,  103,  103,  102,    0,    0,    0,    0,
     459        0,    0,    0,    0,    0,    0,    0,    0,  116,    0,
     460
     461        0,  112,  116,  116,  116,  116,    0,  112,    0,    0,
     462        0,    0,    0,    0,    0,    0,    0,    0,  103,    0,
     463      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     464      103,  103,  103,  103,  103,  103,   59,  103,  103,  103,
     465      103,  103,  103,  103,  103,   28,  103,  103,  103,   39,
     466       42,   45,  103,  103,   52,  103,   61,   68,  103,  103,
     467       76,   78,   81,   82,   84,   85,  103,  103,   92,  103,
     468      103,    0,    1,    0,    0,    0,    0,    0,    0,  106,
     469        0,    0,    0,  123,    0,    0,    0,    0,  116,    0,
     470      116,  116,    0,    0,    0,    0,    0,    0,    0,    0,
     471
     472        0,  103,  103,   18,  103,  103,  103,  103,  103,  103,
     473      103,   16,  103,  103,  103,   33,  103,  103,  103,  103,
     474      103,  103,  103,  103,  103,  103,  103,  103,   36,   37,
     475      103,   48,   53,  103,  103,  103,   91,  103,  103,    0,
    458476        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    459         0,    0,    0,    0,    0,  114,    0,    0,  112,  114,
    460 
    461       114,  114,  114,    0,  112,    0,    0,    0,    0,    0,
    462         0,    0,    0,    0,    0,  103,    0,  103,  103,  103,
    463       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    464       103,  103,  103,   59,  103,  103,  103,  103,  103,  103,
    465       103,  103,   28,  103,  103,  103,   39,   42,   45,  103,
    466       103,   52,  103,   61,   68,  103,  103,   76,   78,   81,
    467        82,   84,   85,  103,  103,   92,  103,  103,    0,    1,
    468         0,    0,    0,    0,    0,    0,  106,    0,    0,    0,
    469       121,    0,    0,    0,    0,  114,    0,  114,  114,    0,
    470         0,    0,    0,    0,    0,    0,    0,    0,  103,  103,
    471 
    472        18,  103,  103,  103,  103,  103,  103,  103,   16,  103,
    473       103,  103,   33,  103,  103,  103,  103,  103,  103,  103,
    474       103,  103,  103,  103,  103,   36,   37,  103,   48,   53,
    475       103,  103,  103,   91,  103,  103,    0,    0,    0,    0,
    476         0,    0,    0,    0,    0,    0,    0,    0,    0,   10,
    477        11,   29,   55,  103,  103,  103,  103,  103,  103,  103,
    478       103,  103,  103,  103,   60,   62,   65,  103,  103,   79,
    479        93,  103,  103,   35,  103,   47,   72,   73,  103,   96,
    480        99,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    481         0,    0,    0,  103,   69,  103,  103,   12,  103,  103,
    482 
    483        30,   34,  103,  103,  103,   66,  103,  103,  103,  103,
    484       103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
    485         0,    0,    0,    0,    0,    0,   58,  103,  103,  103,
    486       103,  103,  103,  103,   50,   63,   74,   80,   94,  100,
    487       103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
    488         0,  103,  103,   13,   19,  103,  103,   31,  103,  103,
    489       103,   26,   46,   88,    0,    0,  103,  103,  103,  103,
    490       103,  103,   75,  101,  103,   86,   20,  103,  103,   44,
    491        83,  103,  103,  103,  103,  103,  103,  103,   97,   70,
    492         0
     477        0,    0,   10,   11,   29,   55,  103,  103,  103,  103,
     478      103,  103,  103,  103,  103,  103,  103,   60,   62,   65,
     479      103,  103,   79,   93,  103,  103,   35,  103,   47,   72,
     480       73,  103,   96,   99,    0,    0,    0,    0,    0,    0,
     481        0,    0,    0,    0,    0,    0,  103,   69,  103,  103,
     482
     483       12,  103,  103,   30,   34,  103,  103,  103,   66,  103,
     484      103,  103,  103,  103,  103,  103,    0,    0,    0,    0,
     485        0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
     486      103,  103,  103,  103,  103,  103,  103,   50,   63,   74,
     487       80,   94,  100,  103,  103,  103,    0,    0,    0,    0,
     488        0,    0,    0,    0,  103,  103,   13,   19,  103,  103,
     489       31,  103,  103,  103,   26,   46,   88,    0,    0,  103,
     490      103,  103,  103,  103,  103,   75,  101,  103,   86,   20,
     491      103,  103,   44,   83,  103,  103,  103,  103,  103,  103,
     492      103,   97,   70,    0
    493493
    494494    } ;
     
    539539    } ;
    540540
    541 static yyconst flex_int16_t yy_base[1066] =
     541static yyconst flex_int16_t yy_base[1069] =
    542542    {   0,
    543         0,   84, 2285, 2282,   94,    0,  177,  178,  179,  180,
    544      2298, 2825,  191, 2825,  197,   55, 2825, 2244,   60,  173,
    545      2825, 2825, 2825,   56,  188, 2825,  191,  189,  204,  216,
    546       275,    0, 2262, 2825,  216, 2260,  152,  344,  155,  220,
    547      2825,  159, 2825,  217,  226, 2825,  185,  154,  212,  251,
     543        0,   84, 2307, 2305,   94,    0,  177,  178,  179,  180,
     544     2319, 2845,  191, 2845,  197,   55, 2845, 2265,   60,  173,
     545     2845, 2845, 2845,   56,  188, 2845,  191,  189,  204,  216,
     546      275,    0, 2284, 2845,  216, 2283,  152,  344,  155,  220,
     547     2845,  159, 2845,  217,  226, 2845,  185,  154,  212,  251,
    548548      237,  270,  235,  257,  241,  205,  193,  305,  314,  333,
    549       238,  228, 2825,  225, 2825, 2255,  402,  390, 2825, 2266,
    550      2825, 2234,  235, 2825,    0, 2825,  426,    0, 2825,  417,
    551      2825,  439,  451, 2825,  498, 2232,  264, 2825, 2825, 2825,
    552      2825, 2825, 2248, 2825, 2245, 2825, 2825, 2257,  559, 2825,
    553 
    554      2274, 2825,  438,  444,  511,  534,  289,  253,  197,  380,
    555       305,    0,  319,  280,  198,  322, 2825, 2825, 2825, 2243,
    556      2825, 2825, 2825, 2240, 2237,  218,  255, 2252,  298,  350,
    557       368,  312,  440,  398,  405, 2233,  441, 2181,  446, 2209,
    558      2825,  335, 2825, 2825,  468, 2203, 2202, 2825, 2175,  439,
     549      238,  228, 2845,  225, 2845, 2278,  402,  390, 2845, 2287,
     550     2845, 2255,  235, 2845,    0, 2845,  426,    0, 2845,  417,
     551     2845,  439,  451, 2845,  498, 2254,  264, 2845, 2845, 2845,
     552     2845, 2845, 2271, 2845, 2268, 2845, 2845, 2278,  559, 2845,
     553
     554     2295, 2845,  438,  444,  511,  534,  289,  253,  197,  380,
     555      305,    0,  319,  280,  198,  322, 2845, 2845, 2845, 2265,
     556     2845, 2845, 2845, 2263, 2260,  218,  255, 2273,  298,  350,
     557      368,  312,  440,  398,  405, 2254,  441, 2203,  446, 2232,
     558     2845,  335, 2845, 2845,  468, 2226, 2223, 2845, 2196,  439,
    559559      282,  433,  372,  281,  437,  434,  428,  570,  444,  466,
    560560      464,  469,  475,  321,  492,  438,  471,  445,  474,  512,
    561       489,  503,  496,  521,  276,  515,  516, 2202,  526,  510,
     561      489,  503,  496,  521,  276,  515,  516, 2224,  526,  510,
    562562      519,  525,  543,  522,  560,  553,  523,  561,  551,  544,
    563       599,  582,  593,  584, 2825, 2825,  660,  651, 2249,  666,
    564 
    565      2825,  678, 2825, 2196,  607, 2192, 2191,    0,  693, 2825,
    566      2825,  684, 2189, 2186, 2183,    0, 2206,  578,  608,  617,
    567       654,  679,  650,  683,  684,  687, 2203,  690,  691, 2179,
    568      2159, 2825,    0,  683,  710,  686,  700, 2157, 2209, 2825,
    569       714,    0,  427,  746,  764,  786,  808,  621, 2825, 2165,
    570      2138,    0,  794, 2184,  795,  709, 2825, 2160, 2134,  832,
    571      2825, 2825, 2165, 2825, 2825,  711,  714, 2142, 2142,  717,
    572      2138, 2136, 2133,    0, 2130,    0, 2101,  694,  679,  712,
    573       709,  711,  698,  566,  726,  743,  771,  741,  790,  784,
    574       800,  795,  742,  744,  814,  816,  818, 2131,  819,  745,
    575 
    576       820,  821,  822,  823,  824,  746,  825,  748,  659,  831,
    577       826,  833,  838,  839,  848,  850,  851,  844,  834,  857,
    578      2129,  858,  859,  860,  862,  861,  864,  865,  867,  868,
    579       866,  871,  876,  872,  878, 2126,  880,  689,  881,  882,
    580       892,  896,  893,  953,  954, 2120, 2119, 2118,    0, 2116,
    581         0,  941,  945, 2113,    0, 2112,    0, 2111,    0, 2131,
    582      2825,  940,  941, 2108, 2105,    0, 2104,    0, 2825,  953,
    583       975,  964, 2825,  981,  997, 1021, 2102, 2825, 2825,  939,
    584       940, 1006,  982, 1041,  310, 1039, 1004, 2825, 2825, 2099,
    585      2095, 2091,    0, 2089,    0, 2087,    0, 2084,    0, 2825,
    586 
    587       886,  941,  960,  962,  977,  976,  980,  982, 1017, 1010,
    588      1002,  998, 1022, 1031, 1028, 1033, 1034, 1037, 1040, 1043,
    589      1038, 1041, 1053, 2085, 1055, 2083, 1045, 2080, 1056, 1061,
    590      1063, 1065, 1066, 1067, 1070, 2077, 1071, 2076, 1073, 1074,
    591      1075, 1078, 1080, 1081, 1085, 2075, 1087, 2073, 1084, 1089,
    592      1091, 1097, 1099, 1092, 1102, 1103, 1105, 1106, 1108,  905,
    593      1109, 1116, 1110, 1122, 2070, 1120, 1123, 1179, 2064,    0,
    594      2063,    0, 2062,    0, 2060,    0, 1166, 2057,    0, 2054,
    595         0, 2053, 2052, 2050,    0, 2047,    0, 1173, 2044, 1179,
    596      1137, 1195, 1181, 1178, 1176, 2825, 1219, 1231, 1253, 2055,
    597 
    598      2030, 2040, 2037,    0, 2034,    0, 2033,    0, 2032,    0,
    599      2030,    0, 2027,    0, 1141, 1172, 2027, 1180, 1155, 1196,
    600      1157, 1216, 1207, 1231, 1125, 1210, 1232, 1214, 1187, 1236,
    601      1235, 1237, 1238, 1272, 1249, 1252, 1250, 1253, 1254, 2026,
    602      1261, 1256, 2025, 1260, 1263, 1264, 1257, 2023, 1271, 1268,
    603      1269, 1273, 2020, 1275, 1282, 2017, 1283, 1284, 2016, 1276,
    604      1286, 1289, 2015, 1294, 1291, 1296, 1295, 1297, 1310, 2013,
    605      1305, 1308, 2010, 1307, 1300, 2009, 2058, 2003,    0, 2000,
    606         0, 1999,    0, 1998,    0, 1996,    0, 1963,    0, 1961,
    607         0, 1960,    0, 1355, 1361, 1389, 1372, 1957, 2825, 1378,
    608 
    609      1325, 1365, 1379, 1954, 2825, 1953,    0, 1952,    0, 1950,
    610         0, 1947,    0,    0,    0, 1947,    0, 1366, 1312, 1311,
    611      1341, 1323, 1368, 1369, 1374, 1356, 1383, 1372, 1388, 1390,
    612      1393, 1395, 1396, 1398, 1400, 1431, 1406, 1407, 1411, 1408,
    613      1413, 1414, 1946, 1409, 1416, 1419, 1945, 1943, 1940, 1422,
    614      1424, 1939, 1429, 1938, 1936, 1425, 1430, 1933, 1932, 1931,
    615      1929, 1926, 1922, 1436, 1433, 1918, 1439, 1440, 1964, 2825,
    616      1895,    0, 1894,    0,    0,    0, 1896,    0,    0,    0,
    617      2825,    0,    0,    0,    0, 1486, 1891, 2825, 2825, 1492,
    618      1888,    0, 1887,    0,    0,    0,    0, 1886, 1447, 1444,
    619 
    620      1887, 1449, 1471, 1479, 1450, 1480, 1482, 1469, 1884, 1486,
    621      1490, 1488, 1502, 1452, 1510, 1504, 1491, 1519, 1506, 1498,
    622      1508, 1512, 1513, 1514, 1515, 1883, 1882, 1518, 1880, 1877,
    623      1517, 1520, 1523, 1876, 1521, 1525,    0,    0,    0, 1872,
    624      1870, 1867, 1575,    0, 1866, 1865, 1863, 1860, 1859, 1861,
    625      1859, 1856, 1855, 1531, 1538, 1527, 1528, 1530, 1533, 1552,
    626      1539, 1554, 1553, 1586, 1854, 1559, 1852, 1560, 1561, 1564,
    627      1570, 1572, 1571, 1849, 1574, 1848, 1847, 1845, 1575, 1842,
    628      1841, 1837, 1835, 1828, 1826, 1825, 1822, 1821, 1820, 1818,
    629      1801, 1792, 1791, 1576, 1791, 1579, 1577, 1580, 1582, 1581,
    630 
    631      1585, 1784, 1589, 1616, 1593, 1781, 1591, 1599, 1605, 1592,
    632      1606, 1609, 1610, 1771, 1769, 1768, 1747, 1746, 1745, 1738,
    633      1736, 1735, 1693, 1689, 1688, 1687, 1689, 1611, 1612, 1614,
    634      1615, 1618, 1625, 1621, 1686, 1683, 1627, 1682, 1681, 1631,
    635      1635, 1441, 1637, 1677, 1674, 1354, 1319, 1318, 1267, 1212,
    636      1210, 1639, 1640, 1211, 1647, 1623, 1649, 1178, 1652, 1653,
    637      1657, 1177, 1126,  964,  937,  903, 1641, 1643, 1659, 1663,
    638      1664, 1665,  788,  752, 1629,  607,  487, 1666, 1669,  394,
    639       357, 1670, 1672, 1671, 1674, 1676, 1675, 1678,  233,  137,
    640      2825, 1750, 1763, 1776, 1786, 1796, 1809, 1819, 1832, 1845,
    641 
    642      1858, 1866, 1876, 1883, 1890, 1897, 1904, 1911, 1918, 1925,
    643      1932, 1939, 1952, 1959, 1963, 1971, 1974, 1981, 1988, 1995,
    644      1998, 2005, 2011, 2024, 2037, 2044, 2051, 2058, 2065, 2068,
    645      2075, 2078, 2085, 2088, 2095, 2098, 2105, 2108, 2115, 2118,
    646      2125, 2128, 2135, 2143, 2150, 2157, 2164, 2171, 2174, 2181,
    647      2184, 2191, 2194, 2201, 2207, 2220, 2227, 2234, 2237, 2244,
    648      2247, 2254, 2257, 2264, 2267, 2274, 2277, 2284, 2287, 2294,
    649      2301, 2304, 2311, 2314, 2321, 2328, 2335, 2338, 2345, 2348,
    650      2355, 2358, 2365, 2368, 2375, 2378, 2385, 2391, 2404, 2411,
    651      2418, 2421, 2428, 2431, 2438, 2441, 2448, 2451, 2458, 2461,
    652 
    653      2468, 2471, 2478, 2481, 2488, 2491, 2498, 2505, 2508, 2515,
    654      2518, 2525, 2528, 2535, 2538, 2541, 2547, 2554, 2563, 2570,
    655      2577, 2580, 2587, 2590, 2593, 2599, 2606, 2609, 2612, 2615,
    656      2618, 2621, 2624, 2627, 2634, 2637, 2644, 2647, 2650, 2653,
    657      2656, 2666, 2673, 2676, 2679, 2682, 2689, 2696, 2703, 2706,
    658      2713, 2720, 2727, 2734, 2741, 2748, 2755, 2762, 2769, 2776,
    659      2783, 2790, 2797, 2804, 2811
     563      599,  582,  593,  584, 2845, 2845,  660,  651, 2272,  666,
     564
     565     2845,  678, 2845, 2219,  607, 2213, 2212,    0,  693, 2845,
     566     2845,  684, 2211, 2209, 2206,    0, 2227,  578,  608,  617,
     567      654,  679,  650,  683,  684,  687, 2224,  690,  691, 2201,
     568     2199, 2845,    0,  683,  710,  686,  700, 2179, 2230, 2845,
     569      730,  722,  427,  747,  756,  787,  770,  621, 2845, 2188,
     570     2161,    0,  795, 2205,  796,  700, 2845, 2181, 2156,  809,
     571     2845, 2845, 2188, 2845, 2845,  728,  733, 2165, 2163,  701,
     572     2159, 2158, 2156,    0, 2153,    0, 2122,  736,  746,  747,
     573      716,  689,  748,  566,  789,  659,  801,  751,  754,  785,
     574      776,  787,  808,  796,  739,  711,  806, 2152,  807,  815,
     575
     576      817,  821,  809,  819,  827,  830,  831,  832,  833,  834,
     577      839,  840,  841,  842,  846,  853,  854,  844,  847,  855,
     578     2151,  860,  862,  861,  866,  864,  867,  869,  870,  872,
     579      873,  874,  878,  875,  883, 2149,  882,  928,  885,  888,
     580      894,  899,  892,  956,  958, 2143, 2140, 2139,    0, 2138,
     581        0,  945,  949, 2136,    0, 2133,    0, 2132,    0, 2153,
     582     2845,  930,  944, 2131, 2126,    0, 2125,    0, 2845,  959,
     583      979,  970, 2845,  985, 1025, 2124, 1001, 1047, 2122, 2845,
     584     2845,  943,  987, 1033,  986, 1072,  310, 1064,  987, 2845,
     585     2845, 2119, 2115, 2111,    0, 2109,    0, 2107,    0, 2104,
     586
     587        0, 2845,  913,  947,  964,  966, 1005,  927, 1049,  939,
     588     1051,  968,  991,  986, 1041, 1053, 1003, 1059, 1063, 1066,
     589     1023, 1064, 1062, 1065,  978, 2105, 1072, 2103, 1078, 2100,
     590     1071, 1074, 1076, 1080, 1091, 1093, 1095, 2097, 1094, 2096,
     591     1082, 1098, 1099, 1100, 1101, 1105, 1106, 2095, 1107, 2093,
     592     1110, 1112, 1111, 1117, 1118, 1113, 1119, 1123, 1126, 1127,
     593     1129, 1130, 1131, 1140, 1142, 1143, 2090, 1144, 1147, 1195,
     594     2084,    0, 2083,    0, 2082,    0, 2080,    0, 1190, 2077,
     595        0, 2074,    0, 2073, 2072, 2070,    0, 2067,    0, 1197,
     596     2064, 1203, 1219, 1205, 1244, 1210, 1202, 1200, 2845, 1260,
     597
     598     1278, 1271, 2075, 2050, 2060, 2057,    0, 2054,    0, 2053,
     599        0, 2052,    0, 2050,    0, 2047,    0, 1164, 1152, 2047,
     600     1184, 1182, 1226, 1157, 1227, 1196, 1254, 1146, 1237, 1255,
     601     1256, 1204, 1258, 1271, 1261, 1260, 1292, 1274, 1262, 1277,
     602     1278, 1280, 2046, 1186, 1289, 2045, 1279, 1282, 1290, 1295,
     603     2043, 1299, 1300, 1301, 1303, 2040, 1306, 1302, 2037, 1310,
     604     1311, 2036, 1309, 1312, 1315, 2035, 1220, 1314, 1316, 1322,
     605     1326, 1333, 2033, 1328, 1329, 2030, 1330, 1335, 2029, 2078,
     606     2023,    0, 2020,    0, 2019,    0, 2018,    0, 2016,    0,
     607     1983,    0, 1981,    0, 1980,    0, 1379, 1385, 1413, 1396,
     608
     609     1977, 2845, 1402, 1351, 1389, 1403, 1974, 2845, 1973,    0,
     610     1972,    0, 1970,    0, 1967,    0,    0,    0, 1967,    0,
     611     1390, 1336, 1397, 1365, 1345, 1392, 1393, 1409, 1381, 1407,
     612     1412, 1414, 1419, 1420, 1422, 1424, 1427, 1431,  926, 1429,
     613     1432, 1438, 1433, 1435, 1440, 1966, 1437, 1441, 1445, 1965,
     614     1963, 1960, 1450, 1453, 1959, 1455, 1958, 1956, 1456, 1459,
     615     1953, 1952, 1951, 1949, 1942, 1940, 1458, 1461, 1939, 1464,
     616     1462, 1986, 2845, 1929,    0, 1925,    0,    0,    0, 1924,
     617        0,    0,    0, 2845,    0,    0,    0,    0, 1511, 1918,
     618     2845, 2845, 1517, 1917,    0, 1916,    0,    0,    0,    0,
     619
     620     1914, 1474, 1468, 1914, 1443, 1493, 1498, 1476, 1504, 1505,
     621     1494, 1913, 1334, 1509, 1506, 1510, 1511, 1545, 1525, 1518,
     622     1543, 1530, 1523, 1529, 1531, 1534, 1535, 1539, 1912, 1910,
     623     1540, 1907, 1906, 1542, 1538, 1544, 1905, 1546, 1550,    0,
     624        0,    0, 1900, 1897, 1896, 1596,    0, 1895, 1893, 1890,
     625     1889, 1888, 1889, 1886, 1885, 1884, 1552, 1557, 1573, 1549,
     626     1551, 1553, 1575, 1555, 1577, 1582, 1607, 1882, 1583, 1879,
     627     1584, 1589, 1585, 1590, 1591, 1594, 1878, 1597, 1877, 1875,
     628     1872, 1598, 1871, 1870, 1865, 1862, 1861, 1860, 1858, 1851,
     629     1849, 1848, 1845, 1844, 1843, 1841, 1600, 1827, 1601, 1605,
     630
     631     1608, 1602, 1609, 1610, 1818, 1614, 1629, 1615, 1817, 1604,
     632     1616, 1625, 1630, 1380, 1631, 1633, 1811, 1804, 1801, 1794,
     633     1792, 1791, 1770, 1769, 1768, 1761, 1759, 1758, 1716, 1716,
     634     1634, 1636, 1635, 1637, 1640, 1641, 1645, 1715, 1713, 1647,
     635     1712, 1711, 1648, 1652, 1653, 1654, 1703, 1701, 1700, 1698,
     636     1696, 1476, 1472, 1343, 1657, 1667, 1259, 1656, 1660, 1668,
     637     1150, 1671, 1675, 1676, 1031, 1027,  793,  752,  675, 1669,
     638     1677, 1680, 1681, 1682, 1684,  645,  607, 1686,  487,  441,
     639     1688, 1690,  394,  357, 1693, 1694, 1695, 1697, 1696, 1698,
     640     1700,  233,  137, 2845, 1773, 1786, 1799, 1809, 1819, 1832,
     641
     642     1842, 1855, 1868, 1881, 1889, 1899, 1906, 1913, 1920, 1927,
     643     1934, 1941, 1948, 1955, 1962, 1969, 1973, 1981, 1987, 1994,
     644     2001, 2008, 2015, 2018, 2025, 2031, 2044, 2057, 2064, 2071,
     645     2078, 2085, 2088, 2095, 2098, 2105, 2108, 2115, 2118, 2125,
     646     2128, 2135, 2138, 2145, 2148, 2155, 2163, 2170, 2177, 2184,
     647     2191, 2194, 2201, 2204, 2211, 2214, 2221, 2227, 2240, 2247,
     648     2254, 2257, 2264, 2267, 2274, 2277, 2284, 2287, 2294, 2297,
     649     2304, 2307, 2314, 2321, 2324, 2331, 2334, 2341, 2348, 2355,
     650     2358, 2365, 2368, 2375, 2378, 2385, 2388, 2395, 2398, 2405,
     651     2411, 2424, 2431, 2438, 2441, 2448, 2451, 2458, 2461, 2468,
     652
     653     2471, 2478, 2481, 2488, 2491, 2498, 2501, 2508, 2511, 2518,
     654     2525, 2528, 2535, 2538, 2545, 2548, 2555, 2558, 2561, 2567,
     655     2574, 2583, 2590, 2597, 2600, 2607, 2610, 2613, 2619, 2626,
     656     2629, 2632, 2635, 2638, 2641, 2644, 2647, 2654, 2657, 2664,
     657     2667, 2670, 2673, 2676, 2686, 2693, 2696, 2699, 2702, 2709,
     658     2716, 2723, 2726, 2733, 2740, 2747, 2754, 2761, 2768, 2775,
     659     2782, 2789, 2796, 2803, 2810, 2817, 2824, 2831
    660660    } ;
    661661
    662 static yyconst flex_int16_t yy_def[1066] =
     662static yyconst flex_int16_t yy_def[1069] =
    663663    {   0,
    664       891,    1,  892,  892,  891,    5,  893,  893,  894,  894,
    665       891,  891,  891,  891,  891,  891,  891,  895,  891,  891,
    666       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    667       891,   31,  891,  891,  891,  891,  891,  891,  896,  895,
    668       891,  891,  891,  891,  895,  891,  895,  895,  895,  895,
    669       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    670       895,  895,  891,  891,  891,  891,  891,  897,  891,  891,
    671       891,  898,  891,  891,  899,  891,  891,  900,  891,  891,
    672       891,  891,  891,  891,  891,  895,  891,  891,  891,  891,
    673       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    674 
    675       901,  891,   99,   30,  891,  891,  891,  891,  902,   30,
    676       891,   31,  891,  891,   31,  891,  891,  891,  891,  891,
    677       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    678       891,  891,  891,  891,  891,  891,  891,  891,  891,  903,
    679       891,  891,  891,  891,  895,  904,  905,  891,  891,  895,
    680       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    681       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    682       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    683       895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
    684       895,  895,  895,  895,  891,  891,  891,  897,  897,  897,
    685 
    686       891,  897,  891,  898,  891,  906,  907,  899,  891,  891,
    687       891,  891,  908,  909,  910,  900,  891,  891,  891,  891,
    688       891,  891,  891,  891,  891,  891,  891,  891,  891,  911,
    689       912,  891,   99,  891,  891,  891,  891,   99,  913,  891,
    690       891,  104,  104,  891,  891,  891,  891,  891,  891,  891,
    691       891,  914,  915,  916,  891,  891,  891,  891,  891,  891,
    692       891,  891,  891,  891,  891,  891,  891,  891,  903,  891,
    693       917,  918,  919,  920,  921,  922,  891,  923,  923,  923,
    694       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    695       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    696 
    697       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    698       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    699       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    700       923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
    701       923,  923,  923,  924,  925,  926,  927,  928,  929,  930,
    702       931,  891,  891,  932,  933,  934,  935,  936,  937,  891,
    703       891,  891,  891,  891,  938,  939,  940,  941,  891,  891,
    704       891,  891,  891,  891,  891,  371,  376,  891,  891,  942,
    705       943,  944,  891,  891,  891,  944,  891,  891,  891,  945,
    706       946,  947,  948,  949,  950,  951,  952,  953,  954,  891,
    707 
    708       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    709       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    710       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    711       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    712       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    713       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
    714       955,  955,  955,  955,  955,  955,  955,  956,  957,  958,
    715       959,  960,  961,  962,  963,  964,  891,  965,  966,  967,
    716       968,  969,  969,  970,  971,  972,  973,  891,  488,  891,
    717       974,  891,  974,  891,  891,  891,  891,  891,  891,  891,
    718 
    719       891,  975,  976,  977,  978,  979,  980,  981,  982,  983,
    720       984,  985,  986,  987,  988,  988,  988,  988,  988,  988,
    721       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    722       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    723       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    724       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    725       988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
    726       988,  988,  988,  988,  988,  988,  989,  990,  991,  992,
     664      894,    1,  895,  895,  894,    5,  896,  896,  897,  897,
     665      894,  894,  894,  894,  894,  894,  894,  898,  894,  894,
     666      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     667      894,   31,  894,  894,  894,  894,  894,  894,  899,  898,
     668      894,  894,  894,  894,  898,  894,  898,  898,  898,  898,
     669      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     670      898,  898,  894,  894,  894,  894,  894,  900,  894,  894,
     671      894,  901,  894,  894,  902,  894,  894,  903,  894,  894,
     672      894,  894,  894,  894,  894,  898,  894,  894,  894,  894,
     673      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     674
     675      904,  894,  894,   30,  894,  894,  894,  894,  905,   30,
     676      894,   31,  894,  894,   31,  894,  894,  894,  894,  894,
     677      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     678      894,  894,  894,  894,  894,  894,  894,  894,  894,  906,
     679      894,  894,  894,  894,  898,  907,  908,  894,  894,  898,
     680      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     681      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     682      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     683      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     684      898,  898,  898,  898,  894,  894,  894,  900,  900,  900,
     685
     686      894,  900,  894,  901,  894,  909,  910,  902,  894,  894,
     687      894,  894,  911,  912,  913,  903,  894,  894,  894,  894,
     688      894,  894,  894,  894,  894,  894,  894,  894,  894,  914,
     689      915,  894,   99,  894,  894,  894,  894,   99,  904,  894,
     690       99,  110,  242,  894,  894,  894,  894,  894,  894,  894,
     691      894,  916,  917,  918,  894,  894,  894,  894,  894,  894,
     692      894,  894,  894,  894,  894,  894,  894,  894,  919,  894,
     693      920,  921,  922,  923,  924,  925,  894,  926,  926,  926,
     694      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     695      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     696
     697      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     698      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     699      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     700      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     701      926,  926,  926,  927,  928,  929,  930,  931,  932,  933,
     702      934,  894,  894,  935,  936,  937,  938,  939,  940,  894,
     703      894,  894,  894,  894,  941,  942,  943,  944,  894,  894,
     704      894,  894,  894,  894,  894,  375,  894,  371,  378,  894,
     705      894,  945,  946,  947,  894,  894,  894,  947,  894,  894,
     706      894,  948,  949,  950,  951,  952,  953,  954,  955,  956,
     707
     708      957,  894,  958,  958,  958,  958,  958,  958,  958,  958,
     709      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     710      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     711      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     712      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     713      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     714      958,  958,  958,  958,  958,  958,  958,  958,  958,  959,
     715      960,  961,  962,  963,  964,  965,  966,  967,  894,  968,
     716      969,  970,  971,  972,  972,  973,  974,  975,  976,  894,
     717      490,  894,  894,  977,  894,  977,  894,  894,  894,  894,
     718
     719      894,  894,  894,  894,  978,  979,  980,  981,  982,  983,
     720      984,  985,  986,  987,  988,  989,  990,  991,  991,  991,
     721      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     722      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     723      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     724      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     725      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     726      991,  991,  991,  991,  991,  991,  991,  991,  991,  992,
    727727      993,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
    728      1003, 1004, 1005,  891,  891,  891,  891, 1006,  891,  596,
    729 
    730       891,  891,  891,  600,  891, 1007, 1008, 1009, 1010, 1011,
    731      1012, 1013, 1014, 1015, 1016, 1017, 1018, 1017, 1017, 1017,
    732      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
    733      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
    734      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
    735      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
    736      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1019,  891,
    737      1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
    738       891, 1030, 1031, 1032, 1033,  891,  686,  891,  891,  891,
    739      1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1042,
    740 
    741      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    742      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    743      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    744      1042, 1042, 1042, 1042, 1042, 1042, 1043, 1044, 1045, 1046,
    745      1047, 1048,  891, 1049, 1034, 1036, 1050, 1051, 1041, 1042,
    746      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    747      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    748      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    749      1042, 1052, 1053, 1046, 1054, 1047, 1055, 1048, 1056, 1057,
    750      1050, 1058, 1051, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    751 
    752      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    753      1042, 1042, 1042, 1059, 1052, 1060, 1053, 1061, 1054, 1062,
    754      1055, 1063, 1056, 1064, 1057, 1058, 1042, 1042, 1042, 1042,
    755      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    756      1042, 1042, 1042, 1065, 1059, 1060, 1061, 1062, 1036, 1063,
    757      1064, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    758      1042, 1042, 1042, 1042, 1065, 1036, 1042, 1042, 1042, 1042,
    759      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    760      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
    761         0,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    762 
    763       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    764       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    765       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    766       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    767       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    768       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    769       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    770       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    771       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    772       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    773 
    774       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    775       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    776       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    777       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    778       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    779       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    780       891,  891,  891,  891,  891
     728     1003, 1004, 1005, 1006, 1007, 1008,  894,  894,  894,  894,
     729
     730     1009,  894,  599,  894,  894,  894,  603,  894, 1010, 1011,
     731     1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
     732     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     733     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     734     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     735     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     736     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     737     1020, 1022,  894, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
     738     1030, 1031, 1032,  894, 1033, 1034, 1035, 1036,  894,  689,
     739      894,  894,  894, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
     740
     741     1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     742     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     743     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     744     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1046,
     745     1047, 1048, 1049, 1050, 1051,  894, 1052, 1037, 1039, 1053,
     746     1054, 1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     747     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     748     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     749     1045, 1045, 1045, 1045, 1055, 1056, 1049, 1057, 1050, 1058,
     750     1051, 1059, 1060, 1053, 1061, 1054, 1045, 1045, 1045, 1045,
     751
     752     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     753     1045, 1045, 1045, 1045, 1045, 1045, 1062, 1055, 1063, 1056,
     754     1064, 1057, 1065, 1058, 1066, 1059, 1067, 1060, 1061, 1045,
     755     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     756     1045, 1045, 1045, 1045, 1045, 1045, 1068, 1062, 1063, 1064,
     757     1065, 1039, 1066, 1067, 1045, 1045, 1045, 1045, 1045, 1045,
     758     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1068, 1039, 1045,
     759     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     760     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     761     1045, 1045, 1045,    0,  894,  894,  894,  894,  894,  894,
     762
     763      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     764      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     765      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     766      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     767      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     768      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     769      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     770      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     771      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     772      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     773
     774      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     775      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     776      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     777      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     778      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     779      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     780      894,  894,  894,  894,  894,  894,  894,  894
    781781    } ;
    782782
    783 static yyconst flex_int16_t yy_nxt[2911] =
     783static yyconst flex_int16_t yy_nxt[2931] =
    784784    {   0,
    785785       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    806806
    807807       83,   83,   83,   82,   91,   93,   87,  142,  146,   98,
    808        95,   99,   99,   99,   99,   99,   99,  252,  891,   94,
     808       95,   99,   99,   99,   99,   99,   99,  252,  894,   94,
    809809      100,   85,   96,   97,   85,  101,  161,  118,  143,   77,
    810810       77,   77,   77,  144,  147,  102,  103,   87,  104,  104,
     
    821821      115,  264,  248,   87,   87,  173,  106,  174,  249,  231,
    822822      175,  143,  116,  263,  176,  264,  144,  259,  317,  283,
    823       114,  125,  280,  500,  249,  126,  127,   87,  128,  191,
     823      114,  125,  280,  503,  249,  126,  127,   87,  128,  191,
    824824      129,  130,  256,  131,  249,  132,   87,  265,  257,  184,
    825       185,  257,  248,   87,  133,  134,  135,  501,  188,  186,
     825      185,  257,  248,   87,  133,  134,  135,  504,  188,  186,
    826826      249,  263,  187,  264,  271,   87,  189,  265,  145,  256,
    827827      305,  200,  201,  190,  257,  136,  200,  257,  137,  263,
    828828
    829       891,  264,  192,  197,   81,   82,   82,   82,  197,   87,
     829      894,  264,  192,  197,   81,   82,   82,   82,  197,   87,
    830830      272,  198,  202,  202,  202,  202,  202,  202,   80,   81,
    831831       82,   82,   82,   80,   87,  138,  139,  209,  210,  263,
    832       891,  264,  209,  282,  211,  255,  263,  267,  264,  211,
    833        82,   81,   82,   82,   82,   82,   87,  891,  212,  212,
    834       212,  212,   82,   81,   83,   83,   83,   82,  891,  211,
    835        99,   99,   99,   99,   99,   99,  242,  242,  242,  242,
     832      894,  264,  209,  282,  211,  255,  263,  267,  264,  211,
     833       82,   81,   82,   82,   82,   82,   87,  894,  212,  212,
     834      212,  212,   82,   81,   83,   83,   83,   82,  894,  211,
     835      241,  241,  241,  241,  241,  241,  242,  242,  242,  242,
    836836      266,  263,  263,  264,  264,  213,  143,  263,  211,  264,
    837        87,  144,  375,  211,  211,   87,   87,  211,  211,   87,
    838        87,   87,  286,  241,  891,  211,   87,   87,  211,  243,
     837       87,  144,  377,  211,  211,   87,   87,  211,  211,   87,
     838       87,   87,  286,   87,  894,  211,   87,   87,  211,  243,
    839839
    840840      211,  214,  211,  281,  215,  217,  278,  284,  285,  218,
    841841      219,  307,  298,  279,  220,  221,   87,  222,   87,  223,
    842        87,   87,  891,   87,  309,  300,   87,   87,  224,  225,
     842       87,   87,  894,   87,  309,  300,   87,   87,  224,  225,
    843843      226,  103,  303,  105,  105,  105,  105,  105,  105,   87,
    844844      299,   87,  301,  302,   87,  304,  308,  310,   87,  227,
     
    852852      331,  361,   87,   87,  238,  337,  326,  327,   87,  236,
    853853      235,  236,   87,  329,  237,  332,  236,  287,  288,  289,
    854       336,  290,  291,  334,   87,  292,   87,  293,  407,  360,
     854      336,  290,  291,  334,   87,  292,   87,  293,  409,  360,
    855855      330,  361,  294,  295,  296,   87,  297,  339,  360,  343,
    856856      361,   87,  200,  201,  338,  340,  346,  200,  341,   87,
    857857      342,  197,   81,   82,   82,   82,  197,  200,  201,  198,
    858       378,  361,  200,  202,  202,  202,  202,  202,  202,  344,
     858      380,  361,  200,  202,  202,  202,  202,  202,  202,  344,
    859859      201,  360,  347,  361,  344,  360,  345,  361,  202,  202,
    860       202,  202,  202,  202,  209,  210,  378,  143,  361,  209,
     860      202,  202,  202,  202,  209,  210,  380,   87,  361,  209,
    861861
    862862      202,  202,  202,  202,  202,  202,  352,  352,  352,  352,
    863863      360,   87,  361,  362,  360,  360,  361,  361,  360,  363,
    864864      361,  360,  360,  361,  361,  369,  369,  370,  369,  370,
    865       435,   87,  371,  371,  371,  371,  371,  371,  373,  353,
    866       373,   87,  263,  373,  264,  263,   87,  264,  369,  402,
    867        87,  369,  234,  235,  236,  406,  237,  236,  388,  401,
    868       373,   87,  373,   87,   87,  372,  390,  373,  105,  105,
    869       105,  105,  105,  105,  236,  235,  236,  404,   87,  237,
    870       405,  236,  403,  408,  388,  106,  246,  246,  246,  246,
    871       246,  246,  391,   87,   87,   87,   87,   87,   87,  419,
    872 
    873        87,  255,  425,  432,   87,  420,  434,  106,  376,  376,
    874       376,  376,  376,  376,  381,  409,  413,  105,  105,  105,
    875       105,  105,  105,   87,  234,  245,  236,  245,  237,  236,
    876       246,  246,  246,  246,  246,  246,   87,  383,  410,  384,
    877        87,  377,   87,  385,  411,  412,  236,   87,  236,  386,
    878       255,  237,   87,  236,  112,  112,  112,  112,  112,  112,
    879       414,  387,  415,  417,  418,  384,   87,  416,   87,  385,
    880        87,   87,   87,   87,   87,   87,   87,   87,   87,  421,
    881       427,  426,  433,   87,  437,   87,   87,  260,  423,  424,
    882        87,   87,  436,  429,  428,  422,   87,  430,  431,  439,
    883 
    884        87,  438,   87,   87,  446,  441,  440,  442,  443,   87,
    885        87,   87,   87,   87,   87,  445,   87,   87,   87,   87,
    886        87,  448,  447,   87,   87,  444,  449,  451,   87,  456,
    887        87,  450,   87,   87,   87,  452,  455,  454,   87,  453,
    888       457,  462,  460,  461,   87,   87,  458,  464,   87,  515,
    889       459,  463,  465,  466,  344,  201,  201,   87,  891,  344,
    890       467,  345,  199,  211,  211,  211,  211,  352,  352,  352,
    891       352,  360,  360,  361,  361,  371,  371,  371,  371,  371,
    892       371,  370,  569,  370,  492,  492,  371,  371,  371,  371,
    893       371,  371,  891,   87,  493,  494,  477,  488,  488,  488,
    894 
    895       488,  488,  488,  233,  233,  233,  233,  233,  233,  516,
    896       492,  492,   87,  234,   87,  236,   87,  237,  236,  242,
    897       242,  242,  242,  105,  105,  495,  381,  517,   87,   87,
    898       489,  496,   87,  518,   87,  236,  374,  236,  519,  520,
    899       237,  521,  236,  376,  376,  376,  376,  376,  376,  383,
    900        87,  384,  375,  496,   87,  385,  522,  496,  497,  891,
    901       497,  386,   87,  498,  498,  498,  498,  498,  498,   87,
    902       525,  495,  526,  387,   87,  524,  377,  384,  523,  496,
    903        87,  385,  383,   87,  384,   87,   87,  527,  385,   87,
    904        87,  532,   87,   87,  502,   87,  499,   87,  535,  528,
    905 
    906       529,  537,  530,  531,  533,   87,  387,   87,   87,  541,
    907       384,  534,  538,   87,  385,   87,  536,   87,   87,   87,
    908       539,  540,   87,   87,  546,   87,   87,   87,  544,  542,
    909        87,  548,   87,   87,  547,  543,   87,   87,  549,   87,
    910       545,   87,  552,   87,   87,  550,  556,  554,  551,   87,
    911       559,   87,  553,  555,   87,   87,  557,   87,   87,  558,
    912        87,   87,   87,  564,  560,  567,  563,  568,   87,  561,
    913       566,  562,   87,  565,   87,   87,  571,   87,   87,  573,
    914       627,  201,  492,  570,  576,  574,  572,  577,  211,  211,
    915       211,  211,  493,   87,  575,  488,  488,  488,  488,  488,
    916 
    917       488,  376,  376,  376,  376,  376,  376,   87,  492,   87,
    918       618,  234,  595,  236,  595,  237,  236,  596,  596,  596,
    919       596,  596,  596,  492,   87,  599,  492,  621,  489,   87,
    920        87,  623,   87,  236,  490,  236,  598,  619,  237,   87,
    921       236,  498,  498,  498,  498,  498,  498,  620,   87,  492,
    922       597,  599,  492,  600,  600,  600,  600,  600,  600,   87,
    923       631,  622,   87,   87,  625,  891,   87,  891,   87,  601,
    924       497,  602,  497,  603,  602,  498,  498,  498,  498,  498,
    925       498,  624,  628,   87,   87,  630,  604,   87,   87,   87,
    926        87,  602,  633,  602,  626,  636,  603,  632,  602,  629,
    927 
    928       634,   87,   87,  635,   87,   87,   87,  642,   87,   87,
    929       637,  641,   87,   87,  640,   87,   87,  643,  647,  639,
    930        87,   87,  866,   87,   87,   87,  638,   87,   87,  644,
    931       645,  646,  648,  650,   87,   87,   87,  649,   87,  653,
    932       651,   87,  652,   87,  654,  655,   87,   87,   87,   87,
    933       656,  657,   87,  660,  659,  661,  664,   87,  658,   87,
    934        87,  663,   87,   87,   87,  668,  665,  688,  688,  662,
    935       666,  701,  702,  891,  891,   87,  667,  488,  488,  488,
    936       488,  488,  488,  596,  596,  596,  596,  596,  596,  595,
    937       688,  595,  704,   87,  596,  596,  596,  596,  596,  596,
    938 
    939       600,  600,  600,  600,  600,  600,  703,  688,   87,  891,
    940       594,  686,  686,  686,  686,  686,  686,  689,   87,  689,
    941        87,   87,  689,  699,   87,  708,   87,  601,  706,  602,
    942       688,  603,  602,  604,  707,   87,  700,  710,  709,  689,
    943        87,  689,   87,  705,  687,   87,  689,   87,   87,  602,
    944        87,  602,   87,  716,  603,  718,  602,  712,   87,   87,
    945        87,   87,  711,   87,  714,   87,   87,  713,   87,  717,
    946       715,   87,  721,  719,   87,  724,   87,   87,  722,  720,
    947       727,   87,   87,   87,  725,   87,  731,  723,   87,  732,
    948       726,   87,   87,   87,  728,  734,   87,  733,  730,   87,
    949 
    950       735,   87,   87,  729,   87,  863,  751,  736,  686,  686,
    951       686,  686,  686,  686,  600,  600,  600,  600,  600,  600,
    952       750,   87,  755,   87,  601,  763,  602,  752,  603,  602,
    953       753,   87,   87,  764,   87,  756,  754,  757,   87,  758,
    954        87,  687,   87,   87,  759,  767,  602,  690,  602,  761,
    955        87,  603,  766,  602,   87,  760,   87,  762,   87,  765,
    956        87,  768,   87,  769,   87,   87,   87,   87,  770,   87,
    957        87,   87,   87,   87,  771,   87,  774,   87,  772,   87,
    958        87,  780,   87,   87,  796,   87,  781,  773,  775,  777,
    959        87,   87,  798,  776,  778,  797,  779,  686,  686,  686,
    960 
    961       686,  686,  686,  794,   87,   87,   87,  795,  799,  802,
    962       804,   87,   87,   87,  805,  806,   87,  801,  803,  808,
    963       807,  800,   87,   87,   87,  809,   87,   87,   87,   87,
    964       743,   87,   87,   87,   87,  830,  832,   87,   87,  810,
    965       833,   87,  835,   87,   87,   87,  811,  829,  836,  812,
    966       813,   87,  828,  840,  838,  827,  831,   87,   87,  834,
    967       839,   87,   87,   87,   87,  837,   87,   87,   87,  854,
    968        87,  853,  842,   87,  841,   87,  855,   87,  843,   87,
    969       858,   87,  860,   87,  852,  870,  861,   87,  856,   87,
    970       859,   87,   87,   87,  857,   87,  862,  868,  864,   87,
    971 
    972       867,   87,  869,  881,   87,   87,  871,  872,  873,   87,
    973       876,   87,  874,  875,  877,   87,   87,   87,   87,  879,
    974       880,   87,   87,   87,   87,  878,   87,   87,   87,  891,
    975        87,  884,  865,   87,   87,   87,  883,  885,   87,  882,
    976       890,   87,  891,  891,  851,  886,  888,  887,  891,  889,
    977        69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
    978        69,   69,   69,   75,   75,   75,   75,   75,   75,   75,
    979        75,   75,   75,   75,   75,   75,   78,   78,   78,   78,
    980        78,   78,   78,   78,   78,   78,   78,   78,   78,   86,
    981       850,  891,   86,  848,   86,   86,   86,   86,   86,  140,
    982 
    983       891,  847,  891,  140,  140,  140,  140,  140,  140,  199,
    984       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
    985       199,  199,  204,  846,  891,  204,  845,  204,  204,  204,
    986       204,  204,  208,   87,  208,  208,   87,  208,  208,  208,
    987       208,  208,  208,   87,  208,  216,  891,  826,  216,  216,
    988       216,  216,  216,  216,  216,  216,  891,  216,  239,  239,
    989       239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
    990       239,  253,  253,  825,  253,  823,  891,  821,  253,  269,
    991       891,  819,  269,  891,  269,  269,  269,  269,  269,  273,
    992       817,  273,  815,   87,   87,  273,  275,   87,  275,   87,
    993 
    994        87,   87,  275,  348,   87,  348,   87,   87,   87,  348,
    995       350,   87,  350,   87,  891,  793,  350,  354,  791,  354,
    996       891,  891,  788,  354,  356,  786,  356,  784,   87,   87,
    997       356,  358,   87,  358,   87,   87,   87,  358,  365,   87,
    998       365,  749,  746,  745,  365,  367,  743,  367,  205,  739,
    999       738,  367,  239,  239,  239,  239,  239,  239,  239,  239,
    1000       239,  239,  239,  239,  239,  380,  670,  380,  382,  382,
    1001        87,  382,  382,  382,   87,  382,  253,  253,   87,  253,
    1002       392,   87,  392,   87,   87,   87,  392,  394,   87,  394,
    1003        87,   87,   87,  394,  396,   87,  396,   87,   87,   87,
    1004 
    1005       396,  273,  697,  273,  398,  696,  398,  694,  692,  690,
    1006       398,  275,  598,  275,   86,  685,  684,   86,  682,   86,
     865      894,  411,  371,  371,  371,  371,  371,  371,  373,  353,
     866      373,   87,  103,  373,  242,  242,  242,  242,  369,  390,
     867      392,  369,  375,  375,  375,  375,  375,  375,  407,  263,
     868      373,  264,  373,   87,  263,  372,  264,  373,   87,  105,
     869      105,  105,  105,  105,  105,  390,  393,  243,  246,  246,
     870      246,  246,  246,  246,  406,  376,  106,  245,   87,  245,
     871      424,   87,  246,  246,  246,  246,  246,  246,   87,   87,
     872
     873       87,  403,  255,   87,  423,  408,   87,  894,  106,  378,
     874      378,  378,  378,  378,  378,  383,  404,  405,  105,  105,
     875      105,  105,  105,  105,  416,  234,  415,  236,   87,  237,
     876      236,  112,  112,  112,  112,  112,  112,   87,  385,   87,
     877      386,   87,  379,  418,  387,   87,  410,  236,   87,  236,
     878      388,  255,  237,   87,  236,  419,  420,  422,   87,   87,
     879       87,   87,  389,  417,  260,  421,  386,   87,  412,   87,
     880      387,   87,  427,   87,  413,  414,  425,  426,  428,   87,
     881      429,  430,   87,   87,   87,   87,   87,  434,  435,  431,
     882      436,   87,   87,   87,   87,  438,   87,  439,   87,   87,
     883
     884      432,  433,  441,  443,  437,   87,   87,   87,  440,  442,
     885      444,  445,   87,   87,   87,  447,   87,  448,   87,   87,
     886      449,   87,   87,  450,   87,   87,   87,   87,  446,  451,
     887       87,  453,  452,  458,   87,   87,  143,   87,  454,  457,
     888       87,  456,  455,  464,   87,  462,   87,  459,  463,  460,
     889      721,   87,  461,  466,  467,  465,  468,  344,  201,  469,
     890      201,  360,  344,  361,  345,   87,  199,  211,  211,  211,
     891      211,  352,  352,  352,  352,  360,  518,  361,   87,   87,
     892       87,  371,  371,  371,  371,  371,  371,  370,  495,  370,
     893      523,   87,  371,  371,  371,  371,  371,  371,  496,   87,
     894
     895      479,  490,  490,  490,  490,  490,  490,  233,  233,  233,
     896      233,  233,  233,  525,  495,  519,   87,  234,   87,  236,
     897       87,  237,  236,  242,  242,  242,  242,  105,  105,  498,
     898       87,  520,  495,  527,  491,  499,  499,  521,   87,  236,
     899      374,  236,  497,   87,  237,  542,  236,  375,  375,  375,
     900      375,  375,  375,  383,  498,   87,  377,   87,  495,  528,
     901      529,  499,  499,  234,  235,  236,  522,  237,  236,  378,
     902      378,  378,  378,  378,  378,   87,  385,  533,  386,   87,
     903      376,  538,  387,   87,  894,  236,  235,  236,  388,  500,
     904      237,  500,  236,   87,  501,  501,  501,  501,  501,  501,
     905
     906      389,   87,  379,   87,  386,   87,  530,  385,  387,  386,
     907      524,   87,  526,  387,   87,   87,   87,   87,   87,  505,
     908      535,  531,  532,   87,   87,  540,   87,  502,   87,  534,
     909       87,  389,   87,  536,   87,  386,  541,  539,  543,  387,
     910      537,  547,  544,   87,  545,   87,   87,   87,  546,  549,
     911       87,   87,   87,   87,  553,  548,  551,   87,   87,   87,
     912      550,  552,   87,   87,   87,   87,  555,  559,  557,   87,
     913       87,   87,  554,  562,  556,   87,  560,  558,   87,   87,
     914      567,   87,   87,   87,  563,  561,  570,  566,  571,  564,
     915      565,  569,   87,  568,   87,   87,   87,  201,   87,   87,
     916
     917      574,  630,   87,  580,   87,  573,  577,  572,  579,   87,
     918      575,  576,  211,  211,  211,  211,   87,  622,  578,  490,
     919      490,  490,  490,  490,  490,  375,  375,  375,  375,  375,
     920      375,  626,  645,  621,   87,  234,   87,  236,   87,  237,
     921      236,  378,  378,  378,  378,  378,  378,  495,   87,  602,
     922      495,  623,  491,  628,  624,  495,   87,  236,  492,  236,
     923      496,  598,  237,  598,  236,  601,  599,  599,  599,  599,
     924      599,  599,   87,  495,  493,  602,  495,  634,   87,   87,
     925      662,  495,  501,  501,  501,  501,  501,  501,  500,   87,
     926      500,  625,  627,  501,  501,  501,  501,  501,  501,  600,
     927
     928      603,  603,  603,  603,  603,  603,   87,   87,   87,  631,
     929       87,   87,   87,   87,   87,  639,  604,  629,  605,  635,
     930      606,  605,  632,   87,  637,  638,   87,  633,  636,   87,
     931       87,   87,   87,  607,   87,  640,  641,  644,  605,  643,
     932      605,   87,   87,  606,   87,  605,  642,   87,  647,  648,
     933      646,   87,   87,   87,   87,   87,  650,  649,   87,  656,
     934      651,   87,   87,   87,   87,  653,   87,   87,   87,  652,
     935      654,  657,  658,  655,   87,  664,  663,  660,   87,  667,
     936       87,   87,   87,  659,  661,   87,   87,   87,   87,  668,
     937      666,  669,  762,  691,  691,  704,  665,   87,  894,  670,
     938
     939      671,  490,  490,  490,  490,  490,  490,  599,  599,  599,
     940      599,  599,  599,  598,  707,  598,  691,   87,  599,  599,
     941      599,  599,  599,  599,  603,  603,  603,  603,  603,  603,
     942      706,  691,   87,   87,  597,  689,  689,  689,  689,  689,
     943      689,  692,   87,  692,   87,   87,  692,  702,  844,   87,
     944      711,  604,  709,  605,  691,  606,  605,  607,  705,   87,
     945      703,   87,  712,  692,   87,  692,   87,  708,  690,  710,
     946      692,   87,   87,  605,   87,  605,   87,  713,  606,   87,
     947      605,   87,  719,   87,   87,   87,  715,   87,  714,   87,
     948       87,  717,   87,   87,  716,   87,  722,   87,  718,  724,
     949
     950      720,  727,   87,  725,  723,   87,  730,   87,   87,  726,
     951       87,   87,  728,   87,   87,  729,   87,  734,  735,  736,
     952       87,  755,  731,  737,  733,  738,   87,  894,   87,  739,
     953      754,  869,  732,  689,  689,  689,  689,  689,  689,  603,
     954      603,  603,  603,  603,  603,   87,   87,  753,  758,  604,
     955       87,  605,  756,  606,  605,  757,   87,   87,   87,  759,
     956      760,   87,   87,   87,  761,  765,  690,  764,  767,  770,
     957       87,  605,  693,  605,  763,   87,  606,   87,  605,  769,
     958      768,   87,   87,   87,  766,  771,   87,   87,  772,  773,
     959       87,   87,   87,  774,   87,   87,   87,   87,   87,  775,
     960
     961      777,   87,   87,   87,   87,   87,  783,   87,  776,   87,
     962      778,  784,  781,  801,  780,  779,  800,  782,  689,  689,
     963      689,  689,  689,  689,  797,   87,  798,   87,  802,   87,
     964      799,  807,  805,  804,   87,   87,   87,   87,  808,  809,
     965      811,   87,   87,   87,  803,  812,   87,  806,  810,   87,
     966       87,  746,   87,   87,   87,  838,   87,   87,  813,   87,
     967       87,   87,   87,  833,  835,  836,   87,   87,   87,  814,
     968      839,  841,  815,  816,  831,  832,  834,   87,  840,  830,
     969      842,   87,   87,   87,  837,   87,   87,   87,   87,   87,
     970      857,  843,   87,   87,  845,  856,  861,   87,  858,   87,
     971
     972       87,  846,  863,  864,   87,   87,   87,  855,   87,   87,
     973      859,  872,   87,  865,  862,  867,  860,  866,  870,   87,
     974       87,   87,  873,   87,  871,  874,  875,   87,   87,   87,
     975      876,  877,   87,   87,   87,  880,   87,  882,   87,  883,
     976       87,  878,   87,  881,  879,   87,   87,   87,   87,   87,
     977       87,  894,   87,  894,  887,  894,  894,  886,  868,  888,
     978      884,  885,  893,   87,   87,   87,  891,   87,   87,  889,
     979      890,  894,  892,   69,   69,   69,   69,   69,   69,   69,
     980       69,   69,   69,   69,   69,   69,   75,   75,   75,   75,
     981       75,   75,   75,   75,   75,   75,   75,   75,   75,   78,
     982
     983       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
     984       78,   78,   86,  894,  854,   86,  894,   86,   86,   86,
     985       86,   86,  140,  853,  894,  851,  140,  140,  140,  140,
     986      140,  140,  199,  199,  199,  199,  199,  199,  199,  199,
     987      199,  199,  199,  199,  199,  204,  894,  850,  204,  894,
     988      204,  204,  204,  204,  204,  208,  849,  208,  208,  894,
     989      208,  208,  208,  208,  208,  208,  848,  208,  216,   87,
     990       87,  216,  216,  216,  216,  216,  216,  216,  216,   87,
     991      216,  239,  239,  239,  239,  239,  239,  239,  239,  239,
     992      239,  239,  239,  239,  253,  253,  894,  253,  829,  894,
     993
     994      828,  253,  269,  826,  894,  269,  824,  269,  269,  269,
     995      269,  269,  273,  894,  273,  822,  894,  820,  273,  275,
     996      818,  275,   87,   87,   87,  275,  348,   87,  348,   87,
     997       87,   87,  348,  350,   87,  350,   87,   87,   87,  350,
     998      354,   87,  354,  894,  796,  794,  354,  356,  894,  356,
     999      894,  791,  789,  356,  358,  787,  358,   87,   87,   87,
     1000      358,  365,   87,  365,   87,   87,   87,  365,  367,  752,
     1001      367,  749,  748,  746,  367,  382,  205,  382,  384,  384,
     1002      742,  384,  384,  384,  741,  384,  253,  253,  673,  253,
     1003      269,   87,   87,  269,   87,  269,  269,  269,  269,  269,
     1004
     1005      394,   87,  394,   87,   87,   87,  394,  396,   87,  396,
     1006       87,   87,   87,  396,  398,   87,  398,   87,   87,   87,
     1007      398,  273,  700,  273,  400,  699,  400,  697,  695,  693,
     1008      400,  275,  601,  275,   86,  688,  687,   86,  685,   86,
    10071009       86,   86,   86,   86,  199,  199,  199,  199,  199,  199,
    1008       199,  199,  199,  199,  199,  199,  199,  468,  468,  468,
    1009       468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
    1010       469,  680,  469,  678,  676,  674,  469,  471,  672,  471,
    1011       670,   87,   87,  471,  473,   87,  473,   87,   87,   87,
    1012       473,  348,   87,  348,  475,   87,  475,   87,   87,   87,
    1013       475,  350,  617,  350,  478,  615,  478,  613,  611,  609,
    1014       478,  354,  607,  354,  480,  502,  480,  605,  605,  594,
    1015 
    1016       480,  356,  593,  356,  482,  591,  482,  483,  483,  589,
    1017       482,  358,  587,  358,  484,  585,  484,  583,  581,  579,
    1018       484,  365,   87,  365,  486,   87,  486,   87,   87,   87,
    1019       486,  367,   87,  367,  491,   87,  491,   87,  491,  514,
    1020       491,  380,  512,  380,  510,  380,  508,  380,  382,  382,
    1021       506,  382,  382,  382,  504,  382,  503,  490,  503,  487,
    1022       485,  361,  503,  505,  361,  505,  483,  481,  479,  505,
    1023       507,  476,  507,  474,  472,  470,  507,  392,   87,  392,
    1024       509,   87,  509,   87,  400,  399,  509,  394,  397,  394,
    1025       511,  395,  511,  393,  270,  265,  511,  396,  264,  396,
    1026 
    1027       513,  389,  513,  389,  252,  379,  513,  398,  379,  398,
    1028        86,  240,  374,   86,  368,   86,   86,   86,   86,   86,
    1029       468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
    1030       468,  468,  468,  578,  366,  578,  364,  360,  359,  578,
    1031       469,  357,  469,  580,  355,  580,  351,  349,  205,  580,
    1032       471,  201,  471,  582,   87,  582,  277,  276,  274,  582,
    1033       473,  270,  473,  584,  265,  584,  268,  265,  263,  584,
    1034       475,  262,  475,  586,  261,  586,  240,  232,   85,  586,
    1035       478,   85,  478,  588,   87,  588,  205,  203,   85,  588,
    1036       480,  122,  480,  482,  117,  482,   87,  891,   70,  482,
    1037 
    1038       590,   70,  590,  891,  891,  891,  590,  484,  891,  484,
    1039       592,  891,  592,  891,  891,  891,  592,  486,  891,  486,
    1040       491,  891,  491,  891,  491,  891,  491,  382,  891,  382,
    1041       891,  891,  891,  382,  606,  891,  606,  891,  891,  891,
    1042       606,  503,  891,  503,  608,  891,  608,  891,  891,  891,
    1043       608,  505,  891,  505,  610,  891,  610,  891,  891,  891,
    1044       610,  507,  891,  507,  612,  891,  612,  891,  891,  891,
    1045       612,  509,  891,  509,  614,  891,  614,  891,  891,  891,
    1046       614,  511,  891,  511,  616,  891,  616,  891,  891,  891,
    1047       616,  513,  891,  513,   86,  891,  891,   86,  891,   86,
    1048 
    1049        86,   86,   86,   86,  669,  669,  669,  669,  669,  669,
    1050       669,  669,  669,  669,  669,  669,  669,  671,  891,  671,
    1051       891,  891,  891,  671,  578,  891,  578,  673,  891,  673,
    1052       891,  891,  891,  673,  580,  891,  580,  675,  891,  675,
    1053       891,  891,  891,  675,  582,  891,  582,  677,  891,  677,
    1054       891,  891,  891,  677,  584,  891,  584,  679,  891,  679,
    1055       891,  891,  891,  679,  586,  891,  586,  681,  891,  681,
    1056       891,  891,  891,  681,  588,  891,  588,  683,  891,  683,
    1057       891,  891,  891,  683,  590,  891,  590,   86,  891,   86,
    1058       891,  891,  891,   86,  592,  891,  592,  491,  891,  491,
    1059 
    1060       891,  891,  891,  491,  691,  891,  691,  891,  891,  891,
    1061       691,  606,  891,  606,  693,  891,  693,  891,  891,  891,
    1062       693,  608,  891,  608,  695,  891,  695,  891,  891,  891,
    1063       695,  610,  891,  610,  140,  891,  140,  891,  891,  891,
    1064       140,  612,  891,  612,  698,  891,  698,  614,  891,  614,
    1065        86,  891,  891,   86,  891,   86,   86,   86,   86,   86,
    1066       616,  891,  616,  669,  669,  669,  669,  669,  669,  669,
    1067       669,  669,  669,  669,  669,  669,  737,  891,  737,  891,
    1068       891,  891,  737,  671,  891,  671,  204,  891,  204,  891,
    1069       891,  891,  204,  673,  891,  673,  740,  891,  740,  675,
    1070 
    1071       891,  675,  204,  891,  891,  204,  891,  204,  204,  204,
    1072       204,  204,  677,  891,  677,  741,  891,  741,  679,  891,
    1073       679,  681,  891,  681,  742,  891,  742,  683,  891,  683,
    1074        86,  891,   86,  744,  891,  744,  891,  891,  891,  744,
    1075       691,  891,  691,  269,  891,  269,  891,  891,  891,  269,
    1076       693,  891,  693,  747,  891,  747,  695,  891,  695,  140,
    1077       891,  140,  748,  891,  748,  891,  891,  891,  748,   86,
    1078       891,  891,   86,  891,   86,   86,   86,   86,   86,  782,
    1079       891,  782,  737,  891,  737,  204,  891,  204,  783,  891,
    1080       783,  891,  891,  891,  783,  785,  891,  785,  891,  891,
    1081 
    1082       891,  785,  787,  891,  787,  891,  891,  891,  787,  789,
    1083       891,  789,  790,  891,  790,  891,  891,  891,  790,  792,
    1084       891,  792,  891,  891,  891,  792,  814,  891,  814,  891,
    1085       891,  891,  814,  816,  891,  816,  891,  891,  891,  816,
    1086       818,  891,  818,  891,  891,  891,  818,  820,  891,  820,
    1087       891,  891,  891,  820,  822,  891,  822,  891,  891,  891,
    1088       822,  824,  891,  824,  891,  891,  891,  824,  616,  891,
    1089       616,  891,  891,  891,  616,  844,  891,  844,  891,  891,
    1090       891,  844,  677,  891,  677,  891,  891,  891,  677,  681,
    1091       891,  681,  891,  891,  891,  681,   86,  891,   86,  891,
    1092 
    1093       891,  891,   86,  849,  891,  849,  891,  891,  891,  849,
    1094       140,  891,  140,  891,  891,  891,  140,  204,  891,  204,
    1095       891,  891,  891,  204,   11,  891,  891,  891,  891,  891,
    1096       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1097       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1098       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1099       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1100       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1101       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1102       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1103 
    1104       891,  891,  891,  891,  891,  891,  891,  891,  891,  891
     1010      199,  199,  199,  199,  199,  199,  199,  470,  470,  470,
     1011      470,  470,  470,  470,  470,  470,  470,  470,  470,  470,
     1012      471,  683,  471,  681,  679,  677,  471,  473,  675,  473,
     1013      673,   87,   87,  473,  475,   87,  475,   87,   87,   87,
     1014      475,  348,   87,  348,  477,   87,  477,   87,   87,   87,
     1015
     1016      477,  350,  620,  350,  480,  618,  480,  616,  614,  612,
     1017      480,  354,  610,  354,  482,  505,  482,  608,  608,  597,
     1018      482,  356,  596,  356,  484,  594,  484,  485,  485,  592,
     1019      484,  358,  590,  358,  486,  588,  486,  586,  584,  582,
     1020      486,  365,   87,  365,  488,   87,  488,   87,   87,   87,
     1021      488,  367,   87,  367,  494,   87,  494,   87,  494,  517,
     1022      494,  382,  515,  382,  513,  382,  511,  382,  384,  384,
     1023      509,  384,  384,  384,  507,  384,  506,  493,  506,  492,
     1024      489,  487,  506,  508,  361,  508,  361,  485,  483,  508,
     1025      510,  481,  510,  478,  476,  474,  510,  394,  472,  394,
     1026
     1027      512,   87,  512,   87,   87,  402,  512,  396,  401,  396,
     1028      514,  399,  514,  397,  395,  270,  514,  398,  265,  398,
     1029      516,  264,  516,  391,  391,  252,  516,  400,  381,  400,
     1030       86,  381,  240,   86,  374,   86,   86,   86,   86,   86,
     1031      470,  470,  470,  470,  470,  470,  470,  470,  470,  470,
     1032      470,  470,  470,  581,  368,  581,  366,  364,  360,  581,
     1033      471,  359,  471,  583,  357,  583,  355,  351,  349,  583,
     1034      473,  205,  473,  585,  201,  585,   87,  277,  276,  585,
     1035      475,  274,  475,  587,  270,  587,  265,  268,  265,  587,
     1036      477,  263,  477,  589,  262,  589,  261,  240,  232,  589,
     1037
     1038      480,   85,  480,  591,   85,  591,   87,  205,  203,  591,
     1039      482,   85,  482,  484,  122,  484,  117,   87,  894,  484,
     1040      593,   70,  593,   70,  894,  894,  593,  486,  894,  486,
     1041      595,  894,  595,  894,  894,  894,  595,  488,  894,  488,
     1042      494,  894,  494,  894,  494,  894,  494,  384,  894,  384,
     1043      894,  894,  894,  384,  609,  894,  609,  894,  894,  894,
     1044      609,  506,  894,  506,  611,  894,  611,  894,  894,  894,
     1045      611,  508,  894,  508,  613,  894,  613,  894,  894,  894,
     1046      613,  510,  894,  510,  615,  894,  615,  894,  894,  894,
     1047      615,  512,  894,  512,  617,  894,  617,  894,  894,  894,
     1048
     1049      617,  514,  894,  514,  619,  894,  619,  894,  894,  894,
     1050      619,  516,  894,  516,   86,  894,  894,   86,  894,   86,
     1051       86,   86,   86,   86,  672,  672,  672,  672,  672,  672,
     1052      672,  672,  672,  672,  672,  672,  672,  674,  894,  674,
     1053      894,  894,  894,  674,  581,  894,  581,  676,  894,  676,
     1054      894,  894,  894,  676,  583,  894,  583,  678,  894,  678,
     1055      894,  894,  894,  678,  585,  894,  585,  680,  894,  680,
     1056      894,  894,  894,  680,  587,  894,  587,  682,  894,  682,
     1057      894,  894,  894,  682,  589,  894,  589,  684,  894,  684,
     1058      894,  894,  894,  684,  591,  894,  591,  686,  894,  686,
     1059
     1060      894,  894,  894,  686,  593,  894,  593,   86,  894,   86,
     1061      894,  894,  894,   86,  595,  894,  595,  494,  894,  494,
     1062      894,  894,  894,  494,  694,  894,  694,  894,  894,  894,
     1063      694,  609,  894,  609,  696,  894,  696,  894,  894,  894,
     1064      696,  611,  894,  611,  698,  894,  698,  894,  894,  894,
     1065      698,  613,  894,  613,  140,  894,  140,  894,  894,  894,
     1066      140,  615,  894,  615,  701,  894,  701,  617,  894,  617,
     1067       86,  894,  894,   86,  894,   86,   86,   86,   86,   86,
     1068      619,  894,  619,  672,  672,  672,  672,  672,  672,  672,
     1069      672,  672,  672,  672,  672,  672,  740,  894,  740,  894,
     1070
     1071      894,  894,  740,  674,  894,  674,  204,  894,  204,  894,
     1072      894,  894,  204,  676,  894,  676,  743,  894,  743,  678,
     1073      894,  678,  204,  894,  894,  204,  894,  204,  204,  204,
     1074      204,  204,  680,  894,  680,  744,  894,  744,  682,  894,
     1075      682,  684,  894,  684,  745,  894,  745,  686,  894,  686,
     1076       86,  894,   86,  747,  894,  747,  894,  894,  894,  747,
     1077      694,  894,  694,  269,  894,  269,  894,  894,  894,  269,
     1078      696,  894,  696,  750,  894,  750,  698,  894,  698,  140,
     1079      894,  140,  751,  894,  751,  894,  894,  894,  751,   86,
     1080      894,  894,   86,  894,   86,   86,   86,   86,   86,  785,
     1081
     1082      894,  785,  740,  894,  740,  204,  894,  204,  786,  894,
     1083      786,  894,  894,  894,  786,  788,  894,  788,  894,  894,
     1084      894,  788,  790,  894,  790,  894,  894,  894,  790,  792,
     1085      894,  792,  793,  894,  793,  894,  894,  894,  793,  795,
     1086      894,  795,  894,  894,  894,  795,  817,  894,  817,  894,
     1087      894,  894,  817,  819,  894,  819,  894,  894,  894,  819,
     1088      821,  894,  821,  894,  894,  894,  821,  823,  894,  823,
     1089      894,  894,  894,  823,  825,  894,  825,  894,  894,  894,
     1090      825,  827,  894,  827,  894,  894,  894,  827,  619,  894,
     1091      619,  894,  894,  894,  619,  847,  894,  847,  894,  894,
     1092
     1093      894,  847,  680,  894,  680,  894,  894,  894,  680,  684,
     1094      894,  684,  894,  894,  894,  684,   86,  894,   86,  894,
     1095      894,  894,   86,  852,  894,  852,  894,  894,  894,  852,
     1096      140,  894,  140,  894,  894,  894,  140,  204,  894,  204,
     1097      894,  894,  894,  204,   11,  894,  894,  894,  894,  894,
     1098      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1099      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1100      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1101      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1102      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1103
     1104      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1105      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1106      894,  894,  894,  894,  894,  894,  894,  894,  894,  894
    11051107    } ;
    11061108
    1107 static yyconst flex_int16_t yy_chk[2911] =
     1109static yyconst flex_int16_t yy_chk[2931] =
    11081110    {   0,
    11091111        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11261128        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11271129        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
    1128         8,    9,   10,   37,   37,   20,   39,    9,   10,  890,
     1130        8,    9,   10,   37,   37,   20,   39,    9,   10,  893,
    11291131        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
    11301132
     
    11371139       47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
    11381140       45,   30,   40,   45,   45,   40,   49,   30,   45,   56,
    1139        62,   45,   49,   30,   73,  889,  127,   53,  127,   51,
     1141       62,   45,   49,   30,   73,  892,  127,   53,  127,   51,
    11401142       61,   30,   62,   55,   30,   31,  108,   31,   31,   31,
    11411143
     
    11451147       31,  129,  107,  154,  151,   52,   31,   52,  107,   87,
    11461148       52,   60,   31,  132,   52,  132,   60,  114,  175,  154,
    1147        31,   38,  151,  385,  111,   38,   38,   58,   38,   60,
     1149       31,   38,  151,  387,  111,   38,   38,   58,   38,   60,
    11481150       38,   38,  113,   38,  107,   38,   59,  130,  113,   58,
    1149        58,  116,  111,  164,   38,   38,   38,  385,   59,   58,
     1151       58,  116,  111,  164,   38,   38,   38,  387,   59,   58,
    11501152      111,  130,   58,  130,  142,   60,   59,  131,   60,  116,
    11511153      164,   68,   68,   59,  113,   38,   68,  116,   38,  131,
    11521154
    1153       110,  131,   60,   67,   67,   67,   67,   67,   67,  881,
     1155      110,  131,   60,   67,   67,   67,   67,   67,   67,  884,
    11541156      142,   67,   68,   68,   68,   68,   68,   68,   80,   80,
    11551157       80,   80,   80,   80,  153,   38,   38,   77,   77,  134,
    11561158      110,  134,   77,  153,   77,  110,  135,  135,  135,   77,
    1157        82,   82,   82,   82,   82,   82,  880,  243,   77,   77,
     1159       82,   82,   82,   82,   82,   82,  883,  243,   77,   77,
    11581160       77,   77,   83,   83,   83,   83,   83,   83,  110,   77,
    11591161      103,  103,  103,  103,  103,  103,  104,  104,  104,  104,
    11601162      133,  133,  137,  133,  137,   77,  145,  139,   77,  139,
    11611163      157,  145,  243,   77,   77,  152,  156,   77,   77,  155,
    1162       166,  150,  157,  103,  104,   77,  159,  168,   77,  104,
     1164      166,  150,  157,  880,  104,   77,  159,  168,   77,  104,
    11631165
    11641166       77,   77,   77,  152,   77,   85,  150,  155,  156,   85,
    11651167       85,  166,  159,  150,   85,   85,  161,   85,  160,   85,
    11661168      145,  162,  104,  167,  168,  161,  169,  163,   85,   85,
    1167        85,  105,  163,  105,  105,  105,  105,  105,  105,  877,
     1169       85,  105,  163,  105,  105,  105,  105,  105,  105,  879,
    11681170      160,  171,  162,  162,  165,  163,  167,  169,  173,   85,
    11691171      105,  106,   85,  106,  165,  172,  106,  106,  106,  106,
     
    11781180      189,  158,  158,  188,  192,  158,  194,  158,  284,  219,
    11791181      185,  219,  158,  158,  158,  193,  158,  192,  220,  194,
    1180       220,  191,  198,  198,  191,  192,  205,  198,  193,  876,
     1182      220,  191,  198,  198,  191,  192,  205,  198,  193,  877,
    11811183      193,  197,  197,  197,  197,  197,  197,  200,  200,  197,
    11821184      248,  221,  200,  198,  198,  198,  198,  198,  198,  202,
    11831185      202,  223,  205,  223,  202,  221,  202,  221,  200,  200,
    1184       200,  200,  200,  200,  209,  209,  248,  338,  222,  209,
     1186      200,  200,  200,  200,  209,  209,  248,  876,  222,  209,
    11851187
    11861188      202,  202,  202,  202,  202,  202,  212,  212,  212,  212,
    1187       222,  309,  222,  224,  224,  225,  224,  225,  226,  226,
     1189      222,  286,  222,  224,  224,  225,  224,  225,  226,  226,
    11881190      226,  228,  229,  228,  229,  234,  234,  235,  236,  235,
    1189       309,  279,  235,  235,  235,  235,  235,  235,  237,  212,
    1190       237,  338,  266,  237,  266,  267,  278,  267,  234,  279,
    1191       283,  236,  241,  241,  241,  283,  241,  241,  256,  278,
    1192       237,  281,  237,  282,  280,  235,  270,  237,  244,  244,
    1193       244,  244,  244,  244,  241,  241,  241,  281,  285,  241,
    1194       282,  241,  280,  285,  256,  244,  245,  245,  245,  245,
    1195       245,  245,  270,  288,  293,  286,  294,  300,  306,  293,
    1196 
    1197       308,  244,  300,  306,  874,  294,  308,  244,  246,  246,
    1198       246,  246,  246,  246,  253,  286,  288,  255,  255,  255,
    1199       255,  255,  255,  287,  246,  247,  246,  247,  246,  246,
    1200       247,  247,  247,  247,  247,  247,  290,  253,  287,  253,
    1201       873,  246,  289,  253,  287,  287,  246,  292,  246,  253,
    1202       255,  246,  291,  246,  260,  260,  260,  260,  260,  260,
    1203       289,  253,  290,  292,  292,  253,  295,  291,  296,  253,
    1204       297,  299,  301,  302,  303,  304,  305,  307,  311,  295,
    1205       302,  301,  307,  310,  311,  312,  319,  260,  297,  299,
    1206       313,  314,  310,  304,  303,  296,  318,  305,  305,  313,
    1207 
    1208       315,  312,  316,  317,  319,  315,  314,  316,  317,  320,
    1209       322,  323,  324,  326,  325,  318,  327,  328,  331,  329,
    1210       330,  322,  320,  332,  334,  317,  323,  325,  333,  330,
    1211       335,  324,  337,  339,  340,  326,  329,  328,  401,  327,
    1212       331,  337,  334,  335,  341,  343,  332,  340,  342,  401,
    1213       333,  339,  341,  342,  344,  344,  345,  460,  866,  344,
    1214       343,  344,  345,  352,  352,  352,  352,  353,  353,  353,
    1215       353,  362,  363,  362,  363,  370,  370,  370,  370,  370,
    1216       370,  372,  460,  372,  380,  381,  372,  372,  372,  372,
    1217       372,  372,  865,  402,  380,  381,  352,  371,  371,  371,
    1218 
    1219       371,  371,  371,  374,  374,  374,  374,  374,  374,  402,
    1220       380,  381,  403,  371,  404,  371,  864,  371,  371,  375,
    1221       375,  375,  375,  375,  375,  383,  382,  403,  406,  405,
    1222       371,  383,  407,  404,  408,  371,  374,  371,  405,  406,
    1223       371,  407,  371,  376,  376,  376,  376,  376,  376,  382,
    1224       412,  382,  375,  387,  411,  382,  408,  383,  384,  386,
    1225       384,  382,  410,  384,  384,  384,  384,  384,  384,  409,
    1226       411,  387,  412,  382,  413,  410,  376,  382,  409,  387,
    1227       415,  382,  386,  414,  386,  416,  417,  413,  386,  418,
    1228       421,  417,  419,  422,  386,  420,  384,  427,  419,  414,
    1229 
    1230       414,  421,  415,  416,  418,  423,  386,  425,  429,  427,
    1231       386,  418,  422,  430,  386,  431,  420,  432,  433,  434,
    1232       423,  425,  435,  437,  433,  439,  440,  441,  431,  429,
    1233       442,  435,  443,  444,  434,  430,  449,  445,  437,  447,
    1234       432,  450,  441,  451,  454,  439,  445,  443,  440,  452,
    1235       450,  453,  442,  444,  455,  456,  447,  457,  458,  449,
    1236       459,  461,  463,  455,  451,  458,  454,  459,  462,  452,
    1237       457,  453,  466,  456,  464,  467,  462,  525,  863,  463,
    1238       525,  468,  491,  461,  467,  464,  462,  468,  477,  477,
    1239       477,  477,  491,  515,  466,  488,  488,  488,  488,  488,
    1240 
    1241       488,  490,  490,  490,  490,  490,  490,  519,  491,  521,
    1242       515,  488,  492,  488,  492,  488,  488,  492,  492,  492,
    1243       492,  492,  492,  494,  516,  495,  493,  519,  488,  862,
    1244       858,  521,  518,  488,  490,  488,  493,  516,  488,  529,
    1245       488,  497,  497,  497,  497,  497,  497,  518,  520,  494,
    1246       492,  495,  493,  498,  498,  498,  498,  498,  498,  523,
    1247       529,  520,  526,  854,  523,  851,  528,  850,  522,  498,
    1248       499,  498,  499,  498,  498,  499,  499,  499,  499,  499,
    1249       499,  522,  526,  524,  527,  528,  498,  531,  530,  532,
    1250       533,  498,  531,  498,  524,  534,  498,  530,  498,  527,
    1251 
    1252       532,  535,  537,  533,  536,  538,  539,  541,  542,  547,
    1253       535,  539,  544,  541,  538,  545,  546,  542,  547,  537,
    1254       550,  551,  849,  549,  534,  552,  536,  554,  560,  544,
    1255       545,  546,  549,  551,  555,  557,  558,  550,  561,  555,
    1256       552,  562,  554,  565,  557,  558,  564,  567,  566,  568,
    1257       560,  561,  575,  565,  564,  566,  569,  571,  562,  574,
    1258       572,  568,  569,  620,  619,  575,  571,  601,  601,  567,
    1259       572,  619,  620,  848,  847,  622,  574,  594,  594,  594,
    1260       594,  594,  594,  595,  595,  595,  595,  595,  595,  597,
    1261       601,  597,  622,  621,  597,  597,  597,  597,  597,  597,
    1262 
    1263       600,  600,  600,  600,  600,  600,  621,  602,  626,  846,
    1264       594,  596,  596,  596,  596,  596,  596,  603,  618,  603,
    1265       623,  624,  603,  618,  628,  626,  625,  596,  624,  596,
    1266       602,  596,  596,  600,  625,  627,  618,  628,  627,  603,
    1267       629,  603,  630,  623,  596,  631,  603,  632,  633,  596,
    1268       634,  596,  635,  634,  596,  636,  596,  630,  637,  638,
    1269       640,  644,  629,  639,  632,  641,  642,  631,  645,  635,
    1270       633,  646,  639,  637,  650,  642,  651,  656,  640,  638,
    1271       646,  653,  657,  636,  644,  665,  656,  641,  664,  657,
    1272       645,  667,  668,  842,  650,  665,  700,  664,  653,  699,
    1273 
    1274       667,  702,  705,  651,  714,  842,  700,  668,  686,  686,
    1275       686,  686,  686,  686,  690,  690,  690,  690,  690,  690,
    1276       699,  708,  705,  703,  686,  714,  686,  702,  686,  686,
    1277       703,  704,  706,  715,  707,  706,  704,  707,  710,  708,
    1278       712,  686,  711,  717,  710,  718,  686,  690,  686,  712,
    1279       720,  686,  717,  686,  713,  711,  716,  713,  719,  716,
    1280       721,  719,  715,  720,  722,  723,  724,  725,  721,  731,
    1281       728,  718,  732,  735,  722,  733,  725,  736,  723,  756,
    1282       757,  735,  758,  754,  756,  759,  736,  724,  728,  731,
    1283       755,  761,  758,  728,  732,  757,  733,  743,  743,  743,
    1284 
    1285       743,  743,  743,  754,  760,  763,  762,  755,  759,  762,
    1286       764,  766,  768,  769,  766,  768,  770,  761,  763,  770,
    1287       769,  760,  771,  773,  772,  771,  775,  779,  794,  797,
    1288       743,  796,  798,  800,  799,  798,  800,  801,  764,  772,
    1289       801,  803,  804,  807,  810,  805,  773,  797,  805,  775,
    1290       779,  808,  796,  810,  808,  794,  799,  809,  811,  803,
    1291       809,  812,  813,  828,  829,  807,  830,  831,  804,  830,
    1292       832,  829,  812,  834,  811,  856,  831,  833,  813,  837,
    1293       833,  875,  837,  840,  828,  856,  840,  841,  832,  843,
    1294       834,  852,  853,  867,  832,  868,  841,  853,  843,  855,
    1295 
    1296       852,  857,  855,  875,  859,  860,  857,  859,  860,  861,
    1297       868,  869,  861,  867,  869,  870,  871,  872,  878,  871,
    1298       872,  879,  882,  884,  883,  870,  885,  887,  886,  845,
    1299       888,  882,  844,  839,  838,  836,  879,  883,  835,  878,
    1300       888,  827,  826,  825,  824,  884,  886,  885,  823,  887,
    1301       892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
    1302       892,  892,  892,  893,  893,  893,  893,  893,  893,  893,
    1303       893,  893,  893,  893,  893,  893,  894,  894,  894,  894,
    1304       894,  894,  894,  894,  894,  894,  894,  894,  894,  895,
    1305       822,  821,  895,  820,  895,  895,  895,  895,  895,  896,
    1306 
    1307       819,  818,  817,  896,  896,  896,  896,  896,  896,  897,
     1191      869,  286,  235,  235,  235,  235,  235,  235,  237,  212,
     1192      237,  282,  242,  237,  242,  242,  242,  242,  234,  256,
     1193      270,  236,  241,  241,  241,  241,  241,  241,  282,  266,
     1194      237,  266,  237,  296,  267,  235,  267,  237,  281,  244,
     1195      244,  244,  244,  244,  244,  256,  270,  242,  245,  245,
     1196      245,  245,  245,  245,  281,  241,  244,  247,  278,  247,
     1197      296,  295,  247,  247,  247,  247,  247,  247,  279,  280,
     1198
     1199      283,  278,  244,  288,  295,  283,  289,  868,  244,  246,
     1200      246,  246,  246,  246,  246,  253,  279,  280,  255,  255,
     1201      255,  255,  255,  255,  289,  246,  288,  246,  291,  246,
     1202      246,  260,  260,  260,  260,  260,  260,  290,  253,  292,
     1203      253,  285,  246,  291,  253,  867,  285,  246,  294,  246,
     1204      253,  255,  246,  287,  246,  292,  292,  294,  297,  299,
     1205      293,  303,  253,  290,  260,  293,  253,  300,  287,  301,
     1206      253,  304,  300,  302,  287,  287,  297,  299,  301,  305,
     1207      302,  303,  306,  307,  308,  309,  310,  306,  307,  304,
     1208      308,  311,  312,  313,  314,  310,  318,  311,  315,  319,
     1209
     1210      305,  305,  313,  315,  309,  316,  317,  320,  312,  314,
     1211      316,  317,  322,  324,  323,  318,  326,  319,  325,  327,
     1212      320,  328,  329,  322,  330,  331,  332,  334,  317,  323,
     1213      333,  325,  324,  330,  337,  335,  338,  339,  326,  329,
     1214      340,  328,  327,  337,  343,  334,  341,  331,  335,  332,
     1215      639,  342,  333,  340,  341,  339,  342,  344,  344,  343,
     1216      345,  362,  344,  362,  344,  403,  345,  352,  352,  352,
     1217      352,  353,  353,  353,  353,  363,  403,  363,  639,  408,
     1218      338,  370,  370,  370,  370,  370,  370,  372,  382,  372,
     1219      408,  410,  372,  372,  372,  372,  372,  372,  382,  404,
     1220
     1221      352,  371,  371,  371,  371,  371,  371,  374,  374,  374,
     1222      374,  374,  374,  410,  382,  404,  405,  371,  406,  371,
     1223      412,  371,  371,  377,  377,  377,  377,  377,  377,  385,
     1224      425,  405,  383,  412,  371,  385,  389,  406,  414,  371,
     1225      374,  371,  383,  413,  371,  425,  371,  375,  375,  375,
     1226      375,  375,  375,  384,  389,  417,  377,  407,  383,  413,
     1227      414,  385,  389,  375,  375,  375,  407,  375,  375,  378,
     1228      378,  378,  378,  378,  378,  421,  384,  417,  384,  866,
     1229      375,  421,  384,  865,  388,  375,  375,  375,  384,  386,
     1230      375,  386,  375,  415,  386,  386,  386,  386,  386,  386,
     1231
     1232      384,  409,  378,  411,  384,  416,  415,  388,  384,  388,
     1233      409,  418,  411,  388,  423,  419,  422,  424,  420,  388,
     1234      419,  416,  416,  431,  427,  423,  432,  386,  433,  418,
     1235      429,  388,  434,  420,  441,  388,  424,  422,  427,  388,
     1236      420,  433,  429,  435,  431,  436,  439,  437,  432,  435,
     1237      442,  443,  444,  445,  441,  434,  437,  446,  447,  449,
     1238      436,  439,  451,  453,  452,  456,  443,  447,  445,  454,
     1239      455,  457,  442,  452,  444,  458,  449,  446,  459,  460,
     1240      457,  461,  462,  463,  453,  451,  460,  456,  461,  454,
     1241      455,  459,  464,  458,  465,  466,  468,  470,  528,  469,
     1242
     1243      464,  528,  861,  470,  519,  463,  466,  462,  469,  524,
     1244      464,  465,  479,  479,  479,  479,  518,  519,  468,  490,
     1245      490,  490,  490,  490,  490,  492,  492,  492,  492,  492,
     1246      492,  524,  544,  518,  522,  490,  521,  490,  544,  490,
     1247      490,  493,  493,  493,  493,  493,  493,  497,  526,  498,
     1248      494,  521,  490,  526,  522,  496,  532,  490,  492,  490,
     1249      494,  495,  490,  495,  490,  496,  495,  495,  495,  495,
     1250      495,  495,  567,  497,  493,  498,  494,  532,  523,  525,
     1251      567,  496,  500,  500,  500,  500,  500,  500,  502,  529,
     1252      502,  523,  525,  502,  502,  502,  502,  502,  502,  495,
     1253
     1254      501,  501,  501,  501,  501,  501,  527,  530,  531,  529,
     1255      533,  857,  536,  535,  539,  537,  501,  527,  501,  533,
     1256      501,  501,  530,  534,  535,  536,  538,  531,  534,  540,
     1257      541,  547,  542,  501,  548,  538,  539,  542,  501,  541,
     1258      501,  545,  549,  501,  537,  501,  540,  550,  547,  548,
     1259      545,  552,  553,  554,  558,  555,  550,  549,  557,  558,
     1260      552,  563,  560,  561,  564,  554,  568,  565,  569,  553,
     1261      555,  560,  561,  557,  570,  569,  568,  564,  571,  572,
     1262      574,  575,  577,  563,  565,  572,  713,  578,  622,  574,
     1263      571,  575,  713,  604,  604,  622,  570,  625,  854,  577,
     1264
     1265      578,  597,  597,  597,  597,  597,  597,  598,  598,  598,
     1266      598,  598,  598,  600,  625,  600,  604,  624,  600,  600,
     1267      600,  600,  600,  600,  603,  603,  603,  603,  603,  603,
     1268      624,  605,  814,  629,  597,  599,  599,  599,  599,  599,
     1269      599,  606,  621,  606,  626,  627,  606,  621,  814,  623,
     1270      629,  599,  627,  599,  605,  599,  599,  603,  623,  630,
     1271      621,  628,  630,  606,  631,  606,  632,  626,  599,  628,
     1272      606,  633,  634,  599,  635,  599,  636,  631,  599,  637,
     1273      599,  640,  637,  638,  641,  643,  633,  644,  632,  647,
     1274      642,  635,  645,  648,  634,  705,  640,  649,  636,  642,
     1275
     1276      638,  645,  653,  643,  641,  654,  649,  656,  659,  644,
     1277      667,  660,  647,  668,  671,  648,  670,  659,  660,  667,
     1278      703,  705,  653,  668,  656,  670,  702,  853,  708,  671,
     1279      703,  852,  654,  689,  689,  689,  689,  689,  689,  693,
     1280      693,  693,  693,  693,  693,  706,  711,  702,  708,  689,
     1281      707,  689,  706,  689,  689,  707,  709,  710,  715,  709,
     1282      710,  714,  716,  717,  711,  716,  689,  715,  718,  721,
     1283      720,  689,  693,  689,  714,  723,  689,  719,  689,  720,
     1284      719,  724,  722,  725,  717,  722,  726,  727,  723,  724,
     1285      735,  728,  731,  725,  734,  721,  736,  718,  738,  726,
     1286
     1287      728,  760,  739,  761,  757,  762,  738,  764,  727,  758,
     1288      731,  739,  735,  761,  734,  731,  760,  736,  746,  746,
     1289      746,  746,  746,  746,  757,  759,  758,  763,  762,  765,
     1290      759,  767,  765,  764,  766,  769,  771,  773,  769,  771,
     1291      773,  772,  774,  775,  763,  774,  776,  766,  772,  778,
     1292      782,  746,  797,  799,  802,  807,  810,  800,  775,  767,
     1293      801,  803,  804,  801,  803,  804,  806,  808,  811,  776,
     1294      808,  811,  778,  782,  799,  800,  802,  812,  810,  797,
     1295      812,  807,  813,  815,  806,  816,  831,  833,  832,  834,
     1296      833,  813,  835,  836,  815,  832,  836,  837,  834,  840,
     1297
     1298      843,  816,  840,  843,  844,  845,  846,  831,  858,  855,
     1299      835,  858,  859,  844,  837,  846,  835,  845,  855,  856,
     1300      860,  870,  859,  862,  856,  860,  862,  863,  864,  871,
     1301      863,  864,  872,  873,  874,  872,  875,  874,  878,  875,
     1302      881,  870,  882,  873,  871,  885,  886,  887,  889,  888,
     1303      890,  851,  891,  850,  885,  849,  848,  882,  847,  886,
     1304      878,  881,  891,  842,  841,  839,  889,  838,  830,  887,
     1305      888,  829,  890,  895,  895,  895,  895,  895,  895,  895,
     1306      895,  895,  895,  895,  895,  895,  896,  896,  896,  896,
     1307      896,  896,  896,  896,  896,  896,  896,  896,  896,  897,
     1308
    13081309      897,  897,  897,  897,  897,  897,  897,  897,  897,  897,
    1309       897,  897,  898,  816,  815,  898,  814,  898,  898,  898,
    1310       898,  898,  899,  806,  899,  899,  802,  899,  899,  899,
    1311       899,  899,  899,  795,  899,  900,  793,  792,  900,  900,
    1312       900,  900,  900,  900,  900,  900,  791,  900,  901,  901,
    1313       901,  901,  901,  901,  901,  901,  901,  901,  901,  901,
    1314       901,  902,  902,  790,  902,  789,  788,  787,  902,  903,
    1315       786,  785,  903,  784,  903,  903,  903,  903,  903,  904,
    1316       783,  904,  782,  781,  780,  904,  905,  778,  905,  777,
    1317 
    1318       776,  774,  905,  906,  767,  906,  765,  753,  752,  906,
    1319       907,  751,  907,  750,  749,  748,  907,  908,  747,  908,
    1320       746,  745,  742,  908,  909,  741,  909,  740,  734,  730,
    1321       909,  910,  729,  910,  727,  726,  709,  910,  911,  701,
    1322       911,  698,  693,  691,  911,  912,  687,  912,  677,  673,
    1323       671,  912,  913,  913,  913,  913,  913,  913,  913,  913,
    1324       913,  913,  913,  913,  913,  914,  669,  914,  915,  915,
    1325       666,  915,  915,  915,  663,  915,  916,  916,  662,  916,
    1326       917,  661,  917,  660,  659,  658,  917,  918,  655,  918,
    1327       654,  652,  649,  918,  919,  648,  919,  647,  643,  616,
    1328 
    1329       919,  920,  612,  920,  921,  610,  921,  608,  606,  604,
    1330       921,  922,  598,  922,  923,  592,  590,  923,  588,  923,
    1331       923,  923,  923,  923,  924,  924,  924,  924,  924,  924,
    1332       924,  924,  924,  924,  924,  924,  924,  925,  925,  925,
    1333       925,  925,  925,  925,  925,  925,  925,  925,  925,  925,
    1334       926,  586,  926,  584,  582,  580,  926,  927,  578,  927,
    1335       577,  576,  573,  927,  928,  570,  928,  563,  559,  556,
    1336       928,  929,  553,  929,  930,  548,  930,  543,  540,  517,
    1337       930,  931,  513,  931,  932,  511,  932,  509,  507,  505,
    1338       932,  933,  503,  933,  934,  502,  934,  501,  500,  489,
    1339 
    1340       934,  935,  486,  935,  936,  484,  936,  483,  482,  480,
    1341       936,  937,  478,  937,  938,  475,  938,  473,  471,  469,
    1342       938,  939,  465,  939,  940,  448,  940,  446,  438,  436,
    1343       940,  941,  428,  941,  942,  426,  942,  424,  942,  398,
    1344       942,  943,  396,  943,  394,  943,  392,  943,  944,  944,
    1345       391,  944,  944,  944,  390,  944,  945,  377,  945,  367,
    1346       365,  364,  945,  946,  360,  946,  358,  356,  354,  946,
    1347       947,  350,  947,  348,  347,  346,  947,  948,  336,  948,
    1348       949,  321,  949,  298,  277,  275,  949,  950,  273,  950,
    1349       951,  272,  951,  271,  269,  268,  951,  952,  263,  952,
    1350 
    1351       953,  259,  953,  258,  254,  251,  953,  954,  250,  954,
    1352       955,  239,  238,  955,  231,  955,  955,  955,  955,  955,
    1353       956,  956,  956,  956,  956,  956,  956,  956,  956,  956,
    1354       956,  956,  956,  957,  230,  957,  227,  217,  215,  957,
    1355       958,  214,  958,  959,  213,  959,  207,  206,  204,  959,
    1356       960,  199,  960,  961,  178,  961,  149,  147,  146,  961,
    1357       962,  140,  962,  963,  138,  963,  136,  128,  125,  963,
    1358       964,  124,  964,  965,  120,  965,  101,   98,   95,  965,
    1359       966,   93,  966,  967,   86,  967,   72,   70,   66,  967,
    1360       968,   36,  968,  969,   33,  969,   18,   11,    4,  969,
    1361 
    1362       970,    3,  970,    0,    0,    0,  970,  971,    0,  971,
    1363       972,    0,  972,    0,    0,    0,  972,  973,    0,  973,
    1364       974,    0,  974,    0,  974,    0,  974,  975,    0,  975,
    1365         0,    0,    0,  975,  976,    0,  976,    0,    0,    0,
    1366       976,  977,    0,  977,  978,    0,  978,    0,    0,    0,
    1367       978,  979,    0,  979,  980,    0,  980,    0,    0,    0,
    1368       980,  981,    0,  981,  982,    0,  982,    0,    0,    0,
    1369       982,  983,    0,  983,  984,    0,  984,    0,    0,    0,
    1370       984,  985,    0,  985,  986,    0,  986,    0,    0,    0,
    1371       986,  987,    0,  987,  988,    0,    0,  988,    0,  988,
    1372 
    1373       988,  988,  988,  988,  989,  989,  989,  989,  989,  989,
    1374       989,  989,  989,  989,  989,  989,  989,  990,    0,  990,
    1375         0,    0,    0,  990,  991,    0,  991,  992,    0,  992,
    1376         0,    0,    0,  992,  993,    0,  993,  994,    0,  994,
    1377         0,    0,    0,  994,  995,    0,  995,  996,    0,  996,
    1378         0,    0,    0,  996,  997,    0,  997,  998,    0,  998,
    1379         0,    0,    0,  998,  999,    0,  999, 1000,    0, 1000,
    1380         0,    0,    0, 1000, 1001,    0, 1001, 1002,    0, 1002,
    1381         0,    0,    0, 1002, 1003,    0, 1003, 1004,    0, 1004,
    1382         0,    0,    0, 1004, 1005,    0, 1005, 1006,    0, 1006,
    1383 
    1384         0,    0,    0, 1006, 1007,    0, 1007,    0,    0,    0,
    1385      1007, 1008,    0, 1008, 1009,    0, 1009,    0,    0,    0,
    1386      1009, 1010,    0, 1010, 1011,    0, 1011,    0,    0,    0,
    1387      1011, 1012,    0, 1012, 1013,    0, 1013,    0,    0,    0,
    1388      1013, 1014,    0, 1014, 1015,    0, 1015, 1016,    0, 1016,
    1389      1017,    0,    0, 1017,    0, 1017, 1017, 1017, 1017, 1017,
    1390      1018,    0, 1018, 1019, 1019, 1019, 1019, 1019, 1019, 1019,
    1391      1019, 1019, 1019, 1019, 1019, 1019, 1020,    0, 1020,    0,
    1392         0,    0, 1020, 1021,    0, 1021, 1022,    0, 1022,    0,
    1393         0,    0, 1022, 1023,    0, 1023, 1024,    0, 1024, 1025,
    1394 
    1395         0, 1025, 1026,    0,    0, 1026,    0, 1026, 1026, 1026,
    1396      1026, 1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0,
    1397      1029, 1030,    0, 1030, 1031,    0, 1031, 1032,    0, 1032,
    1398      1033,    0, 1033, 1034,    0, 1034,    0,    0,    0, 1034,
    1399      1035,    0, 1035, 1036,    0, 1036,    0,    0,    0, 1036,
    1400      1037,    0, 1037, 1038,    0, 1038, 1039,    0, 1039, 1040,
    1401         0, 1040, 1041,    0, 1041,    0,    0,    0, 1041, 1042,
    1402         0,    0, 1042,    0, 1042, 1042, 1042, 1042, 1042, 1043,
    1403         0, 1043, 1044,    0, 1044, 1045,    0, 1045, 1046,    0,
    1404      1046,    0,    0,    0, 1046, 1047,    0, 1047,    0,    0,
    1405 
    1406         0, 1047, 1048,    0, 1048,    0,    0,    0, 1048, 1049,
    1407         0, 1049, 1050,    0, 1050,    0,    0,    0, 1050, 1051,
    1408         0, 1051,    0,    0,    0, 1051, 1052,    0, 1052,    0,
    1409         0,    0, 1052, 1053,    0, 1053,    0,    0,    0, 1053,
    1410      1054,    0, 1054,    0,    0,    0, 1054, 1055,    0, 1055,
    1411         0,    0,    0, 1055, 1056,    0, 1056,    0,    0,    0,
    1412      1056, 1057,    0, 1057,    0,    0,    0, 1057, 1058,    0,
    1413      1058,    0,    0,    0, 1058, 1059,    0, 1059,    0,    0,
    1414         0, 1059, 1060,    0, 1060,    0,    0,    0, 1060, 1061,
    1415         0, 1061,    0,    0,    0, 1061, 1062,    0, 1062,    0,
    1416 
    1417         0,    0, 1062, 1063,    0, 1063,    0,    0,    0, 1063,
    1418      1064,    0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,
    1419         0,    0,    0, 1065,  891,  891,  891,  891,  891,  891,
    1420       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1421       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1422       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1423       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1424       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1425       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1426       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1427 
    1428       891,  891,  891,  891,  891,  891,  891,  891,  891,  891
     1310      897,  897,  898,  828,  827,  898,  826,  898,  898,  898,
     1311      898,  898,  899,  825,  824,  823,  899,  899,  899,  899,
     1312      899,  899,  900,  900,  900,  900,  900,  900,  900,  900,
     1313      900,  900,  900,  900,  900,  901,  822,  821,  901,  820,
     1314      901,  901,  901,  901,  901,  902,  819,  902,  902,  818,
     1315      902,  902,  902,  902,  902,  902,  817,  902,  903,  809,
     1316      805,  903,  903,  903,  903,  903,  903,  903,  903,  798,
     1317      903,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1318      904,  904,  904,  904,  905,  905,  796,  905,  795,  794,
     1319
     1320      793,  905,  906,  792,  791,  906,  790,  906,  906,  906,
     1321      906,  906,  907,  789,  907,  788,  787,  786,  907,  908,
     1322      785,  908,  784,  783,  781,  908,  909,  780,  909,  779,
     1323      777,  770,  909,  910,  768,  910,  756,  755,  754,  910,
     1324      911,  753,  911,  752,  751,  750,  911,  912,  749,  912,
     1325      748,  745,  744,  912,  913,  743,  913,  737,  733,  732,
     1326      913,  914,  730,  914,  729,  712,  704,  914,  915,  701,
     1327      915,  696,  694,  690,  915,  916,  680,  916,  917,  917,
     1328      676,  917,  917,  917,  674,  917,  918,  918,  672,  918,
     1329      919,  669,  666,  919,  665,  919,  919,  919,  919,  919,
     1330
     1331      920,  664,  920,  663,  662,  661,  920,  921,  658,  921,
     1332      657,  655,  652,  921,  922,  651,  922,  650,  646,  619,
     1333      922,  923,  615,  923,  924,  613,  924,  611,  609,  607,
     1334      924,  925,  601,  925,  926,  595,  593,  926,  591,  926,
     1335      926,  926,  926,  926,  927,  927,  927,  927,  927,  927,
     1336      927,  927,  927,  927,  927,  927,  927,  928,  928,  928,
     1337      928,  928,  928,  928,  928,  928,  928,  928,  928,  928,
     1338      929,  589,  929,  587,  585,  583,  929,  930,  581,  930,
     1339      580,  579,  576,  930,  931,  573,  931,  566,  562,  559,
     1340      931,  932,  556,  932,  933,  551,  933,  546,  543,  520,
     1341
     1342      933,  934,  516,  934,  935,  514,  935,  512,  510,  508,
     1343      935,  936,  506,  936,  937,  505,  937,  504,  503,  491,
     1344      937,  938,  488,  938,  939,  486,  939,  485,  484,  482,
     1345      939,  940,  480,  940,  941,  477,  941,  475,  473,  471,
     1346      941,  942,  467,  942,  943,  450,  943,  448,  440,  438,
     1347      943,  944,  430,  944,  945,  428,  945,  426,  945,  400,
     1348      945,  946,  398,  946,  396,  946,  394,  946,  947,  947,
     1349      393,  947,  947,  947,  392,  947,  948,  379,  948,  376,
     1350      367,  365,  948,  949,  364,  949,  360,  358,  356,  949,
     1351      950,  354,  950,  350,  348,  347,  950,  951,  346,  951,
     1352
     1353      952,  336,  952,  321,  298,  277,  952,  953,  275,  953,
     1354      954,  273,  954,  272,  271,  269,  954,  955,  268,  955,
     1355      956,  263,  956,  259,  258,  254,  956,  957,  251,  957,
     1356      958,  250,  239,  958,  238,  958,  958,  958,  958,  958,
     1357      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
     1358      959,  959,  959,  960,  231,  960,  230,  227,  217,  960,
     1359      961,  215,  961,  962,  214,  962,  213,  207,  206,  962,
     1360      963,  204,  963,  964,  199,  964,  178,  149,  147,  964,
     1361      965,  146,  965,  966,  140,  966,  138,  136,  128,  966,
     1362      967,  125,  967,  968,  124,  968,  120,  101,   98,  968,
     1363
     1364      969,   95,  969,  970,   93,  970,   86,   72,   70,  970,
     1365      971,   66,  971,  972,   36,  972,   33,   18,   11,  972,
     1366      973,    4,  973,    3,    0,    0,  973,  974,    0,  974,
     1367      975,    0,  975,    0,    0,    0,  975,  976,    0,  976,
     1368      977,    0,  977,    0,  977,    0,  977,  978,    0,  978,
     1369        0,    0,    0,  978,  979,    0,  979,    0,    0,    0,
     1370      979,  980,    0,  980,  981,    0,  981,    0,    0,    0,
     1371      981,  982,    0,  982,  983,    0,  983,    0,    0,    0,
     1372      983,  984,    0,  984,  985,    0,  985,    0,    0,    0,
     1373      985,  986,    0,  986,  987,    0,  987,    0,    0,    0,
     1374
     1375      987,  988,    0,  988,  989,    0,  989,    0,    0,    0,
     1376      989,  990,    0,  990,  991,    0,    0,  991,    0,  991,
     1377      991,  991,  991,  991,  992,  992,  992,  992,  992,  992,
     1378      992,  992,  992,  992,  992,  992,  992,  993,    0,  993,
     1379        0,    0,    0,  993,  994,    0,  994,  995,    0,  995,
     1380        0,    0,    0,  995,  996,    0,  996,  997,    0,  997,
     1381        0,    0,    0,  997,  998,    0,  998,  999,    0,  999,
     1382        0,    0,    0,  999, 1000,    0, 1000, 1001,    0, 1001,
     1383        0,    0,    0, 1001, 1002,    0, 1002, 1003,    0, 1003,
     1384        0,    0,    0, 1003, 1004,    0, 1004, 1005,    0, 1005,
     1385
     1386        0,    0,    0, 1005, 1006,    0, 1006, 1007,    0, 1007,
     1387        0,    0,    0, 1007, 1008,    0, 1008, 1009,    0, 1009,
     1388        0,    0,    0, 1009, 1010,    0, 1010,    0,    0,    0,
     1389     1010, 1011,    0, 1011, 1012,    0, 1012,    0,    0,    0,
     1390     1012, 1013,    0, 1013, 1014,    0, 1014,    0,    0,    0,
     1391     1014, 1015,    0, 1015, 1016,    0, 1016,    0,    0,    0,
     1392     1016, 1017,    0, 1017, 1018,    0, 1018, 1019,    0, 1019,
     1393     1020,    0,    0, 1020,    0, 1020, 1020, 1020, 1020, 1020,
     1394     1021,    0, 1021, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
     1395     1022, 1022, 1022, 1022, 1022, 1022, 1023,    0, 1023,    0,
     1396
     1397        0,    0, 1023, 1024,    0, 1024, 1025,    0, 1025,    0,
     1398        0,    0, 1025, 1026,    0, 1026, 1027,    0, 1027, 1028,
     1399        0, 1028, 1029,    0,    0, 1029,    0, 1029, 1029, 1029,
     1400     1029, 1029, 1030,    0, 1030, 1031,    0, 1031, 1032,    0,
     1401     1032, 1033,    0, 1033, 1034,    0, 1034, 1035,    0, 1035,
     1402     1036,    0, 1036, 1037,    0, 1037,    0,    0,    0, 1037,
     1403     1038,    0, 1038, 1039,    0, 1039,    0,    0,    0, 1039,
     1404     1040,    0, 1040, 1041,    0, 1041, 1042,    0, 1042, 1043,
     1405        0, 1043, 1044,    0, 1044,    0,    0,    0, 1044, 1045,
     1406        0,    0, 1045,    0, 1045, 1045, 1045, 1045, 1045, 1046,
     1407
     1408        0, 1046, 1047,    0, 1047, 1048,    0, 1048, 1049,    0,
     1409     1049,    0,    0,    0, 1049, 1050,    0, 1050,    0,    0,
     1410        0, 1050, 1051,    0, 1051,    0,    0,    0, 1051, 1052,
     1411        0, 1052, 1053,    0, 1053,    0,    0,    0, 1053, 1054,
     1412        0, 1054,    0,    0,    0, 1054, 1055,    0, 1055,    0,
     1413        0,    0, 1055, 1056,    0, 1056,    0,    0,    0, 1056,
     1414     1057,    0, 1057,    0,    0,    0, 1057, 1058,    0, 1058,
     1415        0,    0,    0, 1058, 1059,    0, 1059,    0,    0,    0,
     1416     1059, 1060,    0, 1060,    0,    0,    0, 1060, 1061,    0,
     1417     1061,    0,    0,    0, 1061, 1062,    0, 1062,    0,    0,
     1418
     1419        0, 1062, 1063,    0, 1063,    0,    0,    0, 1063, 1064,
     1420        0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,    0,
     1421        0,    0, 1065, 1066,    0, 1066,    0,    0,    0, 1066,
     1422     1067,    0, 1067,    0,    0,    0, 1067, 1068,    0, 1068,
     1423        0,    0,    0, 1068,  894,  894,  894,  894,  894,  894,
     1424      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1425      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1426      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1427      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1428      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1429
     1430      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1431      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1432      894,  894,  894,  894,  894,  894,  894,  894,  894,  894
    14291433    } ;
    14301434
    14311435/* Table of booleans, true if rule could match eol. */
    1432 static yyconst flex_int32_t yy_rule_can_match_eol[182] =
     1436static yyconst flex_int32_t yy_rule_can_match_eol[184] =
    14331437    {   0,
    143414381, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    14371441    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14381442    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1439     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
    1440     1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1443    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
     1444    0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14411445    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14421446    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1443     0, 0,     };
     1447    0, 0, 0, 0,     };
    14441448
    14451449static yy_state_type yy_last_accepting_state;
     
    14691473 * Created On       : Sat Sep 22 08:58:10 2001
    14701474 * Last Modified By : Peter A. Buhr
    1471  * Last Modified On : Wed Aug 24 13:27:04 2016
    1472  * Update Count     : 487
     1475 * Last Modified On : Wed Oct 26 17:32:30 2016
     1476 * Update Count     : 499
    14731477 */
    14741478#line 20 "lex.ll"
     
    15171521
    15181522// identifier, GCC: $ in identifier
    1519 // quoted identifier
    15201523// attribute identifier, GCC: $ in identifier
    15211524// numeric constants, CFA: '_' in constant
     
    15321535
    15331536
    1534 #line 1535 "Parser/lex.cc"
     1537#line 1538 "Parser/lex.cc"
    15351538
    15361539#define INITIAL 0
     
    17241727        register int yy_act;
    17251728   
    1726 #line 139 "lex.ll"
     1729#line 138 "lex.ll"
    17271730
    17281731                                   /* line directives */
    1729 #line 1730 "Parser/lex.cc"
     1732#line 1733 "Parser/lex.cc"
    17301733
    17311734        if ( !(yy_init) )
     
    17811784                                {
    17821785                                yy_current_state = (int) yy_def[yy_current_state];
    1783                                 if ( yy_current_state >= 892 )
     1786                                if ( yy_current_state >= 895 )
    17841787                                        yy_c = yy_meta[(unsigned int) yy_c];
    17851788                                }
     
    17871790                        ++yy_cp;
    17881791                        }
    1789                 while ( yy_base[yy_current_state] != 2825 );
     1792                while ( yy_base[yy_current_state] != 2845 );
    17901793
    17911794yy_find_action:
     
    18241827/* rule 1 can match eol */
    18251828YY_RULE_SETUP
    1826 #line 141 "lex.ll"
     1829#line 140 "lex.ll"
    18271830{
    18281831        /* " stop highlighting */
     
    18501853/* rule 2 can match eol */
    18511854YY_RULE_SETUP
    1852 #line 163 "lex.ll"
     1855#line 162 "lex.ll"
    18531856;
    18541857        YY_BREAK
     
    18561859case 3:
    18571860YY_RULE_SETUP
    1858 #line 166 "lex.ll"
     1861#line 165 "lex.ll"
    18591862{ BEGIN COMMENT; }
    18601863        YY_BREAK
     
    18621865/* rule 4 can match eol */
    18631866YY_RULE_SETUP
     1867#line 166 "lex.ll"
     1868;
     1869        YY_BREAK
     1870case 5:
     1871YY_RULE_SETUP
    18641872#line 167 "lex.ll"
    1865 ;
    1866         YY_BREAK
    1867 case 5:
    1868 YY_RULE_SETUP
    1869 #line 168 "lex.ll"
    18701873{ BEGIN 0; }
    18711874        YY_BREAK
     
    18741877/* rule 6 can match eol */
    18751878YY_RULE_SETUP
    1876 #line 171 "lex.ll"
     1879#line 170 "lex.ll"
    18771880;
    18781881        YY_BREAK
     
    18801883case 7:
    18811884YY_RULE_SETUP
     1885#line 173 "lex.ll"
     1886{ WHITE_RETURN(' '); }
     1887        YY_BREAK
     1888case 8:
     1889YY_RULE_SETUP
    18821890#line 174 "lex.ll"
    18831891{ WHITE_RETURN(' '); }
    18841892        YY_BREAK
    1885 case 8:
    1886 YY_RULE_SETUP
    1887 #line 175 "lex.ll"
    1888 { WHITE_RETURN(' '); }
    1889         YY_BREAK
    18901893case 9:
    18911894/* rule 9 can match eol */
    18921895YY_RULE_SETUP
    1893 #line 176 "lex.ll"
     1896#line 175 "lex.ll"
    18941897{ NEWLINE_RETURN(); }