Changeset 5f2f2d7


Ignore:
Timestamp:
Jun 8, 2015, 8:56:35 PM (6 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, ctor, deferred_resn, demangler, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, string, with_gc
Children:
81419b5
Parents:
cd623a4
Message:

fix constant types, remove unnecessary string copying, work on regression testing, fix several memory leaks

Location:
src
Files:
63 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.h

    rcd623a4 r5f2f2d7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jun 02 13:43:29 2015
    13 // Update Count     : 14
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jun  8 14:34:43 2015
     13// Update Count     : 15
    1414//
    1515
     
    1717#define CODEGENV_H
    1818
    19 #include <strstream>
    2019#include <list>
    2120
  • src/CodeGen/GenType.cc

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun  4 14:04:58 2015
    13 // Update Count     : 4
    14 //
    15 
    16 #include <strstream>
     12// Last Modified On : Mon Jun  8 14:36:02 2015
     13// Update Count     : 9
     14//
     15
     16#include <sstream>
    1717#include <cassert>
    1818
     
    6868
    6969        void GenType::genArray( const Type::Qualifiers &qualifiers, Type *base, Expression *dimension, bool isVarLen, bool isStatic ) {
    70                 std::ostrstream os;
     70                std::ostringstream os;
    7171                if ( typeString != "" ) {
    7272                        if ( typeString[ 0 ] == '*' ) {
     
    102102                os << "]";
    103103
    104                 typeString = std::string( os.str(), os.pcount() );
     104                typeString = os.str();
    105105 
    106106                base->accept( *this );
     
    127127
    128128        void GenType::visit( FunctionType *funcType ) {
    129                 std::ostrstream os;
     129                std::ostringstream os;
    130130
    131131                if ( typeString != "" ) {
     
    159159                } // if
    160160 
    161                 typeString = std::string( os.str(), os.pcount() );
     161                typeString = os.str();
    162162
    163163                if ( funcType->get_returnVals().size() == 0 ) {
  • src/Common/SemanticError.h

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:22:23 2015
    13 // Update Count     : 1
     12// Last Modified On : Mon Jun  8 14:38:53 2015
     13// Update Count     : 4
    1414//
    1515
     
    1919#include <exception>
    2020#include <string>
    21 #include <strstream>
     21#include <sstream>
    2222#include <list>
    2323#include <iostream>
     
    4242template< typename T >
    4343SemanticError::SemanticError( const std::string &error, const T *obj ) {
    44         std::ostrstream os;
     44        std::ostringstream os;
    4545        os << "Error: " << error;
    4646        obj->print( os );
    47         errors.push_back( std::string( os.str(), os.pcount() ) );
     47        errors.push_back( os.str() );
    4848}
    4949
  • src/Common/UniqueName.cc

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:23:41 2015
    13 // Update Count     : 1
     12// Last Modified On : Mon Jun  8 14:47:49 2015
     13// Update Count     : 3
    1414//
    1515
    1616#include <string>
    17 #include <strstream>
     17#include <sstream>
    1818
    1919#include "UniqueName.h"
     
    2323
    2424std::string UniqueName::newName( const std::string &additional ) {
    25         std::ostrstream os;
     25        std::ostringstream os;
    2626        os << base << additional << count++;
    27         return std::string( os.str(), os.pcount() );
     27        return os.str();
    2828}
    2929
  • src/Common/utility.h

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun  4 21:29:57 2015
    13 // Update Count     : 9
     12// Last Modified On : Mon Jun  8 14:43:54 2015
     13// Update Count     : 13
    1414//
    1515
     
    1818
    1919#include <iostream>
    20 #include <strstream>
     20#include <sstream>
    2121#include <iterator>
    2222#include <string>
     
    130130template < typename T >
    131131std::string toString ( T value ) {
    132         std::ostrstream os;
    133  
     132        std::ostringstream os;
    134133        os << value; // << std::ends;
    135         os.freeze( false );
    136 
    137         return std::string(os.str(), os.pcount());
     134        return os.str();
    138135}
    139136
  • src/ControlStruct/LabelGenerator.cc

    rcd623a4 r5f2f2d7  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 03 14:23:26 2015
    13 // Update Count     : 9
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jun  8 14:45:07 2015
     13// Update Count     : 12
    1414//
    1515
    1616#include <iostream>
    17 #include <strstream>
     17#include <sstream>
    1818
    1919#include "LabelGenerator.h"
     
    3030
    3131        Label LabelGenerator::newLabel(std::string suffix) {
    32                 std::ostrstream os;
     32                std::ostringstream os;
    3333                os << "__L" << current++ << "__" << suffix;
    34                 os.freeze( false );
    35                 std::string ret = std::string (os.str(), os.pcount());
     34                std::string ret = os.str();
    3635                return Label( ret );
    3736        }
  • src/Parser/ExpressionNode.cc

    rcd623a4 r5f2f2d7  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 07:58:00 2015
    13 // Update Count     : 135
     12// Last Modified On : Mon Jun  8 17:33:40 2015
     13// Update Count     : 147
    1414//
    1515
     
    9393static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
    9494
    95 // Very difficult to separate extra parts of constants during lexing because actions are not allow in the middle of
    96 // patterns:
     95// Difficult to separate extra parts of constants during lexing because actions are not allow in the middle of patterns:
    9796//
    9897//              prefix action constant action suffix
     
    130129                                } // if
    131130                        } else {                                                                        // decimal constant ?
    132                                 sscanf( (char *)value.c_str(), "%lld", &v );
     131                                sscanf( (char *)value.c_str(), "%llu", &v );
    133132                                //printf( "%llu %llu\n", v, v );
    134133                        } // if
     
    136135                        if ( v <= INT_MAX ) {                                           // signed int
    137136                                size = 0;
    138                         } else if ( v <= UINT_MAX ) {                           // unsigned int
     137                        } else if ( v <= UINT_MAX && ! dec ) {          // unsigned int
    139138                                size = 0;
    140                                 if ( ! dec ) Unsigned = true;                   // unsigned
     139                                Unsigned = true;                                                // unsigned
    141140                        } else if ( v <= LONG_MAX ) {                           // signed long int
    142141                                size = 1;
    143                         } else if ( v <= ULONG_MAX ) {                          // signed long int
     142                        } else if ( v <= ULONG_MAX && ( ! dec || LONG_MAX == LLONG_MAX ) ) { // signed long int
    144143                                size = 1;
    145                                 if ( ! dec ) Unsigned = true;                   // unsigned long int
     144                                Unsigned = true;                                                // unsigned long int
    146145                        } else if ( v <= LLONG_MAX ) {                          // signed long long int
    147146                                size = 2;
    148                         } else {                                                                        // signed long long int
     147                        } else {                                                                        // unsigned long long int
    149148                                size = 2;
    150                                 if ( ! dec ) Unsigned = true;                   // unsigned long long int
     149                                Unsigned = true;                                                // unsigned long long int
    151150                        } // if
    152151
    153152                        if ( checkU( value[last] ) ) {                          // suffix 'u' ?
    154153                                Unsigned = true;
    155                                 if ( checkL( value[ last - 1 ] ) ) {    // suffix 'l' ?
     154                                if ( last > 0 && checkL( value[ last - 1 ] ) ) { // suffix 'l' ?
    156155                                        size = 1;
    157                                         if ( checkL( value[ last - 1 ] ) ) { // suffix 'll' ?
     156                                        if ( last > 1 && checkL( value[ last - 2 ] ) ) { // suffix 'll' ?
    158157                                                size = 2;
    159158                                        } // if
     
    161160                        } else if ( checkL( value[ last ] ) ) {         // suffix 'l' ?
    162161                                size = 1;
    163                                 if ( checkL( value[ last - 1 ] ) ) {    // suffix 'll' ?
     162                                if ( last > 0 && checkL( value[ last - 1 ] ) ) { // suffix 'll' ?
    164163                                        size = 2;
    165                                 } // if
    166                                 if ( checkU( value[ last - 1 ] ) ) {    // suffix 'u' ?
    167                                         Unsigned = true;
     164                                        if ( last > 1 && checkU( value[ last - 2 ] ) ) { // suffix 'u' ?
     165                                                Unsigned = true;
     166                                        } // if
     167                                } else {
     168                                        if ( last > 0 && checkU( value[ last - 1 ] ) ) { // suffix 'u' ?
     169                                                Unsigned = true;
     170                                        } // if
    168171                                } // if
    169172                        } // if
  • src/Parser/ParseNode.h

    rcd623a4 r5f2f2d7  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 07:42:50 2015
    13 // Update Count     : 64
     12// Last Modified On : Sun Jun  7 22:02:00 2015
     13// Update Count     : 65
    1414//
    1515
     
    337337
    338338        bool get_hasEllipsis() const;
    339         std::string get_name() const { return name; }
     339        const std::string &get_name() const { return name; }
    340340        LinkageSpec::Type get_linkage() const { return linkage; }
    341341        DeclarationNode *extractAggregate() const;
  • src/Parser/lex.cc

    rcd623a4 r5f2f2d7  
    13901390 * Created On       : Sat Sep 22 08:58:10 2001
    13911391 * Last Modified By : Peter A. Buhr
    1392  * Last Modified On : Sun Jun  7 07:14:16 2015
    1393  * Update Count     : 374
    1394  */
    1395 #line 19 "lex.ll"
     1392 * Last Modified On : Mon Jun  8 20:24:15 2015
     1393 * Update Count     : 381
     1394 */
     1395#line 20 "lex.ll"
    13961396// This lexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive
    13971397// have been performed and removed from the source. The only exceptions are preprocessor directives passed to
     
    14091409std::string *strtext;                                                                   // accumulate parts of character and string constant value
    14101410
     1411#define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return(x)
     1412#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN(x)
     1413#define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN(x)
     1414#define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN(x)
     1415
    14111416#define WHITE_RETURN(x)                                                                 // do nothing
    14121417#define NEWLINE_RETURN()        WHITE_RETURN('\n')
    1413 #define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); \
    1414                                         yylval.tok.loc.file = yyfilename; \
    1415                                         yylval.tok.loc.line = yylineno; \
    1416                                         return(x)
    1417 #define RETURN_STR(x)           yylval.tok.str = strtext; \
    1418                                         yylval.tok.loc.file = yyfilename; \
    1419                                         yylval.tok.loc.line = yylineno; \
    1420                                         return(x)
    1421 
    1422 #define KEYWORD_RETURN(x)       RETURN_VAL(x)                           // keyword
     1418#define ASCIIOP_RETURN()        RETURN_CHAR((int)yytext[0])     // single character operator
     1419#define NAMEDOP_RETURN(x)       RETURN_VAL(x)                           // multichar operator, with a name
     1420#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL(x) // numeric constant
     1421#define KEYWORD_RETURN(x)       RETURN_CHAR(x)                          // keyword
    14231422#define IDENTIFIER_RETURN()     RETURN_VAL((typedefTable.isIdentifier(yytext) ? IDENTIFIER : typedefTable.isTypedef(yytext) ? TYPEDEFname : TYPEGENname))
    1424 //#define ATTRIBUTE_RETURN()    RETURN_VAL((typedefTable.isIdentifier(yytext) ? ATTR_IDENTIFIER : typedefTable.isTypedef(yytext) ? ATTR_TYPEDEFname : ATTR_TYPEGENname))
    14251423#define ATTRIBUTE_RETURN()      RETURN_VAL(ATTR_IDENTIFIER)
    1426 
    1427 #define ASCIIOP_RETURN()        RETURN_VAL((int)yytext[0])      // single character operator
    1428 #define NAMEDOP_RETURN(x)       RETURN_VAL(x)                           // multichar operator, with a name
    1429 
    1430 #define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL(x) // numeric constant
    14311424
    14321425void rm_underscore() {
     
    14551448
    14561449
    1457 #line 1458 "Parser/lex.cc"
     1450#line 1451 "Parser/lex.cc"
    14581451
    14591452#define INITIAL 0
     
    15181511#endif
    15191512
    1520     static void yyunput (int c,char *buf_ptr  );
    1521    
    15221513#ifndef yytext_ptr
    15231514static void yy_flex_strncpy (char *,yyconst char *,int );
     
    16491640        register int yy_act;
    16501641   
    1651 #line 142 "lex.ll"
     1642#line 136 "lex.ll"
    16521643
    16531644                                   /* line directives */
    1654 #line 1655 "Parser/lex.cc"
     1645#line 1646 "Parser/lex.cc"
    16551646
    16561647        if ( !(yy_init) )
     
    17491740/* rule 1 can match eol */
    17501741YY_RULE_SETUP
    1751 #line 144 "lex.ll"
     1742#line 138 "lex.ll"
    17521743{
    17531744        /* " stop highlighting */
     
    17761767/* rule 2 can match eol */
    17771768YY_RULE_SETUP
    1778 #line 167 "lex.ll"
     1769#line 161 "lex.ll"
    17791770;
    17801771        YY_BREAK
     
    17821773case 3:
    17831774YY_RULE_SETUP
    1784 #line 170 "lex.ll"
     1775#line 164 "lex.ll"
    17851776{ BEGIN COMMENT; }
    17861777        YY_BREAK
     
    17881779/* rule 4 can match eol */
    17891780YY_RULE_SETUP
    1790 #line 171 "lex.ll"
     1781#line 165 "lex.ll"
    17911782;
    17921783        YY_BREAK
    17931784case 5:
    17941785YY_RULE_SETUP
    1795 #line 172 "lex.ll"
     1786#line 166 "lex.ll"
    17961787{ BEGIN 0; }
    17971788        YY_BREAK
     
    18001791/* rule 6 can match eol */
    18011792YY_RULE_SETUP
    1802 #line 175 "lex.ll"
     1793#line 169 "lex.ll"
    18031794;
    18041795        YY_BREAK
     
    18061797case 7:
    18071798YY_RULE_SETUP
    1808 #line 178 "lex.ll"
     1799#line 172 "lex.ll"
    18091800{ WHITE_RETURN(' '); }
    18101801        YY_BREAK
    18111802case 8:
    18121803YY_RULE_SETUP
    1813 #line 179 "lex.ll"
     1804#line 173 "lex.ll"
    18141805{ WHITE_RETURN(' '); }
    18151806        YY_BREAK
     
    18171808/* rule 9 can match eol */
    18181809YY_RULE_SETUP
    1819 #line 180 "lex.ll"
     1810#line 174 "lex.ll"
    18201811{ NEWLINE_RETURN(); }
    18211812        YY_BREAK
     
    18231814case 10:
    18241815YY_RULE_SETUP
     1816#line 177 "lex.ll"
     1817{ KEYWORD_RETURN(ALIGNAS); }                    // C11
     1818        YY_BREAK
     1819case 11:
     1820YY_RULE_SETUP
     1821#line 178 "lex.ll"
     1822{ KEYWORD_RETURN(ALIGNOF); }                    // C11
     1823        YY_BREAK
     1824case 12:
     1825YY_RULE_SETUP
     1826#line 179 "lex.ll"
     1827{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
     1828        YY_BREAK
     1829case 13:
     1830YY_RULE_SETUP
     1831#line 180 "lex.ll"
     1832{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
     1833        YY_BREAK
     1834case 14:
     1835YY_RULE_SETUP
     1836#line 181 "lex.ll"
     1837{ KEYWORD_RETURN(ASM); }
     1838        YY_BREAK
     1839case 15:
     1840YY_RULE_SETUP
     1841#line 182 "lex.ll"
     1842{ KEYWORD_RETURN(ASM); }                                // GCC
     1843        YY_BREAK
     1844case 16:
     1845YY_RULE_SETUP
    18251846#line 183 "lex.ll"
    1826 { KEYWORD_RETURN(ALIGNAS); }                    // C11
    1827         YY_BREAK
    1828 case 11:
     1847{ KEYWORD_RETURN(ASM); }                                // GCC
     1848        YY_BREAK
     1849case 17:
    18291850YY_RULE_SETUP
    18301851#line 184 "lex.ll"
    1831 { KEYWORD_RETURN(ALIGNOF); }                    // C11
    1832         YY_BREAK
    1833 case 12:
     1852{ KEYWORD_RETURN(ATOMIC); }                             // C11
     1853        YY_BREAK
     1854case 18:
    18341855YY_RULE_SETUP
    18351856#line 185 "lex.ll"
    1836 { KEYWORD_RETURN(ALIGNOF); }                    // GCC
    1837         YY_BREAK
    1838 case 13:
     1857{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     1858        YY_BREAK
     1859case 19:
    18391860YY_RULE_SETUP
    18401861#line 186 "lex.ll"
    1841 { KEYWORD_RETURN(ALIGNOF); }                    // GCC
    1842         YY_BREAK
    1843 case 14:
     1862{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     1863        YY_BREAK
     1864case 20:
    18441865YY_RULE_SETUP
    18451866#line 187 "lex.ll"
    1846 { KEYWORD_RETURN(ASM); }
    1847         YY_BREAK
    1848 case 15:
     1867{ KEYWORD_RETURN(AUTO); }
     1868        YY_BREAK
     1869case 21:
    18491870YY_RULE_SETUP
    18501871#line 188 "lex.ll"
    1851 { KEYWORD_RETURN(ASM); }                                // GCC
    1852         YY_BREAK
    1853 case 16:
     1872{ KEYWORD_RETURN(BOOL); }                               // C99
     1873        YY_BREAK
     1874case 22:
    18541875YY_RULE_SETUP
    18551876#line 189 "lex.ll"
    1856 { KEYWORD_RETURN(ASM); }                                // GCC
    1857         YY_BREAK
    1858 case 17:
     1877{ KEYWORD_RETURN(BREAK); }
     1878        YY_BREAK
     1879case 23:
    18591880YY_RULE_SETUP
    18601881#line 190 "lex.ll"
    1861 { KEYWORD_RETURN(ATOMIC); }                             // C11
    1862         YY_BREAK
    1863 case 18:
     1882{ KEYWORD_RETURN(CASE); }
     1883        YY_BREAK
     1884case 24:
    18641885YY_RULE_SETUP
    18651886#line 191 "lex.ll"
    1866 { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    1867         YY_BREAK
    1868 case 19:
     1887{ KEYWORD_RETURN(CATCH); }                              // CFA
     1888        YY_BREAK
     1889case 25:
    18691890YY_RULE_SETUP
    18701891#line 192 "lex.ll"
    1871 { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    1872         YY_BREAK
    1873 case 20:
     1892{ KEYWORD_RETURN(CHAR); }
     1893        YY_BREAK
     1894case 26:
    18741895YY_RULE_SETUP
    18751896#line 193 "lex.ll"
    1876 { KEYWORD_RETURN(AUTO); }
    1877         YY_BREAK
    1878 case 21:
     1897{ KEYWORD_RETURN(CHOOSE); }                             // CFA
     1898        YY_BREAK
     1899case 27:
    18791900YY_RULE_SETUP
    18801901#line 194 "lex.ll"
    1881 { KEYWORD_RETURN(BOOL); }                               // C99
    1882         YY_BREAK
    1883 case 22:
     1902{ KEYWORD_RETURN(COMPLEX); }                    // C99
     1903        YY_BREAK
     1904case 28:
    18841905YY_RULE_SETUP
    18851906#line 195 "lex.ll"
    1886 { KEYWORD_RETURN(BREAK); }
    1887         YY_BREAK
    1888 case 23:
     1907{ KEYWORD_RETURN(COMPLEX); }                    // GCC
     1908        YY_BREAK
     1909case 29:
    18891910YY_RULE_SETUP
    18901911#line 196 "lex.ll"
    1891 { KEYWORD_RETURN(CASE); }
    1892         YY_BREAK
    1893 case 24:
     1912{ KEYWORD_RETURN(COMPLEX); }                    // GCC
     1913        YY_BREAK
     1914case 30:
    18941915YY_RULE_SETUP
    18951916#line 197 "lex.ll"
    1896 { KEYWORD_RETURN(CATCH); }                              // CFA
    1897         YY_BREAK
    1898 case 25:
     1917{ KEYWORD_RETURN(CONST); }
     1918        YY_BREAK
     1919case 31:
    18991920YY_RULE_SETUP
    19001921#line 198 "lex.ll"
    1901 { KEYWORD_RETURN(CHAR); }
    1902         YY_BREAK
    1903 case 26:
     1922{ KEYWORD_RETURN(CONST); }                              // GCC
     1923        YY_BREAK
     1924case 32:
    19041925YY_RULE_SETUP
    19051926#line 199 "lex.ll"
    1906 { KEYWORD_RETURN(CHOOSE); }                             // CFA
    1907         YY_BREAK
    1908 case 27:
     1927{ KEYWORD_RETURN(CONST); }                              // GCC
     1928        YY_BREAK
     1929case 33:
    19091930YY_RULE_SETUP
    19101931#line 200 "lex.ll"
    1911 { KEYWORD_RETURN(COMPLEX); }                    // C99
    1912         YY_BREAK
    1913 case 28:
     1932{ KEYWORD_RETURN(CONTEXT); }                    // CFA
     1933        YY_BREAK
     1934case 34:
    19141935YY_RULE_SETUP
    19151936#line 201 "lex.ll"
    1916 { KEYWORD_RETURN(COMPLEX); }                    // GCC
    1917         YY_BREAK
    1918 case 29:
     1937{ KEYWORD_RETURN(CONTINUE); }
     1938        YY_BREAK
     1939case 35:
    19191940YY_RULE_SETUP
    19201941#line 202 "lex.ll"
    1921 { KEYWORD_RETURN(COMPLEX); }                    // GCC
    1922         YY_BREAK
    1923 case 30:
     1942{ KEYWORD_RETURN(DEFAULT); }
     1943        YY_BREAK
     1944case 36:
    19241945YY_RULE_SETUP
    19251946#line 203 "lex.ll"
    1926 { KEYWORD_RETURN(CONST); }
    1927         YY_BREAK
    1928 case 31:
     1947{ KEYWORD_RETURN(DO); }
     1948        YY_BREAK
     1949case 37:
    19291950YY_RULE_SETUP
    19301951#line 204 "lex.ll"
    1931 { KEYWORD_RETURN(CONST); }                              // GCC
    1932         YY_BREAK
    1933 case 32:
     1952{ KEYWORD_RETURN(DOUBLE); }
     1953        YY_BREAK
     1954case 38:
    19341955YY_RULE_SETUP
    19351956#line 205 "lex.ll"
    1936 { KEYWORD_RETURN(CONST); }                              // GCC
    1937         YY_BREAK
    1938 case 33:
     1957{ KEYWORD_RETURN(DTYPE); }                              // CFA
     1958        YY_BREAK
     1959case 39:
    19391960YY_RULE_SETUP
    19401961#line 206 "lex.ll"
    1941 { KEYWORD_RETURN(CONTEXT); }                    // CFA
    1942         YY_BREAK
    1943 case 34:
     1962{ KEYWORD_RETURN(ELSE); }
     1963        YY_BREAK
     1964case 40:
    19441965YY_RULE_SETUP
    19451966#line 207 "lex.ll"
    1946 { KEYWORD_RETURN(CONTINUE); }
    1947         YY_BREAK
    1948 case 35:
     1967{ KEYWORD_RETURN(ENUM); }
     1968        YY_BREAK
     1969case 41:
    19491970YY_RULE_SETUP
    19501971#line 208 "lex.ll"
    1951 { KEYWORD_RETURN(DEFAULT); }
    1952         YY_BREAK
    1953 case 36:
     1972{ KEYWORD_RETURN(EXTENSION); }                  // GCC
     1973        YY_BREAK
     1974case 42:
    19541975YY_RULE_SETUP
    19551976#line 209 "lex.ll"
    1956 { KEYWORD_RETURN(DO); }
    1957         YY_BREAK
    1958 case 37:
     1977{ KEYWORD_RETURN(EXTERN); }
     1978        YY_BREAK
     1979case 43:
    19591980YY_RULE_SETUP
    19601981#line 210 "lex.ll"
    1961 { KEYWORD_RETURN(DOUBLE); }
    1962         YY_BREAK
    1963 case 38:
     1982{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
     1983        YY_BREAK
     1984case 44:
    19641985YY_RULE_SETUP
    19651986#line 211 "lex.ll"
    1966 { KEYWORD_RETURN(DTYPE); }                              // CFA
    1967         YY_BREAK
    1968 case 39:
     1987{ KEYWORD_RETURN(FINALLY); }                    // CFA
     1988        YY_BREAK
     1989case 45:
    19691990YY_RULE_SETUP
    19701991#line 212 "lex.ll"
    1971 { KEYWORD_RETURN(ELSE); }
    1972         YY_BREAK
    1973 case 40:
     1992{ KEYWORD_RETURN(FLOAT); }
     1993        YY_BREAK
     1994case 46:
    19741995YY_RULE_SETUP
    19751996#line 213 "lex.ll"
    1976 { KEYWORD_RETURN(ENUM); }
    1977         YY_BREAK
    1978 case 41:
     1997{ KEYWORD_RETURN(FLOAT); }                              // GCC
     1998        YY_BREAK
     1999case 47:
    19792000YY_RULE_SETUP
    19802001#line 214 "lex.ll"
    1981 { KEYWORD_RETURN(EXTENSION); }                  // GCC
    1982         YY_BREAK
    1983 case 42:
     2002{ KEYWORD_RETURN(FOR); }
     2003        YY_BREAK
     2004case 48:
    19842005YY_RULE_SETUP
    19852006#line 215 "lex.ll"
    1986 { KEYWORD_RETURN(EXTERN); }
    1987         YY_BREAK
    1988 case 43:
     2007{ KEYWORD_RETURN(FORALL); }                             // CFA
     2008        YY_BREAK
     2009case 49:
    19892010YY_RULE_SETUP
    19902011#line 216 "lex.ll"
    1991 { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    1992         YY_BREAK
    1993 case 44:
     2012{ KEYWORD_RETURN(FORTRAN); }
     2013        YY_BREAK
     2014case 50:
    19942015YY_RULE_SETUP
    19952016#line 217 "lex.ll"
    1996 { KEYWORD_RETURN(FINALLY); }                    // CFA
    1997         YY_BREAK
    1998 case 45:
     2017{ KEYWORD_RETURN(FTYPE); }                              // CFA
     2018        YY_BREAK
     2019case 51:
    19992020YY_RULE_SETUP
    20002021#line 218 "lex.ll"
    2001 { KEYWORD_RETURN(FLOAT); }
    2002         YY_BREAK
    2003 case 46:
     2022{ KEYWORD_RETURN(GENERIC); }                    // C11
     2023        YY_BREAK
     2024case 52:
    20042025YY_RULE_SETUP
    20052026#line 219 "lex.ll"
    2006 { KEYWORD_RETURN(FLOAT); }                              // GCC
    2007         YY_BREAK
    2008 case 47:
     2027{ KEYWORD_RETURN(GOTO); }
     2028        YY_BREAK
     2029case 53:
    20092030YY_RULE_SETUP
    20102031#line 220 "lex.ll"
    2011 { KEYWORD_RETURN(FOR); }
    2012         YY_BREAK
    2013 case 48:
     2032{ KEYWORD_RETURN(IF); }
     2033        YY_BREAK
     2034case 54:
    20142035YY_RULE_SETUP
    20152036#line 221 "lex.ll"
    2016 { KEYWORD_RETURN(FORALL); }                             // CFA
    2017         YY_BREAK
    2018 case 49:
     2037{ KEYWORD_RETURN(IMAGINARY); }                  // C99
     2038        YY_BREAK
     2039case 55:
    20192040YY_RULE_SETUP
    20202041#line 222 "lex.ll"
    2021 { KEYWORD_RETURN(FORTRAN); }
    2022         YY_BREAK
    2023 case 50:
     2042{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2043        YY_BREAK
     2044case 56:
    20242045YY_RULE_SETUP
    20252046#line 223 "lex.ll"
    2026 { KEYWORD_RETURN(FTYPE); }                              // CFA
    2027         YY_BREAK
    2028 case 51:
     2047{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2048        YY_BREAK
     2049case 57:
    20292050YY_RULE_SETUP
    20302051#line 224 "lex.ll"
    2031 { KEYWORD_RETURN(GENERIC); }                    // C11
    2032         YY_BREAK
    2033 case 52:
     2052{ KEYWORD_RETURN(INLINE); }                             // C99
     2053        YY_BREAK
     2054case 58:
    20342055YY_RULE_SETUP
    20352056#line 225 "lex.ll"
    2036 { KEYWORD_RETURN(GOTO); }
    2037         YY_BREAK
    2038 case 53:
     2057{ KEYWORD_RETURN(INLINE); }                             // GCC
     2058        YY_BREAK
     2059case 59:
    20392060YY_RULE_SETUP
    20402061#line 226 "lex.ll"
    2041 { KEYWORD_RETURN(IF); }
    2042         YY_BREAK
    2043 case 54:
     2062{ KEYWORD_RETURN(INLINE); }                             // GCC
     2063        YY_BREAK
     2064case 60:
    20442065YY_RULE_SETUP
    20452066#line 227 "lex.ll"
    2046 { KEYWORD_RETURN(IMAGINARY); }                  // C99
    2047         YY_BREAK
    2048 case 55:
     2067{ KEYWORD_RETURN(INT); }
     2068        YY_BREAK
     2069case 61:
    20492070YY_RULE_SETUP
    20502071#line 228 "lex.ll"
    2051 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
    2052         YY_BREAK
    2053 case 56:
     2072{ KEYWORD_RETURN(INT); }                                // GCC
     2073        YY_BREAK
     2074case 62:
    20542075YY_RULE_SETUP
    20552076#line 229 "lex.ll"
    2056 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
    2057         YY_BREAK
    2058 case 57:
     2077{ KEYWORD_RETURN(LABEL); }                              // GCC
     2078        YY_BREAK
     2079case 63:
    20592080YY_RULE_SETUP
    20602081#line 230 "lex.ll"
    2061 { KEYWORD_RETURN(INLINE); }                             // C99
    2062         YY_BREAK
    2063 case 58:
     2082{ KEYWORD_RETURN(LONG); }
     2083        YY_BREAK
     2084case 64:
    20642085YY_RULE_SETUP
    20652086#line 231 "lex.ll"
    2066 { KEYWORD_RETURN(INLINE); }                             // GCC
    2067         YY_BREAK
    2068 case 59:
     2087{ KEYWORD_RETURN(LVALUE); }                             // CFA
     2088        YY_BREAK
     2089case 65:
    20692090YY_RULE_SETUP
    20702091#line 232 "lex.ll"
    2071 { KEYWORD_RETURN(INLINE); }                             // GCC
    2072         YY_BREAK
    2073 case 60:
     2092{ KEYWORD_RETURN(NORETURN); }                   // C11
     2093        YY_BREAK
     2094case 66:
    20742095YY_RULE_SETUP
    20752096#line 233 "lex.ll"
    2076 { KEYWORD_RETURN(INT); }
    2077         YY_BREAK
    2078 case 61:
     2097{ KEYWORD_RETURN(REGISTER); }
     2098        YY_BREAK
     2099case 67:
    20792100YY_RULE_SETUP
    20802101#line 234 "lex.ll"
    2081 { KEYWORD_RETURN(INT); }                                // GCC
    2082         YY_BREAK
    2083 case 62:
     2102{ KEYWORD_RETURN(RESTRICT); }                   // C99
     2103        YY_BREAK
     2104case 68:
    20842105YY_RULE_SETUP
    20852106#line 235 "lex.ll"
    2086 { KEYWORD_RETURN(LABEL); }                              // GCC
    2087         YY_BREAK
    2088 case 63:
     2107{ KEYWORD_RETURN(RESTRICT); }                   // GCC
     2108        YY_BREAK
     2109case 69:
    20892110YY_RULE_SETUP
    20902111#line 236 "lex.ll"
    2091 { KEYWORD_RETURN(LONG); }
    2092         YY_BREAK
    2093 case 64:
     2112{ KEYWORD_RETURN(RESTRICT); }                   // GCC
     2113        YY_BREAK
     2114case 70:
    20942115YY_RULE_SETUP
    20952116#line 237 "lex.ll"
    2096 { KEYWORD_RETURN(LVALUE); }                             // CFA
    2097         YY_BREAK
    2098 case 65:
     2117{ KEYWORD_RETURN(RETURN); }
     2118        YY_BREAK
     2119case 71:
    20992120YY_RULE_SETUP
    21002121#line 238 "lex.ll"
    2101 { KEYWORD_RETURN(NORETURN); }                   // C11
    2102         YY_BREAK
    2103 case 66:
     2122{ KEYWORD_RETURN(SHORT); }
     2123        YY_BREAK
     2124case 72:
    21042125YY_RULE_SETUP
    21052126#line 239 "lex.ll"
    2106 { KEYWORD_RETURN(REGISTER); }
    2107         YY_BREAK
    2108 case 67:
     2127{ KEYWORD_RETURN(SIGNED); }
     2128        YY_BREAK
     2129case 73:
    21092130YY_RULE_SETUP
    21102131#line 240 "lex.ll"
    2111 { KEYWORD_RETURN(RESTRICT); }                   // C99
    2112         YY_BREAK
    2113 case 68:
     2132{ KEYWORD_RETURN(SIGNED); }                             // GCC
     2133        YY_BREAK
     2134case 74:
    21142135YY_RULE_SETUP
    21152136#line 241 "lex.ll"
    2116 { KEYWORD_RETURN(RESTRICT); }                   // GCC
    2117         YY_BREAK
    2118 case 69:
     2137{ KEYWORD_RETURN(SIGNED); }                             // GCC
     2138        YY_BREAK
     2139case 75:
    21192140YY_RULE_SETUP
    21202141#line 242 "lex.ll"
    2121 { KEYWORD_RETURN(RESTRICT); }                   // GCC
    2122         YY_BREAK
    2123 case 70:
     2142{ KEYWORD_RETURN(SIZEOF); }
     2143        YY_BREAK
     2144case 76:
    21242145YY_RULE_SETUP
    21252146#line 243 "lex.ll"
    2126 { KEYWORD_RETURN(RETURN); }
    2127         YY_BREAK
    2128 case 71:
     2147{ KEYWORD_RETURN(STATIC); }
     2148        YY_BREAK
     2149case 77:
    21292150YY_RULE_SETUP
    21302151#line 244 "lex.ll"
    2131 { KEYWORD_RETURN(SHORT); }
    2132         YY_BREAK
    2133 case 72:
     2152{ KEYWORD_RETURN(STATICASSERT); }               // C11
     2153        YY_BREAK
     2154case 78:
    21342155YY_RULE_SETUP
    21352156#line 245 "lex.ll"
    2136 { KEYWORD_RETURN(SIGNED); }
    2137         YY_BREAK
    2138 case 73:
     2157{ KEYWORD_RETURN(STRUCT); }
     2158        YY_BREAK
     2159case 79:
    21392160YY_RULE_SETUP
    21402161#line 246 "lex.ll"
    2141 { KEYWORD_RETURN(SIGNED); }                             // GCC
    2142         YY_BREAK
    2143 case 74:
     2162{ KEYWORD_RETURN(SWITCH); }
     2163        YY_BREAK
     2164case 80:
    21442165YY_RULE_SETUP
    21452166#line 247 "lex.ll"
    2146 { KEYWORD_RETURN(SIGNED); }                             // GCC
    2147         YY_BREAK
    2148 case 75:
     2167{ KEYWORD_RETURN(THREADLOCAL); }                // C11
     2168        YY_BREAK
     2169case 81:
    21492170YY_RULE_SETUP
    21502171#line 248 "lex.ll"
    2151 { KEYWORD_RETURN(SIZEOF); }
    2152         YY_BREAK
    2153 case 76:
     2172{ KEYWORD_RETURN(THROW); }                              // CFA
     2173        YY_BREAK
     2174case 82:
    21542175YY_RULE_SETUP
    21552176#line 249 "lex.ll"
    2156 { KEYWORD_RETURN(STATIC); }
    2157         YY_BREAK
    2158 case 77:
     2177{ KEYWORD_RETURN(TRY); }                                // CFA
     2178        YY_BREAK
     2179case 83:
    21592180YY_RULE_SETUP
    21602181#line 250 "lex.ll"
    2161 { KEYWORD_RETURN(STATICASSERT); }               // C11
    2162         YY_BREAK
    2163 case 78:
     2182{ KEYWORD_RETURN(TYPE); }                               // CFA
     2183        YY_BREAK
     2184case 84:
    21642185YY_RULE_SETUP
    21652186#line 251 "lex.ll"
    2166 { KEYWORD_RETURN(STRUCT); }
    2167         YY_BREAK
    2168 case 79:
     2187{ KEYWORD_RETURN(TYPEDEF); }
     2188        YY_BREAK
     2189case 85:
    21692190YY_RULE_SETUP
    21702191#line 252 "lex.ll"
    2171 { KEYWORD_RETURN(SWITCH); }
    2172         YY_BREAK
    2173 case 80:
     2192{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2193        YY_BREAK
     2194case 86:
    21742195YY_RULE_SETUP
    21752196#line 253 "lex.ll"
    2176 { KEYWORD_RETURN(THREADLOCAL); }                // C11
    2177         YY_BREAK
    2178 case 81:
     2197{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2198        YY_BREAK
     2199case 87:
    21792200YY_RULE_SETUP
    21802201#line 254 "lex.ll"
    2181 { KEYWORD_RETURN(THROW); }                              // CFA
    2182         YY_BREAK
    2183 case 82:
     2202{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2203        YY_BREAK
     2204case 88:
    21842205YY_RULE_SETUP
    21852206#line 255 "lex.ll"
    2186 { KEYWORD_RETURN(TRY); }                                // CFA
    2187         YY_BREAK
    2188 case 83:
     2207{ KEYWORD_RETURN(UNION); }
     2208        YY_BREAK
     2209case 89:
    21892210YY_RULE_SETUP
    21902211#line 256 "lex.ll"
    2191 { KEYWORD_RETURN(TYPE); }                               // CFA
    2192         YY_BREAK
    2193 case 84:
     2212{ KEYWORD_RETURN(UNSIGNED); }
     2213        YY_BREAK
     2214case 90:
    21942215YY_RULE_SETUP
    21952216#line 257 "lex.ll"
    2196 { KEYWORD_RETURN(TYPEDEF); }
    2197         YY_BREAK
    2198 case 85:
     2217{ KEYWORD_RETURN(VOID); }
     2218        YY_BREAK
     2219case 91:
    21992220YY_RULE_SETUP
    22002221#line 258 "lex.ll"
    2201 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2202         YY_BREAK
    2203 case 86:
     2222{ KEYWORD_RETURN(VOLATILE); }
     2223        YY_BREAK
     2224case 92:
    22042225YY_RULE_SETUP
    22052226#line 259 "lex.ll"
    2206 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2207         YY_BREAK
    2208 case 87:
     2227{ KEYWORD_RETURN(VOLATILE); }                   // GCC
     2228        YY_BREAK
     2229case 93:
    22092230YY_RULE_SETUP
    22102231#line 260 "lex.ll"
    2211 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2212         YY_BREAK
    2213 case 88:
     2232{ KEYWORD_RETURN(VOLATILE); }                   // GCC
     2233        YY_BREAK
     2234case 94:
    22142235YY_RULE_SETUP
    22152236#line 261 "lex.ll"
    2216 { KEYWORD_RETURN(UNION); }
    2217         YY_BREAK
    2218 case 89:
    2219 YY_RULE_SETUP
    2220 #line 262 "lex.ll"
    2221 { KEYWORD_RETURN(UNSIGNED); }
    2222         YY_BREAK
    2223 case 90:
    2224 YY_RULE_SETUP
    2225 #line 263 "lex.ll"
    2226 { KEYWORD_RETURN(VOID); }
    2227         YY_BREAK
    2228 case 91:
    2229 YY_RULE_SETUP
    2230 #line 264 "lex.ll"
    2231 { KEYWORD_RETURN(VOLATILE); }
    2232         YY_BREAK
    2233 case 92:
    2234 YY_RULE_SETUP
    2235 #line 265 "lex.ll"
    2236 { KEYWORD_RETURN(VOLATILE); }                   // GCC
    2237         YY_BREAK
    2238 case 93:
    2239 YY_RULE_SETUP
    2240 #line 266 "lex.ll"
    2241 { KEYWORD_RETURN(VOLATILE); }                   // GCC
    2242         YY_BREAK
    2243 case 94:
    2244 YY_RULE_SETUP
    2245 #line 267 "lex.ll"
    22462237{ KEYWORD_RETURN(WHILE); }
    22472238        YY_BREAK
     
    22492240case 95:
    22502241YY_RULE_SETUP
    2251 #line 270 "lex.ll"
     2242#line 264 "lex.ll"
    22522243{ IDENTIFIER_RETURN(); }
    22532244        YY_BREAK
    22542245case 96:
    22552246YY_RULE_SETUP
    2256 #line 271 "lex.ll"
     2247#line 265 "lex.ll"
    22572248{ ATTRIBUTE_RETURN(); }
    22582249        YY_BREAK
    22592250case 97:
    22602251YY_RULE_SETUP
    2261 #line 272 "lex.ll"
     2252#line 266 "lex.ll"
    22622253{ BEGIN BKQUOTE; }
    22632254        YY_BREAK
    22642255case 98:
    22652256YY_RULE_SETUP
    2266 #line 273 "lex.ll"
     2257#line 267 "lex.ll"
    22672258{ IDENTIFIER_RETURN(); }
    22682259        YY_BREAK
    22692260case 99:
    22702261YY_RULE_SETUP
    2271 #line 274 "lex.ll"
     2262#line 268 "lex.ll"
    22722263{ BEGIN 0; }
    22732264        YY_BREAK
     
    22752266case 100:
    22762267YY_RULE_SETUP
     2268#line 271 "lex.ll"
     2269{ NUMERIC_RETURN(ZERO); }                               // CFA
     2270        YY_BREAK
     2271case 101:
     2272YY_RULE_SETUP
     2273#line 272 "lex.ll"
     2274{ NUMERIC_RETURN(ONE); }                                // CFA
     2275        YY_BREAK
     2276case 102:
     2277YY_RULE_SETUP
     2278#line 273 "lex.ll"
     2279{ NUMERIC_RETURN(INTEGERconstant); }
     2280        YY_BREAK
     2281case 103:
     2282YY_RULE_SETUP
     2283#line 274 "lex.ll"
     2284{ NUMERIC_RETURN(INTEGERconstant); }
     2285        YY_BREAK
     2286case 104:
     2287YY_RULE_SETUP
     2288#line 275 "lex.ll"
     2289{ NUMERIC_RETURN(INTEGERconstant); }
     2290        YY_BREAK
     2291case 105:
     2292YY_RULE_SETUP
     2293#line 276 "lex.ll"
     2294{ NUMERIC_RETURN(FLOATINGconstant); }
     2295        YY_BREAK
     2296case 106:
     2297YY_RULE_SETUP
    22772298#line 277 "lex.ll"
    2278 { NUMERIC_RETURN(ZERO); }                               // CFA
    2279         YY_BREAK
    2280 case 101:
    2281 YY_RULE_SETUP
    2282 #line 278 "lex.ll"
    2283 { NUMERIC_RETURN(ONE); }                                // CFA
    2284         YY_BREAK
    2285 case 102:
    2286 YY_RULE_SETUP
    2287 #line 279 "lex.ll"
    2288 { NUMERIC_RETURN(INTEGERconstant); }
    2289         YY_BREAK
    2290 case 103:
    2291 YY_RULE_SETUP
    2292 #line 280 "lex.ll"
    2293 { NUMERIC_RETURN(INTEGERconstant); }
    2294         YY_BREAK
    2295 case 104:
    2296 YY_RULE_SETUP
    2297 #line 281 "lex.ll"
    2298 { NUMERIC_RETURN(INTEGERconstant); }
    2299         YY_BREAK
    2300 case 105:
    2301 YY_RULE_SETUP
    2302 #line 282 "lex.ll"
    2303 { NUMERIC_RETURN(FLOATINGconstant); }
    2304         YY_BREAK
    2305 case 106:
    2306 YY_RULE_SETUP
    2307 #line 283 "lex.ll"
    23082299{ NUMERIC_RETURN(FLOATINGconstant); }
    23092300        YY_BREAK
     
    23112302case 107:
    23122303YY_RULE_SETUP
    2313 #line 286 "lex.ll"
     2304#line 280 "lex.ll"
    23142305{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    23152306        YY_BREAK
    23162307case 108:
    23172308YY_RULE_SETUP
    2318 #line 287 "lex.ll"
     2309#line 281 "lex.ll"
    23192310{ *strtext += std::string( yytext ); }
    23202311        YY_BREAK
     
    23222313/* rule 109 can match eol */
    23232314YY_RULE_SETUP
    2324 #line 288 "lex.ll"
     2315#line 282 "lex.ll"
    23252316{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
    23262317        YY_BREAK
     
    23292320case 110:
    23302321YY_RULE_SETUP
    2331 #line 292 "lex.ll"
     2322#line 286 "lex.ll"
    23322323{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    23332324        YY_BREAK
    23342325case 111:
    23352326YY_RULE_SETUP
    2336 #line 293 "lex.ll"
     2327#line 287 "lex.ll"
    23372328{ *strtext += std::string( yytext ); }
    23382329        YY_BREAK
     
    23402331/* rule 112 can match eol */
    23412332YY_RULE_SETUP
    2342 #line 294 "lex.ll"
     2333#line 288 "lex.ll"
    23432334{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
    23442335        YY_BREAK
     
    23472338case 113:
    23482339YY_RULE_SETUP
    2349 #line 298 "lex.ll"
     2340#line 292 "lex.ll"
    23502341{ rm_underscore(); *strtext += std::string( yytext ); }
    23512342        YY_BREAK
     
    23532344/* rule 114 can match eol */
    23542345YY_RULE_SETUP
    2355 #line 299 "lex.ll"
     2346#line 293 "lex.ll"
    23562347{}                                              // continuation (ALSO HANDLED BY CPP)
    23572348        YY_BREAK
    23582349case 115:
    23592350YY_RULE_SETUP
    2360 #line 300 "lex.ll"
     2351#line 294 "lex.ll"
    23612352{ *strtext += std::string( yytext ); } // unknown escape character
    23622353        YY_BREAK
     
    23642355case 116:
    23652356YY_RULE_SETUP
     2357#line 297 "lex.ll"
     2358{ ASCIIOP_RETURN(); }
     2359        YY_BREAK
     2360case 117:
     2361YY_RULE_SETUP
     2362#line 298 "lex.ll"
     2363{ ASCIIOP_RETURN(); }
     2364        YY_BREAK
     2365case 118:
     2366YY_RULE_SETUP
     2367#line 299 "lex.ll"
     2368{ ASCIIOP_RETURN(); }
     2369        YY_BREAK
     2370case 119:
     2371YY_RULE_SETUP
     2372#line 300 "lex.ll"
     2373{ ASCIIOP_RETURN(); }
     2374        YY_BREAK
     2375case 120:
     2376YY_RULE_SETUP
     2377#line 301 "lex.ll"
     2378{ ASCIIOP_RETURN(); }
     2379        YY_BREAK
     2380case 121:
     2381YY_RULE_SETUP
     2382#line 302 "lex.ll"
     2383{ ASCIIOP_RETURN(); }
     2384        YY_BREAK
     2385case 122:
     2386YY_RULE_SETUP
    23662387#line 303 "lex.ll"
    2367 { ASCIIOP_RETURN(); }
    2368         YY_BREAK
    2369 case 117:
     2388{ ASCIIOP_RETURN(); }                                   // also operator
     2389        YY_BREAK
     2390case 123:
    23702391YY_RULE_SETUP
    23712392#line 304 "lex.ll"
    23722393{ ASCIIOP_RETURN(); }
    23732394        YY_BREAK
    2374 case 118:
     2395case 124:
    23752396YY_RULE_SETUP
    23762397#line 305 "lex.ll"
    23772398{ ASCIIOP_RETURN(); }
    23782399        YY_BREAK
    2379 case 119:
     2400case 125:
    23802401YY_RULE_SETUP
    23812402#line 306 "lex.ll"
    2382 { ASCIIOP_RETURN(); }
    2383         YY_BREAK
    2384 case 120:
     2403{ ASCIIOP_RETURN(); }                                   // also operator
     2404        YY_BREAK
     2405case 126:
    23852406YY_RULE_SETUP
    23862407#line 307 "lex.ll"
    2387 { ASCIIOP_RETURN(); }
    2388         YY_BREAK
    2389 case 121:
    2390 YY_RULE_SETUP
    2391 #line 308 "lex.ll"
    2392 { ASCIIOP_RETURN(); }
    2393         YY_BREAK
    2394 case 122:
    2395 YY_RULE_SETUP
    2396 #line 309 "lex.ll"
    2397 { ASCIIOP_RETURN(); }                                   // also operator
    2398         YY_BREAK
    2399 case 123:
    2400 YY_RULE_SETUP
    2401 #line 310 "lex.ll"
    2402 { ASCIIOP_RETURN(); }
    2403         YY_BREAK
    2404 case 124:
    2405 YY_RULE_SETUP
    2406 #line 311 "lex.ll"
    2407 { ASCIIOP_RETURN(); }
    2408         YY_BREAK
    2409 case 125:
    2410 YY_RULE_SETUP
    2411 #line 312 "lex.ll"
    2412 { ASCIIOP_RETURN(); }                                   // also operator
    2413         YY_BREAK
    2414 case 126:
    2415 YY_RULE_SETUP
    2416 #line 313 "lex.ll"
    24172408{ NAMEDOP_RETURN(ELLIPSIS); }
    24182409        YY_BREAK
     
    24202411case 127:
    24212412YY_RULE_SETUP
    2422 #line 316 "lex.ll"
     2413#line 310 "lex.ll"
    24232414{ RETURN_VAL('['); }
    24242415        YY_BREAK
    24252416case 128:
    24262417YY_RULE_SETUP
    2427 #line 317 "lex.ll"
     2418#line 311 "lex.ll"
    24282419{ RETURN_VAL(']'); }
    24292420        YY_BREAK
    24302421case 129:
    24312422YY_RULE_SETUP
    2432 #line 318 "lex.ll"
     2423#line 312 "lex.ll"
    24332424{ RETURN_VAL('{'); }
    24342425        YY_BREAK
    24352426case 130:
    24362427YY_RULE_SETUP
    2437 #line 319 "lex.ll"
     2428#line 313 "lex.ll"
    24382429{ RETURN_VAL('}'); }
    24392430        YY_BREAK
     
    24412432case 131:
    24422433YY_RULE_SETUP
     2434#line 316 "lex.ll"
     2435{ ASCIIOP_RETURN(); }
     2436        YY_BREAK
     2437case 132:
     2438YY_RULE_SETUP
     2439#line 317 "lex.ll"
     2440{ ASCIIOP_RETURN(); }
     2441        YY_BREAK
     2442case 133:
     2443YY_RULE_SETUP
     2444#line 318 "lex.ll"
     2445{ ASCIIOP_RETURN(); }
     2446        YY_BREAK
     2447case 134:
     2448YY_RULE_SETUP
     2449#line 319 "lex.ll"
     2450{ ASCIIOP_RETURN(); }
     2451        YY_BREAK
     2452case 135:
     2453YY_RULE_SETUP
     2454#line 320 "lex.ll"
     2455{ ASCIIOP_RETURN(); }
     2456        YY_BREAK
     2457case 136:
     2458YY_RULE_SETUP
     2459#line 321 "lex.ll"
     2460{ ASCIIOP_RETURN(); }
     2461        YY_BREAK
     2462case 137:
     2463YY_RULE_SETUP
    24432464#line 322 "lex.ll"
    24442465{ ASCIIOP_RETURN(); }
    24452466        YY_BREAK
    2446 case 132:
     2467case 138:
    24472468YY_RULE_SETUP
    24482469#line 323 "lex.ll"
    24492470{ ASCIIOP_RETURN(); }
    24502471        YY_BREAK
    2451 case 133:
     2472case 139:
    24522473YY_RULE_SETUP
    24532474#line 324 "lex.ll"
    24542475{ ASCIIOP_RETURN(); }
    24552476        YY_BREAK
    2456 case 134:
     2477case 140:
    24572478YY_RULE_SETUP
    24582479#line 325 "lex.ll"
    24592480{ ASCIIOP_RETURN(); }
    24602481        YY_BREAK
    2461 case 135:
     2482case 141:
    24622483YY_RULE_SETUP
    24632484#line 326 "lex.ll"
    24642485{ ASCIIOP_RETURN(); }
    24652486        YY_BREAK
    2466 case 136:
     2487case 142:
    24672488YY_RULE_SETUP
    24682489#line 327 "lex.ll"
    24692490{ ASCIIOP_RETURN(); }
    24702491        YY_BREAK
    2471 case 137:
     2492case 143:
    24722493YY_RULE_SETUP
    24732494#line 328 "lex.ll"
    24742495{ ASCIIOP_RETURN(); }
    24752496        YY_BREAK
    2476 case 138:
     2497case 144:
    24772498YY_RULE_SETUP
    24782499#line 329 "lex.ll"
    24792500{ ASCIIOP_RETURN(); }
    24802501        YY_BREAK
    2481 case 139:
    2482 YY_RULE_SETUP
    2483 #line 330 "lex.ll"
    2484 { ASCIIOP_RETURN(); }
    2485         YY_BREAK
    2486 case 140:
     2502case 145:
    24872503YY_RULE_SETUP
    24882504#line 331 "lex.ll"
    2489 { ASCIIOP_RETURN(); }
    2490         YY_BREAK
    2491 case 141:
     2505{ NAMEDOP_RETURN(ICR); }
     2506        YY_BREAK
     2507case 146:
    24922508YY_RULE_SETUP
    24932509#line 332 "lex.ll"
    2494 { ASCIIOP_RETURN(); }
    2495         YY_BREAK
    2496 case 142:
     2510{ NAMEDOP_RETURN(DECR); }
     2511        YY_BREAK
     2512case 147:
    24972513YY_RULE_SETUP
    24982514#line 333 "lex.ll"
    2499 { ASCIIOP_RETURN(); }
    2500         YY_BREAK
    2501 case 143:
     2515{ NAMEDOP_RETURN(EQ); }
     2516        YY_BREAK
     2517case 148:
    25022518YY_RULE_SETUP
    25032519#line 334 "lex.ll"
    2504 { ASCIIOP_RETURN(); }
    2505         YY_BREAK
    2506 case 144:
     2520{ NAMEDOP_RETURN(NE); }
     2521        YY_BREAK
     2522case 149:
    25072523YY_RULE_SETUP
    25082524#line 335 "lex.ll"
    2509 { ASCIIOP_RETURN(); }
    2510         YY_BREAK
    2511 case 145:
     2525{ NAMEDOP_RETURN(LS); }
     2526        YY_BREAK
     2527case 150:
     2528YY_RULE_SETUP
     2529#line 336 "lex.ll"
     2530{ NAMEDOP_RETURN(RS); }
     2531        YY_BREAK
     2532case 151:
    25122533YY_RULE_SETUP
    25132534#line 337 "lex.ll"
    2514 { NAMEDOP_RETURN(ICR); }
    2515         YY_BREAK
    2516 case 146:
     2535{ NAMEDOP_RETURN(LE); }
     2536        YY_BREAK
     2537case 152:
    25172538YY_RULE_SETUP
    25182539#line 338 "lex.ll"
    2519 { NAMEDOP_RETURN(DECR); }
    2520         YY_BREAK
    2521 case 147:
     2540{ NAMEDOP_RETURN(GE); }
     2541        YY_BREAK
     2542case 153:
    25222543YY_RULE_SETUP
    25232544#line 339 "lex.ll"
    2524 { NAMEDOP_RETURN(EQ); }
    2525         YY_BREAK
    2526 case 148:
     2545{ NAMEDOP_RETURN(ANDAND); }
     2546        YY_BREAK
     2547case 154:
    25272548YY_RULE_SETUP
    25282549#line 340 "lex.ll"
    2529 { NAMEDOP_RETURN(NE); }
    2530         YY_BREAK
    2531 case 149:
     2550{ NAMEDOP_RETURN(OROR); }
     2551        YY_BREAK
     2552case 155:
    25322553YY_RULE_SETUP
    25332554#line 341 "lex.ll"
    2534 { NAMEDOP_RETURN(LS); }
    2535         YY_BREAK
    2536 case 150:
     2555{ NAMEDOP_RETURN(ARROW); }
     2556        YY_BREAK
     2557case 156:
    25372558YY_RULE_SETUP
    25382559#line 342 "lex.ll"
    2539 { NAMEDOP_RETURN(RS); }
    2540         YY_BREAK
    2541 case 151:
     2560{ NAMEDOP_RETURN(PLUSassign); }
     2561        YY_BREAK
     2562case 157:
    25422563YY_RULE_SETUP
    25432564#line 343 "lex.ll"
    2544 { NAMEDOP_RETURN(LE); }
    2545         YY_BREAK
    2546 case 152:
     2565{ NAMEDOP_RETURN(MINUSassign); }
     2566        YY_BREAK
     2567case 158:
    25472568YY_RULE_SETUP
    25482569#line 344 "lex.ll"
    2549 { NAMEDOP_RETURN(GE); }
    2550         YY_BREAK
    2551 case 153:
     2570{ NAMEDOP_RETURN(MULTassign); }
     2571        YY_BREAK
     2572case 159:
    25522573YY_RULE_SETUP
    25532574#line 345 "lex.ll"
    2554 { NAMEDOP_RETURN(ANDAND); }
    2555         YY_BREAK
    2556 case 154:
     2575{ NAMEDOP_RETURN(DIVassign); }
     2576        YY_BREAK
     2577case 160:
    25572578YY_RULE_SETUP
    25582579#line 346 "lex.ll"
    2559 { NAMEDOP_RETURN(OROR); }
    2560         YY_BREAK
    2561 case 155:
     2580{ NAMEDOP_RETURN(MODassign); }
     2581        YY_BREAK
     2582case 161:
    25622583YY_RULE_SETUP
    25632584#line 347 "lex.ll"
    2564 { NAMEDOP_RETURN(ARROW); }
    2565         YY_BREAK
    2566 case 156:
     2585{ NAMEDOP_RETURN(ANDassign); }
     2586        YY_BREAK
     2587case 162:
    25672588YY_RULE_SETUP
    25682589#line 348 "lex.ll"
    2569 { NAMEDOP_RETURN(PLUSassign); }
    2570         YY_BREAK
    2571 case 157:
     2590{ NAMEDOP_RETURN(ORassign); }
     2591        YY_BREAK
     2592case 163:
    25722593YY_RULE_SETUP
    25732594#line 349 "lex.ll"
    2574 { NAMEDOP_RETURN(MINUSassign); }
    2575         YY_BREAK
    2576 case 158:
     2595{ NAMEDOP_RETURN(ERassign); }
     2596        YY_BREAK
     2597case 164:
    25772598YY_RULE_SETUP
    25782599#line 350 "lex.ll"
    2579 { NAMEDOP_RETURN(MULTassign); }
    2580         YY_BREAK
    2581 case 159:
     2600{ NAMEDOP_RETURN(LSassign); }
     2601        YY_BREAK
     2602case 165:
    25822603YY_RULE_SETUP
    25832604#line 351 "lex.ll"
    2584 { NAMEDOP_RETURN(DIVassign); }
    2585         YY_BREAK
    2586 case 160:
    2587 YY_RULE_SETUP
    2588 #line 352 "lex.ll"
    2589 { NAMEDOP_RETURN(MODassign); }
    2590         YY_BREAK
    2591 case 161:
    2592 YY_RULE_SETUP
    2593 #line 353 "lex.ll"
    2594 { NAMEDOP_RETURN(ANDassign); }
    2595         YY_BREAK
    2596 case 162:
    2597 YY_RULE_SETUP
    2598 #line 354 "lex.ll"
    2599 { NAMEDOP_RETURN(ORassign); }
    2600         YY_BREAK
    2601 case 163:
    2602 YY_RULE_SETUP
    2603 #line 355 "lex.ll"
    2604 { NAMEDOP_RETURN(ERassign); }
    2605         YY_BREAK
    2606 case 164:
    2607 YY_RULE_SETUP
    2608 #line 356 "lex.ll"
    2609 { NAMEDOP_RETURN(LSassign); }
    2610         YY_BREAK
    2611 case 165:
    2612 YY_RULE_SETUP
    2613 #line 357 "lex.ll"
    26142605{ NAMEDOP_RETURN(RSassign); }
    26152606        YY_BREAK
     
    26172608case 166:
    26182609YY_RULE_SETUP
    2619 #line 360 "lex.ll"
     2610#line 354 "lex.ll"
    26202611{ IDENTIFIER_RETURN(); }                                // unary
    26212612        YY_BREAK
    26222613case 167:
    26232614YY_RULE_SETUP
    2624 #line 361 "lex.ll"
     2615#line 355 "lex.ll"
    26252616{ IDENTIFIER_RETURN(); }
    26262617        YY_BREAK
    26272618case 168:
    26282619YY_RULE_SETUP
    2629 #line 362 "lex.ll"
     2620#line 356 "lex.ll"
    26302621{ IDENTIFIER_RETURN(); }                // binary
    26312622        YY_BREAK
     
    26582649case 169:
    26592650YY_RULE_SETUP
    2660 #line 389 "lex.ll"
     2651#line 383 "lex.ll"
    26612652{
    26622653        // 1 or 2 character unary operator ?
     
    26732664case 170:
    26742665YY_RULE_SETUP
    2675 #line 401 "lex.ll"
     2666#line 395 "lex.ll"
    26762667{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    26772668        YY_BREAK
    26782669case 171:
    26792670YY_RULE_SETUP
    2680 #line 403 "lex.ll"
     2671#line 397 "lex.ll"
    26812672ECHO;
    26822673        YY_BREAK
    2683 #line 2684 "Parser/lex.cc"
     2674#line 2675 "Parser/lex.cc"
    26842675case YY_STATE_EOF(INITIAL):
    26852676case YY_STATE_EOF(COMMENT):
     
    30133004
    30143005        return yy_is_jam ? 0 : yy_current_state;
    3015 }
    3016 
    3017     static void yyunput (int c, register char * yy_bp )
    3018 {
    3019         register char *yy_cp;
    3020    
    3021     yy_cp = (yy_c_buf_p);
    3022 
    3023         /* undo effects of setting up yytext */
    3024         *yy_cp = (yy_hold_char);
    3025 
    3026         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
    3027                 { /* need to shift things up to make room */
    3028                 /* +2 for EOB chars. */
    3029                 register int number_to_move = (yy_n_chars) + 2;
    3030                 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
    3031                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
    3032                 register char *source =
    3033                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
    3034 
    3035                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
    3036                         *--dest = *--source;
    3037 
    3038                 yy_cp += (int) (dest - source);
    3039                 yy_bp += (int) (dest - source);
    3040                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
    3041                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
    3042 
    3043                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
    3044                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
    3045                 }
    3046 
    3047         *--yy_cp = (char) c;
    3048 
    3049     if ( c == '\n' ){
    3050         --yylineno;
    3051     }
    3052 
    3053         (yytext_ptr) = yy_bp;
    3054         (yy_hold_char) = *yy_cp;
    3055         (yy_c_buf_p) = yy_cp;
    30563006}
    30573007
     
    36973647#define YYTABLES_NAME "yytables"
    36983648
    3699 #line 403 "lex.ll"
     3649#line 397 "lex.ll"
    37003650
    37013651
  • src/Parser/lex.h

    rcd623a4 r5f2f2d7  
    1010// Created On       : Sat Sep 22 08:58:10 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 07:44:39 2015
    13 // Update Count     : 338
     12// Last Modified On : Mon Jun  8 20:28:48 2015
     13// Update Count     : 341
    1414//
    1515
     
    1818
    1919int yylex();
    20 void yyerror(char *);
     20void yyerror( const char * );
    2121
    2222// External declarations for information sharing between lexer and scanner
     
    3535class Token {
    3636  public:
    37     std::string *str;
     37    std::string *str;                                                                   // must be pointer as used in union
    3838    Location loc;
    3939
     
    4444
    4545// Local Variables: //
    46 // fill-column: 110 //
    4746// tab-width: 4 //
    4847// mode: c++ //
  • src/Parser/lex.ll

    rcd623a4 r5f2f2d7  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Sun Jun  7 07:14:16 2015
    13  * Update Count     : 374
     12 * Last Modified On : Mon Jun  8 20:24:15 2015
     13 * Update Count     : 381
    1414 */
    1515
    1616%option yylineno
     17%option nounput
    1718
    1819%{
     
    3233std::string *strtext;                                                                   // accumulate parts of character and string constant value
    3334
     35#define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return(x)
     36#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN(x)
     37#define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN(x)
     38#define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN(x)
     39
    3440#define WHITE_RETURN(x)                                                                 // do nothing
    3541#define NEWLINE_RETURN()        WHITE_RETURN('\n')
    36 #define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); \
    37                                         yylval.tok.loc.file = yyfilename; \
    38                                         yylval.tok.loc.line = yylineno; \
    39                                         return(x)
    40 #define RETURN_STR(x)           yylval.tok.str = strtext; \
    41                                         yylval.tok.loc.file = yyfilename; \
    42                                         yylval.tok.loc.line = yylineno; \
    43                                         return(x)
    44 
    45 #define KEYWORD_RETURN(x)       RETURN_VAL(x)                           // keyword
     42#define ASCIIOP_RETURN()        RETURN_CHAR((int)yytext[0])     // single character operator
     43#define NAMEDOP_RETURN(x)       RETURN_VAL(x)                           // multichar operator, with a name
     44#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL(x) // numeric constant
     45#define KEYWORD_RETURN(x)       RETURN_CHAR(x)                          // keyword
    4646#define IDENTIFIER_RETURN()     RETURN_VAL((typedefTable.isIdentifier(yytext) ? IDENTIFIER : typedefTable.isTypedef(yytext) ? TYPEDEFname : TYPEGENname))
    47 //#define ATTRIBUTE_RETURN()    RETURN_VAL((typedefTable.isIdentifier(yytext) ? ATTR_IDENTIFIER : typedefTable.isTypedef(yytext) ? ATTR_TYPEDEFname : ATTR_TYPEGENname))
    4847#define ATTRIBUTE_RETURN()      RETURN_VAL(ATTR_IDENTIFIER)
    49 
    50 #define ASCIIOP_RETURN()        RETURN_VAL((int)yytext[0])      // single character operator
    51 #define NAMEDOP_RETURN(x)       RETURN_VAL(x)                           // multichar operator, with a name
    52 
    53 #define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL(x) // numeric constant
    5448
    5549void rm_underscore() {
  • src/Parser/module.mk

    rcd623a4 r5f2f2d7  
    1111## Created On       : Sat May 16 15:29:09 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Thu Jun  4 09:39:00 2015
    14 ## Update Count     : 86
     13## Last Modified On : Mon Jun  8 20:23:47 2015
     14## Update Count     : 87
    1515###############################################################################
    1616
  • src/Parser/parser.cc

    rcd623a4 r5f2f2d7  
    92669266// ----end of grammar----
    92679267
    9268 void yyerror( char *string ) {
    9269         using std::cout;
    9270         using std::endl;
    9271         cout << "Error ";
     9268void yyerror( const char * ) {
     9269        std::cout << "Error ";
    92729270        if ( yyfilename ) {
    9273                 cout << "in file " << yyfilename << " ";
    9274         }
    9275         cout << "at line " << yylineno << " reading token \"" << *(yylval.tok.str) << "\"" << endl;
     9271            std::cout << "in file " << yyfilename << " ";
     9272        } // if
     9273        std::cout << "at line " << yylineno << " reading token \"" << *(yylval.tok.str) << "\"" << std::endl;
    92769274}
    92779275
    92789276// Local Variables: //
    9279 // fill-column: 110 //
    92809277// tab-width: 4 //
    92819278// mode: c++ //
  • src/Parser/parser.yy

    rcd623a4 r5f2f2d7  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 20:18:36 2015
    13 // Update Count     : 1026
     12// Last Modified On : Mon Jun  8 20:31:07 2015
     13// Update Count     : 1030
    1414//
    1515
     
    27172717// ----end of grammar----
    27182718
    2719 void yyerror( char *string ) {
    2720         using std::cout;
    2721         using std::endl;
    2722         cout << "Error ";
     2719void yyerror( const char * ) {
     2720        std::cout << "Error ";
    27232721        if ( yyfilename ) {
    2724                 cout << "in file " << yyfilename << " ";
    2725         }
    2726         cout << "at line " << yylineno << " reading token \"" << *(yylval.tok.str) << "\"" << endl;
     2722            std::cout << "in file " << yyfilename << " ";
     2723        } // if
     2724        std::cout << "at line " << yylineno << " reading token \"" << *(yylval.tok.str) << "\"" << std::endl;
    27272725}
    27282726
    27292727// Local Variables: //
    2730 // fill-column: 110 //
    27312728// tab-width: 4 //
    27322729// mode: c++ //
  • src/ResolvExpr/AlternativeFinder.cc

    rcd623a4 r5f2f2d7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:52:08 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu May 21 16:21:09 2015
    13 // Update Count     : 12
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jun  8 14:53:58 2015
     13// Update Count     : 14
    1414//
    1515
     
    209209                pruneAlternatives( alternatives.begin(), alternatives.end(), front_inserter( alternatives ), indexer );
    210210                if ( alternatives.begin() == oldBegin ) {
    211                         std::ostrstream stream;
     211                        std::ostringstream stream;
    212212                        stream << "Can't choose between alternatives for expression ";
    213213                        expr->print( stream );
     
    216216                        findMinCost( alternatives.begin(), alternatives.end(), back_inserter( winners ) );
    217217                        printAlts( winners, stream, 8 );
    218                         throw SemanticError( std::string( stream.str(), stream.pcount() ) );
     218                        throw SemanticError( stream.str() );
    219219                }
    220220                alternatives.erase( oldBegin, alternatives.end() );
  • src/ResolvExpr/RenameVars.cc

    rcd623a4 r5f2f2d7  
    1010// Created On       : Sun May 17 12:05:18 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 12:07:59 2015
    13 // Update Count     : 2
     12// Last Modified On : Mon Jun  8 14:51:35 2015
     13// Update Count     : 4
    1414//
    1515
    16 #include <strstream>
     16#include <sstream>
    1717
    1818#include "RenameVars.h"
     
    120120                        mapStack.push_front( mapStack.front() );
    121121                        for ( std::list< TypeDecl* >::iterator i = type->get_forall().begin(); i != type->get_forall().end(); ++i ) {
    122                                 std::ostrstream output;
     122                                std::ostringstream output;
    123123                                output << "_" << level << "_" << (*i)->get_name();
    124                                 std::string newname( output.str(), output.pcount() );
     124                                std::string newname( output.str() );
    125125                                mapStack.front()[ (*i)->get_name() ] = newname;
    126126                                (*i)->set_name( newname );
  • src/ResolvExpr/Resolver.cc

    rcd623a4 r5f2f2d7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:17:01 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Mon Jun 01 13:47:16 2015
    13 // Update Count     : 21
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sun Jun  7 21:50:37 2015
     13// Update Count     : 23
    1414//
    1515
  • src/SymTab/Mangler.cc

    rcd623a4 r5f2f2d7  
    1010// Created On       : Sun May 17 21:40:29 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 16:50:47 2015
    13 // Update Count     : 3
     12// Last Modified On : Mon Jun  8 15:12:12 2015
     13// Update Count     : 8
    1414//
    1515
     
    160160                } else {
    161161                        printQualifiers( typeInst );
    162                         std::ostrstream numStream;
     162                        std::ostringstream numStream;
    163163                        numStream << varNum->second.first;
    164                         mangleName << (numStream.pcount() + 1);
    165164                        switch ( (TypeDecl::Kind )varNum->second.second ) {
    166165                          case TypeDecl::Any:
     
    174173                                break;
    175174                        } // switch
    176                         mangleName << std::string( numStream.str(), numStream.pcount() );
     175                        mangleName << numStream.str();
    177176                } // if
    178177        }
     
    220219                                        sub_mangler.varNums = varNums;
    221220                                        (*assert)->accept( sub_mangler );
    222                                         assertionNames.push_back( std::string( sub_mangler.mangleName.str(), sub_mangler.mangleName.pcount() ) );
     221                                        assertionNames.push_back( sub_mangler.mangleName.str() );
    223222                                } // for
    224223                        } // for
  • src/SymTab/Mangler.h

    rcd623a4 r5f2f2d7  
    1010// Created On       : Sun May 17 21:44:03 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 16:49:21 2015
    13 // Update Count     : 3
     12// Last Modified On : Mon Jun  8 14:47:14 2015
     13// Update Count     : 5
    1414//
    1515
     
    1717#define MANGLER_H
    1818
    19 #include <strstream>
     19#include <sstream>
    2020#include "SynTree/SynTree.h"
    2121#include "SynTree/Visitor.h"
     
    4343                virtual void visit( TupleType *tupleType );
    4444 
    45                 std::string get_mangleName() { return std::string( mangleName.str(), mangleName.pcount() ); }
     45                std::string get_mangleName() { return mangleName.str(); }
    4646          private:
    47                 std::ostrstream mangleName;
     47                std::ostringstream mangleName;
    4848                typedef std::map< std::string, std::pair< int, int > > VarMapType;
    4949                VarMapType varNums;
  • src/SymTab/Validate.cc

    rcd623a4 r5f2f2d7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:50:04 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Mon May 25 14:27:15 2015
    13 // Update Count     : 21
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jun  8 17:19:35 2015
     13// Update Count     : 22
    1414//
    1515
     
    651651
    652652        void addDecls( std::list< Declaration * > &declsToAdd, std::list< Statement * > &statements, std::list< Statement * >::iterator i ) {
    653                 if ( ! declsToAdd.empty() ) {
    654                         for ( std::list< Declaration * >::iterator decl = declsToAdd.begin(); decl != declsToAdd.end(); ++decl ) {
    655                                 statements.insert( i, new DeclStmt( noLabels, *decl ) );
    656                         } // for
    657                         declsToAdd.clear();
    658                 } // if
     653                for ( std::list< Declaration * >::iterator decl = declsToAdd.begin(); decl != declsToAdd.end(); ++decl ) {
     654                        statements.insert( i, new DeclStmt( noLabels, *decl ) );
     655                } // for
     656                declsToAdd.clear();
    659657        }
    660658
  • src/SynTree/BasicType.cc

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 11:52:43 2015
    13 // Update Count     : 2
     12// Last Modified On : Sun Jun  7 08:44:36 2015
     13// Update Count     : 5
    1414//
    1515
  • src/SynTree/Constant.cc

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 12:17:22 2015
    13 // Update Count     : 2
     12// Last Modified On : Sun Jun  7 08:45:30 2015
     13// Update Count     : 5
    1414//
    1515
     
    2929        os << value;
    3030        if ( type ) {
    31                 os << " (type: ";
     31                os << " ";
    3232                type->print( os );
    33                 os << ")";
    3433        } // if
    3534}
  • src/SynTree/DeclStmt.cc

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 08:16:03 2015
    13 // Update Count     : 2
     12// Last Modified On : Mon Jun  8 17:24:38 2015
     13// Update Count     : 3
    1414//
    1515
     
    2929
    3030void DeclStmt::print( std::ostream &os, int indent ) {
     31        assert( decl != 0 );
    3132        os << "Declaration of ";
    32         if ( decl ) {
    33                 decl->print( os, indent );
    34         } // if
     33        decl->print( os, indent );
    3534}
    3635
  • src/SynTree/Declaration.h

    rcd623a4 r5f2f2d7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Mon May 25 14:08:10 2015
    13 // Update Count     : 6
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sun Jun  7 22:03:43 2015
     13// Update Count     : 7
    1414//
    1515
     
    3838        virtual ~Declaration();
    3939
    40         std::string get_name() const { return name; }
     40        const std::string &get_name() const { return name; }
    4141        void set_name( std::string newValue ) { name = newValue; }
    4242        StorageClass get_storageClass() const { return storageClass; }
  • src/SynTree/Expression.cc

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 23:43:22 2015
    13 // Update Count     : 15
     12// Last Modified On : Sun Jun  7 08:40:46 2015
     13// Update Count     : 16
    1414//
    1515
     
    7272
    7373void ConstantExpr::print( std::ostream &os, int indent ) const {
    74         os << "constant expression: " ;
     74        os << "constant expression " ;
    7575        constant.print( os );
    7676        Expression::print( os, indent );
  • src/SynTree/Expression.h

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 08:46:15 2015
    13 // Update Count     : 3
     12// Last Modified On : Sun Jun  7 22:03:44 2015
     13// Update Count     : 4
    1414//
    1515
     
    125125        virtual ~NameExpr();
    126126
    127         std::string get_name() const { return name; }
     127        const std::string &get_name() const { return name; }
    128128        void set_name( std::string newValue ) { name = newValue; }
    129129
  • src/SynTree/FunctionDecl.cc

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu May 21 21:31:16 2015
    13 // Update Count     : 11
     12// Last Modified On : Sun Jun  7 08:36:44 2015
     13// Update Count     : 12
    1414//
    1515
     
    5252       
    5353        if ( get_name() != "" ) {
    54                 os << get_name() << ": a ";
     54                os << get_name() << ": ";
    5555        } // if
    5656        if ( get_linkage() != LinkageSpec::Cforall ) {
     
    9191       
    9292        if ( get_name() != "" ) {
    93                 os << get_name() << ": a ";
     93                os << get_name() << ": ";
    9494        } // if
    9595        if ( isInline ) {
  • src/SynTree/NamedTypeDecl.cc

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 10:13:19 2015
    13 // Update Count     : 1
     12// Last Modified On : Sun Jun  7 08:36:09 2015
     13// Update Count     : 2
    1414//
    1515
     
    3737       
    3838        if ( get_name() != "" ) {
    39                 os << get_name() << ": a ";
     39                os << get_name() << ": ";
    4040        } // if
    4141        if ( get_storageClass() != NoStorageClass ) {
     
    6161       
    6262        if ( get_name() != "" ) {
    63                 os << get_name() << ": a ";
     63                os << get_name() << ": ";
    6464        } // if
    6565        if ( get_storageClass() != NoStorageClass ) {
  • src/SynTree/ReferenceToType.cc

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 16:52:40 2015
    13 // Update Count     : 3
     12// Last Modified On : Sun Jun  7 08:31:48 2015
     13// Update Count     : 4
    1414//
    1515
     
    101101       
    102102        Type::print( os, indent );
    103         os << "instance of " << typeString() << " " << get_name() << " (" << ( isFtype ? "" : "not" ) << " a function type) ";
     103        os << "instance of " << typeString() << " " << get_name() << " (" << ( isFtype ? "" : "not" ) << " function type) ";
    104104        if ( ! parameters.empty() ) {
    105105                os << endl << std::string( indent, ' ' ) << "with parameters" << endl;
  • src/SynTree/Type.h

    rcd623a4 r5f2f2d7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 14:12:14 2015
    13 // Update Count     : 2
     12// Last Modified On : Sun Jun  7 21:50:38 2015
     13// Update Count     : 12
    1414//
    1515
     
    214214        virtual ~ReferenceToType();
    215215
    216         std::string get_name() const { return name; }
     216        const std::string &get_name() const { return name; }
    217217        void set_name( std::string newValue ) { name = newValue; }
    218218        std::list< Expression* >& get_parameters() { return parameters; }
     
    372372        virtual ~AttrType();
    373373
    374         std::string get_name() const { return name; }
     374        const std::string &get_name() const { return name; }
    375375        void set_name( const std::string &newValue ) { name = newValue; }
    376376        Expression *get_expr() const { return expr; }
  • src/Tests/ResolvExpr/Abstype.c

    rcd623a4 r5f2f2d7  
    1 // "cfa-cpp -nx Abstype.c"
    2 
    31type T | { T x( T ); };
    42
     
    97
    108forall( type T ) lvalue T *?( T * );
    11 int ?++( int *);
     9int ?++( int * );
    1210int ?=?( int *, int );
    1311forall( dtype DT ) DT * ?=?( DT **, DT * );
  • src/Tests/ResolvExpr/make-rules

    rcd623a4 r5f2f2d7  
    11CFA = ../../cfa-cpp
    22
    3 DIFF = /software/gnu/bin/diff
     3EXPECTED := ${wildcard ${EXPECTDIR}/*.tst}
     4TESTS := ${EXPECTED:${EXPECTDIR}/%=${OUTPUTDIR}/%}
     5TEST_IN := ${TESTS:.tst=.c}
    46
    5 # Basic SynTree printing
    6 EXPECTED := ${wildcard $(EXPECTDIR)/*.tst}
    7 TESTS := $(EXPECTED:$(EXPECTDIR)/%=$(OUTPUTDIR)/%)
    8 TEST_IN := $(TESTS:.tst=.c)
     7.SILENT :
    98
    10 $(OUTPUTDIR)/%.tst:%.c $(CFA)
    11         -$(CFA) $(CFAOPT) < $< > $@ 2>&1
     9${OUTPUTDIR}/%.tst : %.c ${CFA}
     10        -${CFA} ${CFAOPT} < $< > $@ 2>&1
    1211
    13 $(OUTPUTDIR)/report: $(TESTS) $(EXPECTED)
     12${OUTPUTDIR}/report : ${TESTS} ${EXPECTED}
    1413        rm -f $@
    15         @for i in $(TESTS); do \
    16           echo "---"`basename $$i`"---" | tee -a $@; \
    17           $(DIFF) -B -w -u $(EXPECTDIR)/`basename $$i` $$i | tee -a $@; \
     14        @for i in ${TESTS}; do \
     15             echo "---"`basename $$i`"---" | tee -a $@; \
     16             diff -B -w ${EXPECTDIR}/`basename $$i` $$i | tee -a $@; \
    1817        done
    1918
    20 clean:
    21         rm -rf $(OUTPUTDIR)
     19clean :
     20        rm -rf ${OUTPUTDIR}
  • src/Tests/ResolvExpr/run-tests.sh

    • Property mode changed from 100644 to 100755
  • src/Tests/SynTree/Expected-SymTab/Array.tst

    rcd623a4 r5f2f2d7  
    55Adding object m2
    66Adding object m4
    7 Adding typedef T
    8 --- Entering scope
    9 --- Leaving scope containing
    107Adding function fred
    118--- Entering scope
     
    1613Adding object T
    1714--- Leaving scope containing
    18 T (__T__A0i) (2)
    19 a1 (__a1__A0i) (2)
    20 a2 (__a2__A0i) (2)
    21 a4 (__a4__A0i) (2)
    2215--- Leaving scope containing
    2316Adding function mary
     
    3023--- Leaving scope containing
    3124--- Leaving scope containing
    32 T (__T__Pi) (1)
    33 p1 (__p1__CPi) (1)
    34 p2 (__p2__Pi) (1)
    35 p3 (__p3__CPi) (1)
    3625Adding function tom
    3726--- Entering scope
     
    4837--- Leaving scope containing
    4938--- Leaving scope containing
    50 T (__T__Pi) (1)
    51 p1 (__p1__CPi) (1)
    52 p2 (__p2__Pi) (1)
    53 p3 (__p3__CPi) (1)
  • src/Tests/SynTree/Expected-SymTab/Context.tst

    rcd623a4 r5f2f2d7  
    1 Adding context has_q
    21--- Entering scope
    3 Adding type T
    42--- Entering scope
    53--- Leaving scope containing
     4Adding type T
    65Adding function q
    76--- Entering scope
    87--- Leaving scope containing
    98--- Leaving scope containing
    10 q (__q__F_2tT_2tT_) (1)
    119T
     10Adding context has_q
    1211Adding function f
    1312--- Entering scope
    14 Adding type z
    1513--- Entering scope
    1614--- Leaving scope containing
    17 Adding function q
     15Adding type z
     16Adding function ?=?
    1817--- Entering scope
    1918--- Leaving scope containing
    2019--- Entering scope
    21 Adding context has_r
    2220--- Entering scope
     21--- Entering scope
     22--- Leaving scope containing
    2323Adding type T
    2424--- Entering scope
    2525--- Leaving scope containing
    2626Adding type U
    27 --- Entering scope
    28 --- Leaving scope containing
    2927Adding function r
    3028--- Entering scope
    3129--- Leaving scope containing
    3230--- Leaving scope containing
    33 r (__r__F_2tT_2tTPF_2tT_2tT2tU__) (3)
    3431T
    3532U
     33Adding context has_r
     34--- Entering scope
     35--- Leaving scope containing
    3636Adding type x
    3737--- Entering scope
    3838--- Leaving scope containing
    3939Adding type y
    40 --- Entering scope
    4140--- Leaving scope containing
    42 Adding function r
    43 --- Entering scope
    44 --- Leaving scope containing
    45 --- Leaving scope containing
    46 r (__r__F_2tx_2txPF_2tx_2tx2ty__) (2)
    4741x
    4842y
    4943has_r
    5044--- Leaving scope containing
    51 q (__q__F_2tz_2tz_) (1)
    5245z
  • src/Tests/SynTree/Expected-SymTab/Enum.tst

    rcd623a4 r5f2f2d7  
    1717Adding object fruit
    1818--- Leaving scope containing
    19 Apple (__Apple__C7eFruits) (2)
    20 Banana (__Banana__C7eFruits) (2)
    21 Mango (__Mango__C7eFruits) (2)
    22 Pear (__Pear__C7eFruits) (2)
    23 fruit (__fruit__7eFruits) (2)
    2419Fruits
    2520--- Leaving scope containing
  • src/Tests/SynTree/Expected-SymTab/Forall.tst

    rcd623a4 r5f2f2d7  
    1 in default case, (shouldn't be here)
    2 in default case, (shouldn't be here)
    3 Adding typedef f
     1Adding function swap
    42--- Entering scope
    5 Adding type T
    63--- Entering scope
    74--- Leaving scope containing
    8 --- Leaving scope containing
    9 T
    10 Adding function swap
    11 --- Entering scope
    125Adding type T
     6Adding function ?=?
    137--- Entering scope
    148--- Leaving scope containing
     
    1812Adding object temp
    1913--- Leaving scope containing
    20 temp (__temp__2tT) (2)
    2114--- Leaving scope containing
    22 left (__left__2tT) (1)
    23 right (__right__2tT) (1)
    2415T
    25 Adding context sumable
    2616--- Entering scope
    27 Adding type T
    2817--- Entering scope
    2918--- Leaving scope containing
     19Adding type T
    3020Adding object 0
    3121Adding function ?+?
     
    3929--- Leaving scope containing
    4030--- Leaving scope containing
    41 0 (__0__C2tT) (1)
    42 ?++ (__?++__F_2tT_2tT_) (1)
    43 ?+=? (__?+=?__F_2tT_2tT2tT_) (1)
    44 ?+? (__?+?__F_2tT_2tT2tT_) (1)
    4531T
    46 Adding type T1
     32Adding context sumable
    4733--- Entering scope
    4834--- Leaving scope containing
     35Adding type T1
    4936Adding object 0
    5037Adding function ?+?
     
    5744--- Entering scope
    5845--- Leaving scope containing
     46--- Entering scope
     47--- Entering scope
     48--- Leaving scope containing
     49Adding type P1
     50--- Entering scope
     51--- Leaving scope containing
     52Adding type P2
     53--- Leaving scope containing
     54P1
     55P2
    5956Adding type T2
    6057--- Entering scope
     58--- Leaving scope containing
     59Adding type T3
     60Adding fwd decl for struct __anonymous0
     61--- Entering scope
     62Adding object i
     63Adding object j
     64--- Leaving scope containing
     65Adding struct __anonymous0
     66--- Entering scope
     67--- Entering scope
     68--- Leaving scope containing
    6169Adding type P1
    6270--- Entering scope
     
    6876P1
    6977P2
    70 Adding type T3
     78Adding type T2
     79Adding object w1
     80Adding object g2
    7181--- Entering scope
    7282--- Leaving scope containing
    73 Adding object 0
    74 Adding function ?+?
    75 --- Entering scope
    76 --- Leaving scope containing
    77 Adding function ?++
    78 --- Entering scope
    79 --- Leaving scope containing
    80 Adding function ?+=?
    81 --- Entering scope
    82 --- Leaving scope containing
    83 Adding struct __anonymous0
    84 --- Entering scope
    85 Adding object i
    86 Adding object j
    87 --- Leaving scope containing
    88 i (__i__3tP1) (1)
    89 j (__j__3tP2) (1)
    90 Adding type T2
    91 --- Entering scope
    92 Adding type P1
    93 --- Entering scope
    94 --- Leaving scope containing
    95 Adding type P2
    96 --- Entering scope
    97 --- Leaving scope containing
    98 --- Leaving scope containing
    99 P1
    100 P2
    101 Adding object 0
    102 Adding function ?+?
    103 --- Entering scope
    104 --- Leaving scope containing
    105 Adding function ?++
    106 --- Entering scope
    107 --- Leaving scope containing
    108 Adding function ?+=?
    109 --- Entering scope
    110 --- Leaving scope containing
    111 Adding object w1
    112 Adding typedef w2
    113 --- Entering scope
    114 --- Leaving scope containing
    115 Adding object g2
    11683Adding type w3
    117 --- Entering scope
    118 --- Leaving scope containing
    11984Adding object g3
    12085Adding function sum
    12186--- Entering scope
    122 Adding type T
    12387--- Entering scope
    12488--- Leaving scope containing
    125 Adding object 0
    126 Adding function ?+?
    127 --- Entering scope
    128 --- Leaving scope containing
    129 Adding function ?++
    130 --- Entering scope
    131 --- Leaving scope containing
    132 Adding function ?+=?
     89Adding type T
     90Adding function ?=?
    13391--- Entering scope
    13492--- Leaving scope containing
     
    13896Adding object total
    13997Adding object i
     98--- Entering scope
    14099--- Leaving scope containing
    141 i (__i__i) (2)
    142 total (__total__2tT) (2)
    143100--- Leaving scope containing
    144 0 (__0__2tT) (1)
    145 ?++ (__?++__F_2tT_2tT_) (1)
    146 ?+=? (__?+=?__F_2tT_2tT2tT_) (1)
    147 ?+? (__?+?__F_2tT_2tT2tT_) (1)
    148 a (__a__P2tT) (1)
    149 n (__n__i) (1)
     101--- Leaving scope containing
    150102T
    151103Adding function twice
    152104--- Entering scope
     105--- Entering scope
     106--- Leaving scope containing
    153107Adding type T
     108Adding function ?=?
    154109--- Entering scope
    155110--- Leaving scope containing
     
    168123--- Leaving scope containing
    169124--- Leaving scope containing
    170 0 (__0__C2tT) (1)
    171 ?++ (__?++__F_2tT_2tT_) (1)
    172 ?+=? (__?+=?__F_2tT_2tT2tT_) (1)
    173 ?+? (__?+?__F_2tT_2tT2tT_) (1)
    174 t (__t__2tT) (1)
    175125T
    176126Adding function main
     
    182132Adding object f
    183133--- Leaving scope containing
    184 a (__a__A0i) (2)
    185 f (__f__f) (2)
    186 x (__x__i) (2)
    187 y (__y__i) (2)
    188134--- Leaving scope containing
  • src/Tests/SynTree/Expected-SymTab/Scope.tst

    rcd623a4 r5f2f2d7  
    1 in default case, (shouldn't be here)
    2 in default case, (shouldn't be here)
    3 in default case, (shouldn't be here)
    41Adding object x
    5 Adding typedef y
    6 --- Entering scope
    7 --- Leaving scope containing
    8 Adding typedef t
    9 --- Entering scope
    10 --- Leaving scope containing
    112Adding object z
    12 Adding struct __anonymous0
     3Adding fwd decl for struct __anonymous0
    134--- Entering scope
    145Adding object a
    156Adding object b
    167--- Leaving scope containing
    17 a (__a__i) (1)
    18 b (__b__d) (1)
    19 Adding type u
     8Adding struct __anonymous0
     9--- Entering scope
    2010--- Entering scope
    2111--- Leaving scope containing
     12--- Leaving scope containing
     13Adding type u
    2214Adding function f
    2315--- Entering scope
    2416Adding object y
    2517--- Leaving scope containing
    26 y (__y__i) (1)
    2718Adding object q
    2819Adding function w
     
    3122Adding object v
    3223--- Entering scope
    33 Adding type x
    3424--- Entering scope
    3525--- Leaving scope containing
     26Adding type x
    3627Adding function t
    3728--- Entering scope
     
    4031Adding object z
    4132--- Leaving scope containing
    42 t (__t__F_2tx_2tu_) (2)
    43 u (__u__2tu) (2)
    44 z (__z__2tx) (2)
    4533x
    4634--- Leaving scope containing
    47 v (__v__2tu) (1)
    48 y (__y__2ty) (1)
    4935Adding object p
    50 Adding context has_u
    5136--- Entering scope
    52 Adding type z
    5337--- Entering scope
    5438--- Leaving scope containing
     39Adding type z
    5540Adding function u
    5641--- Entering scope
    5742--- Leaving scope containing
    5843--- Leaving scope containing
    59 u (__u__F_2tz_2tz_) (1)
    6044z
     45Adding context has_u
    6146Adding function q
    6247--- Entering scope
    63 Adding type t
    6448--- Entering scope
    6549--- Leaving scope containing
    66 Adding function u
     50Adding type t
     51Adding function ?=?
    6752--- Entering scope
    6853--- Leaving scope containing
     
    7156Adding object y
    7257--- Leaving scope containing
    73 y (__y__2tt) (2)
    7458--- Leaving scope containing
    75 the_t (__the_t__2tt) (1)
    76 u (__u__F_2tt_2tt_) (1)
    7759t
    7860Adding function f
     
    8163--- Entering scope
    8264Adding object y
    83 Adding typedef x
     65--- Entering scope
     66Adding object y
     67--- Entering scope
     68Adding object x
     69Adding object z
     70--- Leaving scope containing
     71Adding object x
     72--- Leaving scope containing
     73Adding object q
     74--- Leaving scope containing
     75--- Leaving scope containing
     76Adding function g
     77--- Entering scope
     78--- Entering scope
    8479--- Entering scope
    8580--- Leaving scope containing
     81Adding object x
    8682--- Entering scope
    8783Adding object y
    88 Adding typedef z
    89 --- Entering scope
    90 --- Leaving scope containing
    91 --- Entering scope
    92 Adding object x
    93 Adding typedef y
    94 --- Entering scope
    9584--- Leaving scope containing
    9685Adding object z
    9786--- Leaving scope containing
    98 x (__x__2tz) (4)
    99 z (__z__2ty) (4)
    100 y
    101 Adding object x
    102 --- Leaving scope containing
    103 x (__x__2tz) (3)
    104 y (__y__2tx) (3)
    105 z
    106 Adding object q
    107 --- Leaving scope containing
    108 q (__q__2tx) (2)
    109 y (__y__i) (2)
    110 x
    111 --- Leaving scope containing
    112 p (__p__2ty) (1)
    113 Adding function g
    114 --- Entering scope
    115 --- Entering scope
    116 Adding typedef x
    117 --- Entering scope
    118 --- Leaving scope containing
    119 Adding object z
    120 --- Leaving scope containing
    121 z (__z__2tx) (2)
    122 x
    12387--- Leaving scope containing
    12488Adding function q
     
    12892--- Leaving scope containing
    12993--- Leaving scope containing
    130 i (__i__i) (1)
  • src/Tests/SynTree/Expected-SymTab/ScopeErrors.tst

    rcd623a4 r5f2f2d7  
    88Adding object thisIsNotAnError
    99--- Leaving scope containing
    10 thisIsNotAnError (__thisIsNotAnError__i) (2)
    1110--- Leaving scope containing
    1211Adding function thisIsAlsoNotAnError
     
    1615--- Leaving scope containing
    1716--- Leaving scope containing
    18 x (__x__d) (1)
    1917Adding function thisIsStillNotAnError
    2018--- Entering scope
     
    2927--- Leaving scope containing
    3028Adding function butThisIsAnError
    31 Error: duplicate definition for thisIsAnError: a signed int
    32 Error: duplicate function definition for butThisIsAnError: a function
     29Error: duplicate function definition for butThisIsAnError: function
    3330  with parameters
    3431    double
     
    3633    double
    3734  with body
     35    CompoundStmt
    3836
  • src/Tests/SynTree/Expected-SymTab/Tuple.tst

    rcd623a4 r5f2f2d7  
    1212Adding object d
    1313--- Leaving scope containing
    14 a (__a__i) (1)
    15 b (__b__i) (1)
    16 c (__c__Pi) (1)
    17 d (__d__Pc) (1)
    18 Adding struct inner
     14Adding fwd decl for struct inner
    1915--- Entering scope
    2016Adding object f2
    2117Adding object f3
    2218--- Leaving scope containing
    23 f2 (__f2__i) (1)
    24 f3 (__f3__i) (1)
    25 Adding struct outer
     19Adding struct inner
     20Adding fwd decl for struct outer
    2621--- Entering scope
    2722Adding object f1
     23--- Entering scope
     24--- Leaving scope containing
    2825Adding object i
    2926Adding object f4
    3027--- Leaving scope containing
    31 f1 (__f1__i) (1)
    32 f4 (__f4__d) (1)
    33 i (__i__6sinner) (1)
     28Adding struct outer
     29--- Entering scope
     30--- Leaving scope containing
    3431Adding object s
     32--- Entering scope
     33--- Leaving scope containing
    3534Adding object sp
    3635Adding object t1
     
    4241Adding object fmt
    4342--- Leaving scope containing
    44 fmt (__fmt__Pc) (1)
    45 rc (__rc__i) (1)
    4643Adding function printf
    4744--- Entering scope
    4845Adding object fmt
    4946--- Leaving scope containing
    50 fmt (__fmt__Pc) (1)
    5147Adding function f1
    5248--- Entering scope
     
    5753--- Leaving scope containing
    5854--- Leaving scope containing
    59 w (__w__i) (1)
    60 x (__x__s) (1)
    61 y (__y__Ui) (1)
    6255Adding function g1
    6356--- Entering scope
     
    6962Adding object z
    7063--- Leaving scope containing
    71 p (__p__s) (2)
    72 x (__x__s) (2)
    73 y (__y__Ui) (2)
    74 z (__z__Tii_) (2)
    7564--- Leaving scope containing
    76 r (__r__Ticli_) (1)
    7765Adding function main
    7866--- Entering scope
     
    8573Adding object c
    8674Adding object d
     75--- Entering scope
     76--- Leaving scope containing
    8777Adding object t
    8878--- Leaving scope containing
    89 a (__a__i) (2)
    90 b (__b__i) (2)
    91 c (__c__i) (2)
    92 d (__d__i) (2)
    93 t (__t__6souter) (2)
    9479--- Leaving scope containing
    95 argc (__argc__i) (1)
    96 argv (__argv__PPc) (1)
    97 rc (__rc__i) (1)
  • src/Tests/SynTree/Expected/Array.tst

    rcd623a4 r5f2f2d7  
    1 a1: a open array of signed int
    2 a2: a variable length array of signed int
    3 a4: a array of   Constant Expression: 3signed int
    4 m1: a open array of array of   Constant Expression: 3signed int
    5 m2: a variable length array of variable length array of signed int
    6 m4: a array of   Constant Expression: 3array of   Constant Expression: 3signed int
    7 T: a typedef for signed int
    8 fred: a function
     1a1: open array of signed int
     2a2: variable length array of signed int
     3a4: array of double with dimension of constant expression 3.0 double
     4m1: open array of array of signed int with dimension of constant expression 3 signed int
     5m2: variable length array of variable length array of signed int
     6m4: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int
     7T: typedef for signed int
     8fred: function
     9      accepting unspecified arguments
    910    returning
    1011      signed int
    1112    with body
    12       Declaration of a1: a open array of signed int
    13       Declaration of a2: a variable length array of signed int
    14       Declaration of a4: a array of         Constant Expression: 3signed int
    15       Declaration of T: a array of         Constant Expression: 3signed int
     13      CompoundStmt
     14        Declaration of a1: open array of signed int
     15        Declaration of a2: variable length array of signed int
     16        Declaration of a4: array of signed int with dimension of constant expression 3 signed int
     17        Declaration of T: array of signed int with dimension of constant expression 3 signed int
    1618
    17 mary: a function
     19mary: function
    1820    with parameters
    19       T: a array of         Constant Expression: 3signed int
    20       p1: a const array of         Constant Expression: 3signed int
    21       p2: a static array of         Constant Expression: 3signed int
    22       p3: a const static array of         Constant Expression: 3signed int
     21      T: array of signed int with dimension of constant expression 3 signed int
     22      p1: const array of signed int with dimension of constant expression 3 signed int
     23      p2: static array of signed int with dimension of constant expression 3 signed int
     24      p3: const static array of signed int with dimension of constant expression 3 signed int
    2325    returning
    2426      signed int
    2527    with body
     28      CompoundStmt
    2629
    27       Null Statement
     30tom: function
     31      accepting unspecified arguments
     32    returning
     33      pointer to array of signed int with dimension of constant expression 3 signed int
     34    with body
     35      CompoundStmt
    2836
    29 tom: a function
    30     returning
    31       pointer to array of         Constant Expression: 3signed int
    32     with body
    33 
    34       Null Statement
    35 
    36 jane: a function
     37jane: function
     38      accepting unspecified arguments
    3739    returning
    3840      pointer to function
    3941          with parameters
    40             T: a array of               Constant Expression: 3signed int
    41             p1: a const array of               Constant Expression: 3signed int
    42             p2: a static array of               Constant Expression: 3signed int
    43             p3: a const static array of               Constant Expression: 3signed int
     42            T: array of signed int with dimension of constant expression 3 signed int
     43            p1: const array of signed int with dimension of constant expression 3 signed int
     44            p2: static array of signed int with dimension of constant expression 3 signed int
     45            p3: const static array of signed int with dimension of constant expression 3 signed int
    4446          returning
    4547            signed int
    4648
    4749    with body
     50      CompoundStmt
    4851
    49       Null Statement
    50 
  • src/Tests/SynTree/Expected/Constant0-1.tst

    rcd623a4 r5f2f2d7  
    1 0: a signed int
    2 0: a const signed int
    3 0: a static const signed int
    4 1: a signed int
    5 1: a const signed int
    6 1: a static const signed int
    7 0: a signed int
    8 1: a signed int
    9 0: a const signed int
    10 1: a const signed int
    11 0: a static const signed int
    12 1: a static const signed int
     10: signed int
     20: const signed int
     30: static const signed int
     41: signed int
     51: const signed int
     61: static const signed int
     70: signed int
     81: signed int
     90: const signed int
     101: const signed int
     110: static const signed int
     121: static const signed int
    1313struct __anonymous0
    1414    with members
    15       i: a signed int
     15      i: signed int
    1616
    17 0: a instance of struct __anonymous0
     170: instance of struct __anonymous0
    1818struct __anonymous1
    1919    with members
    20       i: a signed int
     20      i: signed int
    2121
    22 1: a const instance of struct __anonymous1
     221: const instance of struct __anonymous1
    2323struct __anonymous2
    2424    with members
    25       i: a signed int
     25      i: signed int
    2626
    27 1: a static const instance of struct __anonymous2
    28 1: a signed int
    29 0: a pointer to signed int
    30 1: a signed int
    31 1: a signed int
    32 0: a pointer to signed int
    33 0: a pointer to signed int
    34 0: a pointer to signed int
    35 0: a const pointer to signed int
    36 0: a const pointer to signed int
    37 0: a const pointer to signed int
     271: static const instance of struct __anonymous2
     281: signed int
     290: pointer to signed int
     301: signed int
     311: signed int
     320: pointer to signed int
     330: pointer to signed int
     340: pointer to signed int
     350: const pointer to signed int
     360: const pointer to signed int
     370: const pointer to signed int
    3838struct __anonymous3
    3939    with members
    40       i: a signed int
     40      i: signed int
    4141
    42 0: a pointer to instance of struct __anonymous3
    43 x: a pointer to signed int
    44 0: a pointer to signed int
    45 x: a const pointer to signed int
    46 0: a const pointer to signed int
    47 x: a static const pointer to signed int
    48 0: a static const pointer to signed int
     420: pointer to instance of struct __anonymous3
     43x: pointer to signed int
     440: pointer to signed int
     45x: const pointer to signed int
     460: const pointer to signed int
     47x: static const pointer to signed int
     480: static const pointer to signed int
    4949struct __anonymous4
    5050    with members
    51       i: a signed int
     51      i: signed int
    5252
    53 0: a pointer to instance of struct __anonymous4
     530: pointer to instance of struct __anonymous4
    5454struct __anonymous5
    5555    with members
    56       i: a signed int
     56      i: signed int
    5757
    58 0: a const pointer to instance of struct __anonymous5
     580: const pointer to instance of struct __anonymous5
    5959struct __anonymous6
    6060    with members
    61       i: a signed int
     61      i: signed int
    6262
    63 0: a static const pointer to instance of struct __anonymous6
    64 x: a static pointer to signed int
    65 0: a static pointer to signed int
    66 x: a static const pointer to signed int
    67 0: a static const pointer to signed int
    68 x: a const pointer to pointer to signed int
    69 0: a const pointer to pointer to signed int
     630: static const pointer to instance of struct __anonymous6
     64x: static pointer to signed int
     650: static pointer to signed int
     66x: static const pointer to signed int
     670: static const pointer to signed int
     68x: const pointer to pointer to signed int
     690: const pointer to pointer to signed int
  • src/Tests/SynTree/Expected/Context.tst

    rcd623a4 r5f2f2d7  
    11context has_q
    22    with parameters
    3       T: a type
     3      T: type
    44
    55    with members
    6       q: a function
     6      q: function
    77          with parameters
    8             instance of type T
     8            instance of type T (not function type)
    99          returning
    10             instance of type T
     10            instance of type T (not function type)
    1111
    1212
    13 f: a function
    14     with forall
    15       z: a type
     13f: forall
     14      z: type
    1615        with assertions
     16          ?=?: function
     17              with parameters
     18                pointer to instance of type z (not function type)
     19                instance of type z (not function type)
     20              returning
     21                instance of type z (not function type)
     22
    1723          instance of context has_q
    1824            with parameters
    19               instance of type z
     25              instance of type z (not function type)
    2026
    2127
     28    function
     29      accepting unspecified arguments
    2230    returning
    2331      void
    2432    with body
    25       Declaration of context has_r
    26           with parameters
    27             T: a type
    28             U: a type
     33      CompoundStmt
     34        Declaration of context has_r
     35            with parameters
     36              T: type
     37              U: type
    2938
    30           with members
    31             r: a function
    32                 with parameters
    33                   instance of type T
    34                   function
    35                       with parameters
    36                         instance of type T
    37                         instance of type U
    38                       returning
    39                         instance of type T
     39            with members
     40              r: function
     41                  with parameters
     42                    instance of type T (not function type)
     43                    function
     44                        with parameters
     45                          instance of type T (not function type)
     46                          instance of type U (not function type)
     47                        returning
     48                          instance of type T (not function type)
    4049
    41                 returning
    42                   instance of type T
     50                  returning
     51                    instance of type T (not function type)
    4352
    4453
    45       Declaration of x: a extern type
    46       Declaration of y: a extern type
    47         with assertions
    48           instance of context has_r
    49             with parameters
    50               instance of type x
    51               instance of type y
     54        Declaration of x: auto type
     55        Declaration of y: auto type
     56          with assertions
     57            instance of context has_r
     58              with parameters
     59                instance of type x (not function type)
     60                instance of type y (not function type)
    5261
    5362
  • src/Tests/SynTree/Expected/DeclarationSpecifier.tst

    rcd623a4 r5f2f2d7  
    1 Int: a typedef for short signed int
    2 x1: a const volatile short signed int
    3 x2: a static const volatile short signed int
    4 x3: a static const volatile short signed int
    5 x4: a static const volatile short signed int
    6 x4: a static const volatile short signed int
    7 x5: a static const volatile short signed int
    8 x6: a static const volatile short signed int
    9 x7: a static const volatile short signed int
    10 x8: a static const volatile short signed int
     1Int: typedef for short signed int
     2x1: const volatile short signed int
     3x2: static const volatile short signed int
     4x3: static const volatile short signed int
     5x4: static const volatile short signed int
     6x4: static const volatile short signed int
     7x5: static const volatile short signed int
     8x6: static const volatile short signed int
     9x7: static const volatile short signed int
     10x8: static const volatile short signed int
    1111struct __anonymous0
    1212    with members
    13       i: a signed int
    14 
    15 x10: a const volatile instance of struct __anonymous0
     13      i: signed int
     14
     15x10: const volatile instance of struct __anonymous0
    1616struct __anonymous1
    1717    with members
    18       i: a signed int
    19 
    20 x11: a const volatile instance of struct __anonymous1
     18      i: signed int
     19
     20x11: const volatile instance of struct __anonymous1
    2121struct __anonymous2
    2222    with members
    23       i: a signed int
    24 
    25 x12: a const volatile instance of struct __anonymous2
     23      i: signed int
     24
     25x12: const volatile instance of struct __anonymous2
    2626struct __anonymous3
    2727    with members
    28       i: a signed int
    29 
    30 x13: a static const volatile instance of struct __anonymous3
     28      i: signed int
     29
     30x13: static const volatile instance of struct __anonymous3
    3131struct __anonymous4
    3232    with members
    33       i: a signed int
    34 
    35 x14: a static const volatile instance of struct __anonymous4
     33      i: signed int
     34
     35x14: static const volatile instance of struct __anonymous4
    3636struct __anonymous5
    3737    with members
    38       i: a signed int
    39 
    40 x15: a static const volatile instance of struct __anonymous5
     38      i: signed int
     39
     40x15: static const volatile instance of struct __anonymous5
    4141struct __anonymous6
    4242    with members
    43       i: a signed int
    44 
    45 x16: a static const volatile instance of struct __anonymous6
     43      i: signed int
     44
     45x16: static const volatile instance of struct __anonymous6
    4646struct __anonymous7
    4747    with members
    48       i: a signed int
    49 
    50 x17: a static const volatile instance of struct __anonymous7
    51 x20: a const volatile instance of type Int
    52 x21: a static const volatile instance of type Int
    53 x22: a static const volatile instance of type Int
    54 x23: a static const volatile instance of type Int
    55 x24: a static const volatile instance of type Int
    56 x25: a static const volatile instance of type Int
    57 x26: a static const volatile instance of type Int
    58 x27: a static const volatile instance of type Int
     48      i: signed int
     49
     50x17: static const volatile instance of struct __anonymous7
     51x20: const volatile instance of type Int (not function type)
     52x21: static const volatile instance of type Int (not function type)
     53x22: static const volatile instance of type Int (not function type)
     54x23: static const volatile instance of type Int (not function type)
     55x24: static const volatile instance of type Int (not function type)
     56x25: static const volatile instance of type Int (not function type)
     57x26: static const volatile instance of type Int (not function type)
     58x27: static const volatile instance of type Int (not function type)
    5959struct __anonymous8
    6060    with members
    61       i: a instance of type Int
    62 
    63 x29: a const volatile instance of struct __anonymous8
     61      i: instance of type Int (not function type)
     62
     63x29: const volatile instance of struct __anonymous8
    6464struct __anonymous9
    6565    with members
    66       i: a instance of type Int
    67 
    68 x30: a const volatile instance of struct __anonymous9
     66      i: instance of type Int (not function type)
     67
     68x30: const volatile instance of struct __anonymous9
    6969struct __anonymous10
    7070    with members
    71       i: a instance of type Int
    72 
    73 x31: a const volatile instance of struct __anonymous10
     71      i: instance of type Int (not function type)
     72
     73x31: const volatile instance of struct __anonymous10
    7474struct __anonymous11
    7575    with members
    76       i: a instance of type Int
    77 
    78 x32: a static const volatile instance of struct __anonymous11
     76      i: instance of type Int (not function type)
     77
     78x32: static const volatile instance of struct __anonymous11
    7979struct __anonymous12
    8080    with members
    81       i: a instance of type Int
    82 
    83 x33: a static const volatile instance of struct __anonymous12
     81      i: instance of type Int (not function type)
     82
     83x33: static const volatile instance of struct __anonymous12
    8484struct __anonymous13
    8585    with members
    86       i: a instance of type Int
    87 
    88 x34: a static const volatile instance of struct __anonymous13
     86      i: instance of type Int (not function type)
     87
     88x34: static const volatile instance of struct __anonymous13
    8989struct __anonymous14
    9090    with members
    91       i: a instance of type Int
    92 
    93 x35: a static const volatile instance of struct __anonymous14
     91      i: instance of type Int (not function type)
     92
     93x35: static const volatile instance of struct __anonymous14
    9494struct __anonymous15
    9595    with members
    96       i: a instance of type Int
    97 
    98 x36: a static const volatile instance of struct __anonymous15
    99 f01: a inline static function
    100     returning
    101       const volatile signed int
    102 
    103 f02: a inline static function
    104     returning
    105       const volatile signed int
    106 
    107 f03: a inline static function
    108     returning
    109       const volatile signed int
    110 
    111 f04: a inline static function
    112     returning
    113       const volatile signed int
    114 
    115 f05: a inline static function
    116     returning
    117       const volatile signed int
    118 
    119 f06: a inline static function
    120     returning
    121       const volatile signed int
    122 
    123 f07: a inline static function
    124     returning
    125       const volatile signed int
    126 
    127 f08: a inline static function
    128     returning
    129       const volatile signed int
    130 
    131 f11: a inline static function
    132     returning
    133       const volatile signed int
    134 
    135 f12: a inline static function
    136     returning
    137       const volatile signed int
    138 
    139 f13: a inline static function
    140     returning
    141       const volatile signed int
    142 
    143 f14: a inline static function
    144     returning
    145       const volatile signed int
    146 
    147 f15: a inline static function
    148     returning
    149       const volatile signed int
    150 
    151 f16: a inline static function
    152     returning
    153       const volatile signed int
    154 
    155 f17: a inline static function
    156     returning
    157       const volatile signed int
    158 
    159 f18: a inline static function
    160     returning
    161       const volatile signed int
    162 
    163 f21: a inline static function
    164     returning
    165       const volatile short signed int
    166 
    167 f22: a inline static function
    168     returning
    169       const volatile short signed int
    170 
    171 f23: a inline static function
    172     returning
    173       const volatile short signed int
    174 
    175 f24: a inline static function
    176     returning
    177       const volatile short signed int
    178 
    179 f25: a inline static function
    180     returning
    181       const volatile short signed int
    182 
    183 f26: a inline static function
    184     returning
    185       const volatile short signed int
    186 
    187 f27: a inline static function
    188     returning
    189       const volatile short signed int
    190 
    191 f28: a inline static function
     96      i: instance of type Int (not function type)
     97
     98x36: static const volatile instance of struct __anonymous15
     99f01: inline static function
     100      accepting unspecified arguments
     101    returning
     102      const volatile signed int
     103
     104f02: inline static function
     105      accepting unspecified arguments
     106    returning
     107      const volatile signed int
     108
     109f03: inline static function
     110      accepting unspecified arguments
     111    returning
     112      const volatile signed int
     113
     114f04: inline static function
     115      accepting unspecified arguments
     116    returning
     117      const volatile signed int
     118
     119f05: inline static function
     120      accepting unspecified arguments
     121    returning
     122      const volatile signed int
     123
     124f06: inline static function
     125      accepting unspecified arguments
     126    returning
     127      const volatile signed int
     128
     129f07: inline static function
     130      accepting unspecified arguments
     131    returning
     132      const volatile signed int
     133
     134f08: inline static function
     135      accepting unspecified arguments
     136    returning
     137      const volatile signed int
     138
     139f11: inline static function
     140      accepting unspecified arguments
     141    returning
     142      const volatile signed int
     143
     144f12: inline static function
     145      accepting unspecified arguments
     146    returning
     147      const volatile signed int
     148
     149f13: inline static function
     150      accepting unspecified arguments
     151    returning
     152      const volatile signed int
     153
     154f14: inline static function
     155      accepting unspecified arguments
     156    returning
     157      const volatile signed int
     158
     159f15: inline static function
     160      accepting unspecified arguments
     161    returning
     162      const volatile signed int
     163
     164f16: inline static function
     165      accepting unspecified arguments
     166    returning
     167      const volatile signed int
     168
     169f17: inline static function
     170      accepting unspecified arguments
     171    returning
     172      const volatile signed int
     173
     174f18: inline static function
     175      accepting unspecified arguments
     176    returning
     177      const volatile signed int
     178
     179f21: inline static function
     180      accepting unspecified arguments
     181    returning
     182      const volatile short signed int
     183
     184f22: inline static function
     185      accepting unspecified arguments
     186    returning
     187      const volatile short signed int
     188
     189f23: inline static function
     190      accepting unspecified arguments
     191    returning
     192      const volatile short signed int
     193
     194f24: inline static function
     195      accepting unspecified arguments
     196    returning
     197      const volatile short signed int
     198
     199f25: inline static function
     200      accepting unspecified arguments
     201    returning
     202      const volatile short signed int
     203
     204f26: inline static function
     205      accepting unspecified arguments
     206    returning
     207      const volatile short signed int
     208
     209f27: inline static function
     210      accepting unspecified arguments
     211    returning
     212      const volatile short signed int
     213
     214f28: inline static function
     215      accepting unspecified arguments
    192216    returning
    193217      const volatile short signed int
     
    195219struct __anonymous16
    196220    with members
    197       i: a signed int
    198 
    199 f31: a inline static function
     221      i: signed int
     222
     223f31: inline static function
     224      accepting unspecified arguments
    200225    returning
    201226      const volatile instance of struct __anonymous16
     
    203228struct __anonymous17
    204229    with members
    205       i: a signed int
    206 
    207 f32: a inline static function
     230      i: signed int
     231
     232f32: inline static function
     233      accepting unspecified arguments
    208234    returning
    209235      const volatile instance of struct __anonymous17
     
    211237struct __anonymous18
    212238    with members
    213       i: a signed int
    214 
    215 f33: a inline static function
     239      i: signed int
     240
     241f33: inline static function
     242      accepting unspecified arguments
    216243    returning
    217244      const volatile instance of struct __anonymous18
     
    219246struct __anonymous19
    220247    with members
    221       i: a signed int
    222 
    223 f34: a inline static function
     248      i: signed int
     249
     250f34: inline static function
     251      accepting unspecified arguments
    224252    returning
    225253      const volatile instance of struct __anonymous19
     
    227255struct __anonymous20
    228256    with members
    229       i: a signed int
    230 
    231 f35: a inline static function
     257      i: signed int
     258
     259f35: inline static function
     260      accepting unspecified arguments
    232261    returning
    233262      const volatile instance of struct __anonymous20
     
    235264struct __anonymous21
    236265    with members
    237       i: a signed int
    238 
    239 f36: a inline static function
     266      i: signed int
     267
     268f36: inline static function
     269      accepting unspecified arguments
    240270    returning
    241271      const volatile instance of struct __anonymous21
     
    243273struct __anonymous22
    244274    with members
    245       i: a signed int
    246 
    247 f37: a inline static function
     275      i: signed int
     276
     277f37: inline static function
     278      accepting unspecified arguments
    248279    returning
    249280      const volatile instance of struct __anonymous22
     
    251282struct __anonymous23
    252283    with members
    253       i: a signed int
    254 
    255 f38: a inline static function
     284      i: signed int
     285
     286f38: inline static function
     287      accepting unspecified arguments
    256288    returning
    257289      const volatile instance of struct __anonymous23
    258290
    259 f41: a inline static function
    260     returning
    261       const volatile instance of type Int
    262 
    263 f42: a inline static function
    264     returning
    265       const volatile instance of type Int
    266 
    267 f43: a inline static function
    268     returning
    269       const volatile instance of type Int
    270 
    271 f44: a inline static function
    272     returning
    273       const volatile instance of type Int
    274 
    275 f45: a inline static function
    276     returning
    277       const volatile instance of type Int
    278 
    279 f46: a inline static function
    280     returning
    281       const volatile instance of type Int
    282 
    283 f47: a inline static function
    284     returning
    285       const volatile instance of type Int
    286 
    287 f48: a inline static function
    288     returning
    289       const volatile instance of type Int
    290 
     291f41: inline static function
     292      accepting unspecified arguments
     293    returning
     294      const volatile instance of type Int (not function type)
     295
     296f42: inline static function
     297      accepting unspecified arguments
     298    returning
     299      const volatile instance of type Int (not function type)
     300
     301f43: inline static function
     302      accepting unspecified arguments
     303    returning
     304      const volatile instance of type Int (not function type)
     305
     306f44: inline static function
     307      accepting unspecified arguments
     308    returning
     309      const volatile instance of type Int (not function type)
     310
     311f45: inline static function
     312      accepting unspecified arguments
     313    returning
     314      const volatile instance of type Int (not function type)
     315
     316f46: inline static function
     317      accepting unspecified arguments
     318    returning
     319      const volatile instance of type Int (not function type)
     320
     321f47: inline static function
     322      accepting unspecified arguments
     323    returning
     324      const volatile instance of type Int (not function type)
     325
     326f48: inline static function
     327      accepting unspecified arguments
     328    returning
     329      const volatile instance of type Int (not function type)
     330
  • src/Tests/SynTree/Expected/Enum.tst

    rcd623a4 r5f2f2d7  
    11enum Colors
    22    with members
    3       Red: a untyped entity
    4       Yellow: a untyped entity
    5       Pink: a untyped entity
    6       Blue: a untyped entity
    7       Purple: a untyped entity
    8       Orange: a untyped entity
    9       Green: a untyped entity
     3      Red: untyped entity
     4      Yellow: untyped entity
     5      Pink: untyped entity
     6      Blue: untyped entity
     7      Purple: untyped entity
     8      Orange: untyped entity
     9      Green: untyped entity
    1010
    11 f: a function
     11f: function
    1212    with parameters
    1313      void
     
    1515      void
    1616    with body
    17       Declaration of enum Fruits
    18           with members
    19             Apple: a untyped entity
    20             Banana: a untyped entity
    21             Pear: a untyped entity
    22             Mango: a untyped entity
     17      CompoundStmt
     18        Declaration of enum Fruits
     19            with members
     20              Apple: untyped entity
     21              Banana: untyped entity
     22              Pear: untyped entity
     23              Mango: untyped entity
    2324
    24       Declaration of fruit: a instance of enum Fruits
     25        Declaration of fruit: instance of enum Fruits with initializer
     26          Simple Initializer:             Name: Mango
    2527
     28
  • src/Tests/SynTree/Expected/Forall.tst

    rcd623a4 r5f2f2d7  
    1 in default case, (shouldn't be here)
    2 in default case, (shouldn't be here)
    3 f: a typedef for pointer to function
     1f: typedef for pointer to forall
     2      T: type
     3        with assertions
     4          ?=?: function
     5              with parameters
     6                pointer to instance of type T (not function type)
     7                instance of type T (not function type)
     8              returning
     9                instance of type T (not function type)
     10
     11
     12    function
    413    with parameters
    514      signed int
    6     with forall
    7       T: a type
    815    returning
    916      signed int
    1017
    11 swap: a function
    12     with parameters
    13       left: a instance of type T
    14       right: a instance of type T
    15     with forall
    16       T: a type
     18swap: forall
     19      T: type
     20        with assertions
     21          ?=?: function
     22              with parameters
     23                pointer to instance of type T (not function type)
     24                instance of type T (not function type)
     25              returning
     26                instance of type T (not function type)
     27
     28
     29    function
     30    with parameters
     31      left: instance of type T (not function type)
     32      right: instance of type T (not function type)
    1733    returning
    1834      void
    1935    with body
    20       Declaration of temp: a instance of type T
    21      
    22         Expression Statement:
    23           Applying untyped:
    24               Name: ?=?
    25  to:
    26               Name: left
    27               Name: right
    28 
    29      
    30         Expression Statement:
    31           Applying untyped:
    32               Name: ?=?
    33  to:
    34               Name: right
    35               Name: temp
     36      CompoundStmt
     37        Declaration of temp: instance of type T (not function type) with initializer
     38          Simple Initializer:             Name: left
     39
     40                  Expression Statement:
     41            Applying untyped:
     42                Name: ?=?
     43            ...to:
     44                Address of:
     45                  Name: left
     46                Name: right
     47
     48                  Expression Statement:
     49            Applying untyped:
     50                Name: ?=?
     51            ...to:
     52                Address of:
     53                  Name: right
     54                Name: temp
    3655
    3756
    3857context sumable
    3958    with parameters
    40       T: a type
     59      T: type
    4160
    4261    with members
    43       0: a const instance of type T
    44       ?+?: a function
     62      0: const instance of type T (not function type)
     63      ?+?: function
    4564          with parameters
    46             instance of type T
    47             instance of type T
     65            instance of type T (not function type)
     66            instance of type T (not function type)
    4867          returning
    49             instance of type T
    50 
    51       ?++: a function
     68            instance of type T (not function type)
     69
     70      ?++: function
    5271          with parameters
    53             instance of type T
     72            instance of type T (not function type)
    5473          returning
    55             instance of type T
    56 
    57       ?+=?: a function
     74            instance of type T (not function type)
     75
     76      ?+=?: function
    5877          with parameters
    59             instance of type T
    60             instance of type T
     78            instance of type T (not function type)
     79            instance of type T (not function type)
    6180          returning
    62             instance of type T
    63 
    64 
    65 T1: a type
     81            instance of type T (not function type)
     82
     83
     84T1: type
    6685  with assertions
    67     0: a const instance of type T1
    68     ?+?: a function
     86    0: const instance of type T1 (not function type)
     87    ?+?: function
    6988        with parameters
    70           instance of type T1
    71           instance of type T1
     89          instance of type T1 (not function type)
     90          instance of type T1 (not function type)
    7291        returning
    73           instance of type T1
    74 
    75     ?++: a function
     92          instance of type T1 (not function type)
     93
     94    ?++: function
    7695        with parameters
    77           instance of type T1
     96          instance of type T1 (not function type)
    7897        returning
    79           instance of type T1
    80 
    81     ?+=?: a function
     98          instance of type T1 (not function type)
     99
     100    ?+=?: function
    82101        with parameters
    83           instance of type T1
    84           instance of type T1
     102          instance of type T1 (not function type)
     103          instance of type T1 (not function type)
    85104        returning
    86           instance of type T1
    87 
    88 
    89 T2: a type
    90   with parameters
    91     P1: a type
    92     P2: a type
    93 
    94 T3: a type
     105          instance of type T1 (not function type)
     106
     107
     108T2: type
     109  with parameters
     110    P1: type
     111    P2: type
     112
     113T3: type
    95114  with assertions
    96115    instance of context sumable
    97116      with parameters
    98         instance of type T3
     117        instance of type T3 (not function type)
    99118
    100119
    101120struct __anonymous0
    102121    with members
    103       i: a instance of type P1
    104       j: a instance of type P2
    105 
    106 T2: a type for instance of struct __anonymous0
    107   with parameters
    108     P1: a type
    109     P2: a type
     122      i: instance of type P1 (not function type)
     123      j: instance of type P2 (not function type)
     124
     125T2: type for instance of struct __anonymous0
     126  with parameters
     127    P1: type
     128    P2: type
    110129
    111130  with assertions
    112131    instance of context sumable
    113132      with parameters
    114         instance of type T2
     133        instance of type T2 (not function type)
    115134          with parameters
    116             instance of type P1
    117             instance of type P2
    118 
    119 
    120 
    121 w1: a instance of type T2
    122   with parameters
    123     signed int
    124     signed int
    125 
    126 w2: a typedef for instance of type T2
    127   with parameters
    128     signed int
    129     signed int
    130 
    131 g2: a instance of type w2
    132 w3: a type for instance of type T2
    133   with parameters
    134     signed int
    135     signed int
    136 
    137 g3: a instance of type w3
    138 sum: a function
    139     with parameters
    140       n: a signed int
    141       a: a open array of instance of type T
    142     with forall
    143       T: a type
     135            instance of type P1 (not function type)
     136            instance of type P2 (not function type)
     137
     138
     139
     140w1: instance of type T2 (not function type)
     141  with parameters
     142    signed int
     143    signed int
     144
     145w2: typedef for instance of type T2 (not function type)
     146  with parameters
     147    signed int
     148    signed int
     149
     150g2: instance of type w2 (not function type)
     151w3: type for instance of type T2 (not function type)
     152  with parameters
     153    signed int
     154    signed int
     155
     156g3: instance of type w3 (not function type)
     157sum: forall
     158      T: type
    144159        with assertions
     160          ?=?: function
     161              with parameters
     162                pointer to instance of type T (not function type)
     163                instance of type T (not function type)
     164              returning
     165                instance of type T (not function type)
     166
    145167          instance of context sumable
    146168            with parameters
    147               instance of type T
    148 
    149 
    150     returning
    151       instance of type T
     169              instance of type T (not function type)
     170
     171
     172    function
     173    with parameters
     174      n: signed int
     175      a: open array of instance of type T (not function type)
     176    returning
     177      instance of type T (not function type)
    152178    with body
    153       Declaration of total: a instance of type T
    154       Declaration of i: a signed int
    155 
    156 twice: a function
    157     with parameters
    158       t: a instance of type T
    159     with forall
    160       T: a type
     179      CompoundStmt
     180        Declaration of total: instance of type T (not function type) with initializer
     181          Simple Initializer:             Name: 0
     182
     183        Declaration of i: signed int
     184                  Labels: {}
     185          For Statement
     186            initialization:
     187              Expression Statement:
     188                Applying untyped:
     189                    Name: ?=?
     190                ...to:
     191                    Address of:
     192                      Name: i
     193                    Name: 0
     194
     195            condition:
     196              Cast of:
     197                Applying untyped:
     198                    Name: ?!=?
     199                ...to:
     200                    Applying untyped:
     201                        Name: ?<?
     202                    ...to:
     203                        Name: i
     204                        Name: n
     205                    Name: 0
     206
     207              to:
     208                signed int
     209
     210            increment:
     211              Applying untyped:
     212                  Name: ?+=?
     213              ...to:
     214                  Address of:
     215                    Name: i
     216                  Name: 1
     217
     218            statement block:
     219              Expression Statement:
     220                Applying untyped:
     221                    Name: ?=?
     222                ...to:
     223                    Address of:
     224                      Name: total
     225                    Applying untyped:
     226                        Name: ?+?
     227                    ...to:
     228                        Name: total
     229                        Applying untyped:
     230                            Name: ?[?]
     231                        ...to:
     232                            Name: a
     233                            Name: i
     234
     235
     236                  Return Statement, returning: Name: total
     237
     238
     239
     240twice: forall
     241      T: type
    161242        with assertions
    162           0: a const instance of type T
    163           ?+?: a function
    164               with parameters
    165                 instance of type T
    166                 instance of type T
    167               returning
    168                 instance of type T
    169 
    170           ?++: a function
    171               with parameters
    172                 instance of type T
    173               returning
    174                 instance of type T
    175 
    176           ?+=?: a function
    177               with parameters
    178                 instance of type T
    179                 instance of type T
    180               returning
    181                 instance of type T
    182 
    183 
    184     returning
    185       instance of type T
     243          ?=?: function
     244              with parameters
     245                pointer to instance of type T (not function type)
     246                instance of type T (not function type)
     247              returning
     248                instance of type T (not function type)
     249
     250          0: const instance of type T (not function type)
     251          ?+?: function
     252              with parameters
     253                instance of type T (not function type)
     254                instance of type T (not function type)
     255              returning
     256                instance of type T (not function type)
     257
     258          ?++: function
     259              with parameters
     260                instance of type T (not function type)
     261              returning
     262                instance of type T (not function type)
     263
     264          ?+=?: function
     265              with parameters
     266                instance of type T (not function type)
     267                instance of type T (not function type)
     268              returning
     269                instance of type T (not function type)
     270
     271
     272    function
     273    with parameters
     274      t: instance of type T (not function type)
     275    returning
     276      instance of type T (not function type)
    186277    with body
    187 
    188 main: a function
     278      CompoundStmt
     279                  Return Statement, returning: Applying untyped:
     280    Name: ?+?
     281...to:
     282    Name: t
     283    Name: t
     284
     285
     286
     287main: C function
     288      accepting unspecified arguments
    189289    returning
    190290      signed int
    191291    with body
    192       Declaration of x: a signed int
    193       Declaration of y: a signed int
    194       Declaration of a: a array of         Constant Expression: 10signed int
    195       Declaration of f: a float
    196      
    197         Expression Statement:
    198           Applying untyped:
    199               Name: swap
    200  to:
    201               Name: x
    202               Name: y
    203 
    204      
    205         Expression Statement:
    206           Applying untyped:
    207               Name: twice
    208  to:
    209               Name: x
    210               Name: y
    211 
    212      
    213         Expression Statement:
    214           Applying untyped:
    215               Name: ?=?
    216  to:
    217               Name: f
    218               Applying untyped:
    219                   Name: min
    220  to:
    221                   Constant Expression: 4.0                  Constant Expression: 3.0
    222      
    223         Expression Statement:
    224           Applying untyped:
    225               Name: sum
    226  to:
    227               Constant Expression: 10              Name: a
    228 
    229 
     292      CompoundStmt
     293        Declaration of x: signed int with initializer
     294          Simple Initializer:             Name: 1
     295
     296        Declaration of y: signed int with initializer
     297          Simple Initializer: constant expression 2 signed int
     298        Declaration of a: array of signed int with dimension of constant expression 10 signed int
     299        Declaration of f: float
     300                  Expression Statement:
     301            Applying untyped:
     302                Name: swap
     303            ...to:
     304                Name: x
     305                Name: y
     306
     307                  Expression Statement:
     308            Applying untyped:
     309                Name: twice
     310            ...to:
     311                Name: x
     312                Name: y
     313
     314                  Expression Statement:
     315            Applying untyped:
     316                Name: ?=?
     317            ...to:
     318                Address of:
     319                  Name: f
     320                Applying untyped:
     321                    Name: min
     322                ...to:
     323constant expression 4.0 double constant expression 3.0 double
     324                  Expression Statement:
     325            Applying untyped:
     326                Name: sum
     327            ...to:
     328constant expression 10 signed int                 Name: a
     329
     330
  • src/Tests/SynTree/Expected/Functions.tst

    rcd623a4 r5f2f2d7  
    1 h: a function
     1h: function
    22    with parameters
    33      void
     
    55      void
    66    with body
    7 
    8 f: a function
     7      CompoundStmt
     8
     9f: function
    910    with parameters
    1011      function
     
    3233            signed int
    3334
    34       g: a function
     35      g: function
    3536          with parameters
    3637            void
     
    4142      signed int
    4243    with body
    43 
    44 f1: a function
    45     returning
    46       signed int
    47     with body
    48 
    49 f2: a function
    50     returning
    51       signed int
    52     with body
    53 
    54 f3: a function
     44      CompoundStmt
     45                  Expression Statement:
     46            Applying untyped:
     47                Applying untyped:
     48                    Name: *?
     49                ...to:
     50                    Name: g
     51            ...to:
     52
     53                  Expression Statement:
     54            Applying untyped:
     55                Name: g
     56            ...to:
     57
     58                  Expression Statement:
     59            Applying untyped:
     60                Name: ?=?
     61            ...to:
     62                Address of:
     63                  Name: g
     64                Name: h
     65
     66
     67f1: function
     68      accepting unspecified arguments
     69    returning
     70      signed int
     71    with body
     72      CompoundStmt
     73
     74f2: function
     75      accepting unspecified arguments
     76    returning
     77      signed int
     78    with body
     79      CompoundStmt
     80
     81f3: function
     82      accepting unspecified arguments
    5583    returning
    5684      pointer to function
    57           returning
    58             signed int
    59 
    60     with body
    61 
    62 f4: a function
     85            accepting unspecified arguments
     86          returning
     87            signed int
     88
     89    with body
     90      CompoundStmt
     91
     92f4: function
     93      accepting unspecified arguments
    6394    returning
    6495      pointer to signed int
    6596    with body
    66 
    67 f5: a function
     97      CompoundStmt
     98
     99f5: function
     100      accepting unspecified arguments
    68101    returning
    69102      pointer to function
    70           returning
    71             signed int
    72 
    73     with body
    74 
    75 f6: a function
     103            accepting unspecified arguments
     104          returning
     105            signed int
     106
     107    with body
     108      CompoundStmt
     109
     110f6: function
     111      accepting unspecified arguments
    76112    returning
    77113      pointer to signed int
    78114    with body
    79 
    80 f7: a function
     115      CompoundStmt
     116
     117f7: function
     118      accepting unspecified arguments
    81119    returning
    82120      pointer to signed int
    83121    with body
    84 
    85 f8: a function
     122      CompoundStmt
     123
     124f8: function
     125      accepting unspecified arguments
    86126    returning
    87127      pointer to pointer to signed int
    88128    with body
    89 
    90 f9: a function
     129      CompoundStmt
     130
     131f9: function
     132      accepting unspecified arguments
    91133    returning
    92134      pointer to const pointer to signed int
    93135    with body
    94 
    95 f10: a function
     136      CompoundStmt
     137
     138f10: function
     139      accepting unspecified arguments
    96140    returning
    97141      pointer to open array of signed int
    98142    with body
    99 
    100 f11: a function
    101     returning
    102       pointer to open array of open array of signed int
    103     with body
    104 
    105 f12: a function
    106     returning
    107       pointer to open array of open array of signed int
    108     with body
    109 
    110 fII1: a function
    111     with parameters
    112       i: a signed int
    113     returning
    114       signed int
    115     with body
    116 
    117 fII2: a function
    118     with parameters
    119       i: a signed int
     143      CompoundStmt
     144
     145f11: function
     146      accepting unspecified arguments
     147    returning
     148      pointer to open array of array of signed int with dimension of constant expression 3 signed int
     149    with body
     150      CompoundStmt
     151
     152f12: function
     153      accepting unspecified arguments
     154    returning
     155      pointer to open array of array of signed int with dimension of constant expression 3 signed int
     156    with body
     157      CompoundStmt
     158
     159fII1: function
     160    with parameters
     161      i: signed int
     162    returning
     163      signed int
     164    with body
     165      CompoundStmt
     166
     167fII2: function
     168    with parameters
     169      i: signed int
    120170    returning
    121171      const signed int
    122172    with body
    123 
    124 fII3: a extern function
    125     with parameters
    126       i: a signed int
    127     returning
    128       signed int
    129     with body
    130 
    131 fII4: a extern function
    132     with parameters
    133       i: a signed int
     173      CompoundStmt
     174
     175fII3: auto function
     176    with parameters
     177      i: signed int
     178    returning
     179      signed int
     180    with body
     181      CompoundStmt
     182
     183fII4: auto function
     184    with parameters
     185      i: signed int
    134186    returning
    135187      const signed int
    136188    with body
    137 
    138 fII5: a function
     189      CompoundStmt
     190
     191fII5: function
     192      accepting unspecified arguments
    139193    returning
    140194      pointer to signed int
    141195    with body
    142 
    143 fII6: a function
     196      CompoundStmt
     197
     198fII6: function
     199      accepting unspecified arguments
    144200    returning
    145201      const pointer to signed int
    146202    with body
    147 
    148 fII7: a function
     203      CompoundStmt
     204
     205fII7: function
     206      accepting unspecified arguments
    149207    returning
    150208      pointer to const long signed int
    151209    with body
    152 
    153 fII8: a static function
     210      CompoundStmt
     211
     212fII8: static function
     213      accepting unspecified arguments
    154214    returning
    155215      pointer to const long signed int
    156216    with body
    157 
    158 fII9: a static function
     217      CompoundStmt
     218
     219fII9: static function
     220      accepting unspecified arguments
    159221    returning
    160222      pointer to const long signed int
    161223    with body
    162 
    163 fO1: a function
     224      CompoundStmt
     225
     226fO1: function
     227      accepting unspecified arguments
    164228    returning
    165229      signed int
     
    167231      i
    168232    with parameter declarations
    169       i: a signed int
    170     with body
    171 
    172 fO2: a function
     233      i: signed int
     234    with body
     235      CompoundStmt
     236
     237fO2: function
     238      accepting unspecified arguments
    173239    returning
    174240      signed int
     
    176242      i
    177243    with parameter declarations
    178       i: a signed int
    179     with body
    180 
    181 fO3: a function
     244      i: signed int
     245    with body
     246      CompoundStmt
     247
     248fO3: function
     249      accepting unspecified arguments
    182250    returning
    183251      const signed int
     
    185253      i
    186254    with parameter declarations
    187       i: a signed int
    188     with body
    189 
    190 fO4: a extern function
     255      i: signed int
     256    with body
     257      CompoundStmt
     258
     259fO4: auto function
     260      accepting unspecified arguments
    191261    returning
    192262      signed int
     
    194264      i
    195265    with parameter declarations
    196       i: a signed int
    197     with body
    198 
    199 fO5: a extern function
     266      i: signed int
     267    with body
     268      CompoundStmt
     269
     270fO5: auto function
     271      accepting unspecified arguments
    200272    returning
    201273      const signed int
     
    203275      i
    204276    with parameter declarations
    205       i: a signed int
    206     with body
    207 
    208 f: a function
    209     returning
    210       nothing
    211 
    212 f: a function
    213     returning
    214       signed int
    215 
    216 f: a function
    217     with parameters
    218       signed int
    219     returning
    220       nothing
    221 
    222 f: a function
    223     with parameters
    224       signed int
    225     returning
    226       signed int
    227 
    228 f: a function
    229     returning
    230       nothing
    231     with body
    232 
    233 f: a function
    234     returning
    235       signed int
    236     with body
    237 
    238 f: a function
    239     with parameters
    240       signed int
    241     returning
    242       nothing
    243     with body
    244 
    245 f: a function
    246     with parameters
    247       signed int
    248     returning
    249       signed int
    250     with body
    251 
    252 f: a function
    253     returning
    254       x: a signed int
    255 
    256 f: a function
    257     with parameters
    258       x: a signed int
    259     returning
    260       nothing
    261 
    262 f: a function
    263     with parameters
    264       x: a signed int
    265     returning
    266       x: a signed int
    267 
    268 f: a function
    269     returning
    270       x: a signed int
    271     with body
    272 
    273 f: a function
    274     with parameters
    275       x: a signed int
    276     returning
    277       nothing
    278     with body
    279 
    280 f: a function
    281     with parameters
    282       x: a signed int
    283     returning
    284       x: a signed int
    285     with body
    286 
    287 f: a function
    288     returning
    289       signed int
    290       x: a signed int
    291 
    292 f: a function
    293     with parameters
    294       signed int
    295       x: a signed int
    296     returning
    297       nothing
    298 
    299 f: a function
    300     with parameters
    301       signed int
    302       x: a signed int
    303     returning
    304       signed int
    305       x: a signed int
    306 
    307 f: a function
    308     returning
    309       signed int
    310       x: a signed int
    311     with body
    312 
    313 f: a function
    314     with parameters
    315       signed int
    316       x: a signed int
    317     returning
    318       nothing
    319     with body
    320 
    321 f: a function
    322     with parameters
    323       signed int
    324       x: a signed int
    325     returning
    326       signed int
    327       x: a signed int
    328     with body
    329 
    330 f: a function
    331     returning
    332       signed int
    333       x: a signed int
    334       signed int
    335 
    336 f: a function
    337     with parameters
    338       signed int
    339       x: a signed int
    340       signed int
    341     returning
    342       nothing
    343 
    344 f: a function
    345     with parameters
    346       signed int
    347       x: a signed int
    348       signed int
    349     returning
    350       signed int
    351       x: a signed int
    352       signed int
    353 
    354 f: a function
    355     returning
    356       signed int
    357       x: a signed int
    358       signed int
    359     with body
    360 
    361 f: a function
    362     with parameters
    363       signed int
    364       x: a signed int
    365       signed int
    366     returning
    367       nothing
    368     with body
    369 
    370 f: a function
    371     with parameters
    372       signed int
    373       x: a signed int
    374       signed int
    375     returning
    376       signed int
    377       x: a signed int
    378       signed int
    379     with body
    380 
    381 f: a function
    382     returning
    383       signed int
    384       x: a signed int
    385       y: a pointer to signed int
    386 
    387 f: a function
    388     with parameters
    389       signed int
    390       x: a signed int
    391       y: a pointer to signed int
    392     returning
    393       nothing
    394 
    395 f: a function
    396     with parameters
    397       signed int
    398       x: a signed int
    399       y: a pointer to signed int
    400     returning
    401       signed int
    402       x: a signed int
    403       y: a pointer to signed int
    404 
    405 f: a function
    406     returning
    407       signed int
    408       x: a signed int
    409       y: a pointer to signed int
    410     with body
    411 
    412 f: a function
    413     with parameters
    414       signed int
    415       x: a signed int
    416       y: a pointer to signed int
    417     returning
    418       nothing
    419     with body
    420 
    421 f: a function
    422     with parameters
    423       signed int
    424       x: a signed int
    425       y: a pointer to signed int
    426     returning
    427       signed int
    428       x: a signed int
    429       y: a pointer to signed int
    430     with body
    431 
    432 f11: a function
    433     with parameters
    434       signed int
    435     returning
    436       signed int
    437 
    438 f12: a function
    439     with parameters
    440       signed int
    441     returning
    442       signed int
    443 
    444 f: a function
     277      i: signed int
     278    with body
     279      CompoundStmt
     280
     281f: function
     282    returning
     283      nothing
     284
     285f: function
     286    returning
     287      signed int
     288
     289f: function
     290    with parameters
     291      signed int
     292    returning
     293      nothing
     294
     295f: function
     296    with parameters
     297      signed int
     298    returning
     299      signed int
     300
     301f: function
     302    returning
     303      nothing
     304    with body
     305      CompoundStmt
     306
     307f: function
     308    returning
     309      signed int
     310    with body
     311      CompoundStmt
     312
     313f: function
     314    with parameters
     315      signed int
     316    returning
     317      nothing
     318    with body
     319      CompoundStmt
     320
     321f: function
     322    with parameters
     323      signed int
     324    returning
     325      signed int
     326    with body
     327      CompoundStmt
     328
     329f: function
     330    returning
     331      x: signed int
     332
     333f: function
     334    with parameters
     335      x: signed int
     336    returning
     337      nothing
     338
     339f: function
     340    with parameters
     341      x: signed int
     342    returning
     343      x: signed int
     344
     345f: function
     346    returning
     347      x: signed int
     348    with body
     349      CompoundStmt
     350
     351f: function
     352    with parameters
     353      x: signed int
     354    returning
     355      nothing
     356    with body
     357      CompoundStmt
     358
     359f: function
     360    with parameters
     361      x: signed int
     362    returning
     363      x: signed int
     364    with body
     365      CompoundStmt
     366
     367f: function
     368    returning
     369      signed int
     370      x: signed int
     371
     372f: function
     373    with parameters
     374      signed int
     375      x: signed int
     376    returning
     377      nothing
     378
     379f: function
     380    with parameters
     381      signed int
     382      x: signed int
     383    returning
     384      signed int
     385      x: signed int
     386
     387f: function
     388    returning
     389      signed int
     390      x: signed int
     391    with body
     392      CompoundStmt
     393
     394f: function
     395    with parameters
     396      signed int
     397      x: signed int
     398    returning
     399      nothing
     400    with body
     401      CompoundStmt
     402
     403f: function
     404    with parameters
     405      signed int
     406      x: signed int
     407    returning
     408      signed int
     409      x: signed int
     410    with body
     411      CompoundStmt
     412
     413f: function
     414    returning
     415      signed int
     416      x: signed int
     417      signed int
     418
     419f: function
     420    with parameters
     421      signed int
     422      x: signed int
     423      signed int
     424    returning
     425      nothing
     426
     427f: function
     428    with parameters
     429      signed int
     430      x: signed int
     431      signed int
     432    returning
     433      signed int
     434      x: signed int
     435      signed int
     436
     437f: function
     438    returning
     439      signed int
     440      x: signed int
     441      signed int
     442    with body
     443      CompoundStmt
     444
     445f: function
     446    with parameters
     447      signed int
     448      x: signed int
     449      signed int
     450    returning
     451      nothing
     452    with body
     453      CompoundStmt
     454
     455f: function
     456    with parameters
     457      signed int
     458      x: signed int
     459      signed int
     460    returning
     461      signed int
     462      x: signed int
     463      signed int
     464    with body
     465      CompoundStmt
     466
     467f: function
     468    returning
     469      signed int
     470      x: signed int
     471      y: pointer to signed int
     472
     473f: function
     474    with parameters
     475      signed int
     476      x: signed int
     477      y: pointer to signed int
     478    returning
     479      nothing
     480
     481f: function
     482    with parameters
     483      signed int
     484      x: signed int
     485      y: pointer to signed int
     486    returning
     487      signed int
     488      x: signed int
     489      y: pointer to signed int
     490
     491f: function
     492    returning
     493      signed int
     494      x: signed int
     495      y: pointer to signed int
     496    with body
     497      CompoundStmt
     498
     499f: function
     500    with parameters
     501      signed int
     502      x: signed int
     503      y: pointer to signed int
     504    returning
     505      nothing
     506    with body
     507      CompoundStmt
     508
     509f: function
     510    with parameters
     511      signed int
     512      x: signed int
     513      y: pointer to signed int
     514    returning
     515      signed int
     516      x: signed int
     517      y: pointer to signed int
     518    with body
     519      CompoundStmt
     520
     521f11: function
     522    with parameters
     523      signed int
     524    returning
     525      signed int
     526
     527f12: function
     528    with parameters
     529      signed int
     530    returning
     531      signed int
     532
     533f: function
    445534    with parameters
    446535      function
    447536          with parameters
    448537            signed int
    449             p: a signed int
     538            p: signed int
    450539          returning
    451540            signed int
     
    460549      signed int
    461550    with body
    462       Declaration of p: a pointer to open array of open array of pointer to open array of open array of signed int
    463       Declaration of p: a pointer to open array of open array of pointer to open array of open array of signed int
    464       Declaration of p: a pointer to open array of pointer to function
    465           with parameters
    466             signed int
    467           returning
    468             signed int
    469 
    470 
    471 f1: a static function
     551      CompoundStmt
     552        Declaration of p: pointer to open array of array of pointer to open array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 10 signed int
     553        Declaration of p: pointer to open array of array of pointer to open array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 10 signed int
     554        Declaration of p: pointer to open array of pointer to function
     555            with parameters
     556              signed int
     557            returning
     558              signed int
     559
     560
     561f1: static function
     562      accepting unspecified arguments
    472563    returning
    473564      pointer to const signed int
    474565    with body
    475 
    476 f2: a static function
     566      CompoundStmt
     567
     568f2: static function
    477569    returning
    478570      const signed int
    479571    with body
    480 
    481 f3: a inline static function
     572      CompoundStmt
     573
     574f3: inline static function
    482575    returning
    483576      const pointer to signed int
    484577    with body
    485 
    486 f4: a inline static function
     578      CompoundStmt
     579
     580f4: inline static function
    487581    returning
    488582      const tuple of types
     
    491585
    492586    with body
    493 
    494 f5: a static function
     587      CompoundStmt
     588
     589f5: static function
    495590    returning
    496591      const tuple of types
     
    499594
    500595    with body
    501 
    502 f: a function
    503     with parameters
    504       function
    505           returning
    506             signed int
    507 
    508       function
     596      CompoundStmt
     597
     598f: function
     599    with parameters
     600      function
     601            accepting unspecified arguments
     602          returning
     603            signed int
     604
     605      function
     606            accepting unspecified arguments
    509607          returning
    510608            pointer to signed int
    511609
    512610      function
     611            accepting unspecified arguments
    513612          returning
    514613            pointer to pointer to signed int
    515614
    516615      function
     616            accepting unspecified arguments
    517617          returning
    518618            pointer to const pointer to signed int
    519619
    520620      function
     621            accepting unspecified arguments
    521622          returning
    522623            const pointer to const pointer to signed int
    523624
    524625      open array of signed int
     626      array of signed int with dimension of constant expression 10 signed int
     627      open array of pointer to signed int
     628      array of pointer to signed int with dimension of constant expression 10 signed int
     629      open array of pointer to pointer to signed int
     630      array of pointer to pointer to signed int with dimension of constant expression 10 signed int
     631      open array of pointer to const pointer to signed int
     632      array of pointer to const pointer to signed int with dimension of constant expression 10 signed int
     633      open array of const pointer to const pointer to signed int
     634      array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int
     635    returning
     636      signed int
     637
     638f: function
     639    with parameters
     640      function
     641            accepting unspecified arguments
     642          returning
     643            signed int
     644
     645      function
     646            accepting unspecified arguments
     647          returning
     648            pointer to signed int
     649
     650      function
     651            accepting unspecified arguments
     652          returning
     653            pointer to pointer to signed int
     654
     655      function
     656            accepting unspecified arguments
     657          returning
     658            pointer to const pointer to signed int
     659
     660      function
     661            accepting unspecified arguments
     662          returning
     663            const pointer to const pointer to signed int
     664
    525665      open array of signed int
     666      array of signed int with dimension of constant expression 10 signed int
    526667      open array of pointer to signed int
    527       open array of pointer to signed int
     668      array of pointer to signed int with dimension of constant expression 10 signed int
    528669      open array of pointer to pointer to signed int
    529       open array of pointer to pointer to signed int
     670      array of pointer to pointer to signed int with dimension of constant expression 10 signed int
    530671      open array of pointer to const pointer to signed int
    531       open array of pointer to const pointer to signed int
     672      array of pointer to const pointer to signed int with dimension of constant expression 10 signed int
    532673      open array of const pointer to const pointer to signed int
    533       open array of const pointer to const pointer to signed int
    534     returning
    535       signed int
    536 
    537 f: a function
    538     with parameters
    539       function
    540           returning
    541             signed int
    542 
    543       function
    544           returning
    545             pointer to signed int
    546 
    547       function
    548           returning
    549             pointer to pointer to signed int
    550 
    551       function
    552           returning
    553             pointer to const pointer to signed int
    554 
    555       function
    556           returning
    557             const pointer to const pointer to signed int
    558 
    559       open array of signed int
    560       open array of signed int
    561       open array of pointer to signed int
    562       open array of pointer to signed int
    563       open array of pointer to pointer to signed int
    564       open array of pointer to pointer to signed int
    565       open array of pointer to const pointer to signed int
    566       open array of pointer to const pointer to signed int
    567       open array of const pointer to const pointer to signed int
    568       open array of const pointer to const pointer to signed int
    569     returning
    570       signed int
    571     with body
    572 
    573 T: a typedef for signed int
    574 f: a function
     674      array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int
     675    returning
     676      signed int
     677    with body
     678      CompoundStmt
     679
     680T: typedef for signed int
     681f: function
    575682    with parameters
    576683      function
    577684          with parameters
    578             instance of type T
    579           returning
    580             instance of type T
    581 
    582       T: a instance of type T
    583     returning
    584       signed int
    585     with body
    586 
     685            instance of type T (not function type)
     686          returning
     687            instance of type T (not function type)
     688
     689      T: instance of type T (not function type)
     690    returning
     691      signed int
     692    with body
     693      CompoundStmt
     694                  Expression Statement:
     695            Applying untyped:
     696                Name: T
     697            ...to:
     698                Name: T
     699
     700
  • src/Tests/SynTree/Expected/IdentFuncDeclarator.tst

    rcd623a4 r5f2f2d7  
    1 main: a function
     1main: C function
     2      accepting unspecified arguments
    23    returning
    34      signed int
    45    with body
    5       Declaration of f1: a signed int
    6       Declaration of f2: a signed int
    7       Declaration of f3: a pointer to signed int
    8       Declaration of f4: a pointer to pointer to signed int
    9       Declaration of f5: a pointer to const pointer to signed int
    10       Declaration of f6: a const pointer to const pointer to signed int
    11       Declaration of f7: a pointer to signed int
    12       Declaration of f8: a pointer to pointer to signed int
    13       Declaration of f9: a pointer to const pointer to signed int
    14       Declaration of f10: a const pointer to const pointer to signed int
    15       Declaration of f11: a pointer to signed int
    16       Declaration of f12: a pointer to pointer to signed int
    17       Declaration of f13: a pointer to const pointer to signed int
    18       Declaration of f14: a const pointer to const pointer to signed int
    19       Declaration of f15: a open array of signed int
    20       Declaration of f16: a open array of signed int
    21       Declaration of f17: a open array of signed int
    22       Declaration of f18: a open array of signed int
    23       Declaration of f19: a open array of pointer to signed int
    24       Declaration of f20: a open array of pointer to signed int
    25       Declaration of f21: a open array of pointer to pointer to signed int
    26       Declaration of f22: a open array of pointer to pointer to signed int
    27       Declaration of f23: a open array of pointer to const pointer to signed int
    28       Declaration of f24: a open array of pointer to const pointer to signed int
    29       Declaration of f25: a open array of const pointer to const pointer to signed int
    30       Declaration of f26: a open array of const pointer to const pointer to signed int
    31       Declaration of f27: a open array of pointer to signed int
    32       Declaration of f28: a open array of pointer to signed int
    33       Declaration of f29: a open array of pointer to pointer to signed int
    34       Declaration of f30: a open array of pointer to pointer to signed int
    35       Declaration of f31: a open array of pointer to const pointer to signed int
    36       Declaration of f32: a open array of pointer to const pointer to signed int
    37       Declaration of f33: a open array of const pointer to const pointer to signed int
    38       Declaration of f34: a open array of const pointer to const pointer to signed int
    39       Declaration of f35: a open array of pointer to signed int
    40       Declaration of f36: a open array of pointer to signed int
    41       Declaration of f37: a open array of pointer to pointer to signed int
    42       Declaration of f38: a open array of pointer to pointer to signed int
    43       Declaration of f39: a open array of pointer to const pointer to signed int
    44       Declaration of f40: a open array of pointer to const pointer to signed int
    45       Declaration of f41: a open array of const pointer to const pointer to signed int
    46       Declaration of f42: a open array of const pointer to const pointer to signed int
    47       Declaration of f43: a open array of open array of signed int
    48       Declaration of f44: a open array of open array of signed int
    49       Declaration of f45: a open array of open array of signed int
    50       Declaration of f46: a open array of open array of signed int
    51       Declaration of f47: a open array of open array of signed int
    52       Declaration of f48: a open array of open array of signed int
    53       Declaration of f49: a open array of open array of pointer to signed int
    54       Declaration of f50: a open array of open array of pointer to signed int
    55       Declaration of f51: a open array of open array of pointer to pointer to signed int
    56       Declaration of f52: a open array of open array of pointer to pointer to signed int
    57       Declaration of f53: a open array of open array of pointer to const pointer to signed int
    58       Declaration of f54: a open array of open array of pointer to const pointer to signed int
    59       Declaration of f55: a open array of open array of const pointer to const pointer to signed int
    60       Declaration of f56: a open array of open array of const pointer to const pointer to signed int
    61       Declaration of f57: a open array of open array of pointer to signed int
    62       Declaration of f58: a open array of open array of pointer to signed int
    63       Declaration of f59: a open array of open array of pointer to pointer to signed int
    64       Declaration of f60: a open array of open array of pointer to pointer to signed int
    65       Declaration of f61: a open array of open array of pointer to const pointer to signed int
    66       Declaration of f62: a open array of open array of pointer to const pointer to signed int
    67       Declaration of f63: a open array of open array of const pointer to const pointer to signed int
    68       Declaration of f64: a open array of open array of const pointer to const pointer to signed int
    69       Declaration of f65: a function
    70           with parameters
    71             signed int
    72           returning
    73             signed int
     6      CompoundStmt
     7        Declaration of f1: signed int
     8        Declaration of f2: signed int
     9        Declaration of f3: pointer to signed int
     10        Declaration of f4: pointer to pointer to signed int
     11        Declaration of f5: pointer to const pointer to signed int
     12        Declaration of f6: const pointer to const pointer to signed int
     13        Declaration of f7: pointer to signed int
     14        Declaration of f8: pointer to pointer to signed int
     15        Declaration of f9: pointer to const pointer to signed int
     16        Declaration of f10: const pointer to const pointer to signed int
     17        Declaration of f11: pointer to signed int
     18        Declaration of f12: pointer to pointer to signed int
     19        Declaration of f13: pointer to const pointer to signed int
     20        Declaration of f14: const pointer to const pointer to signed int
     21        Declaration of f15: open array of signed int
     22        Declaration of f16: array of signed int with dimension of constant expression 10 signed int
     23        Declaration of f17: open array of signed int
     24        Declaration of f18: array of signed int with dimension of constant expression 10 signed int
     25        Declaration of f19: open array of pointer to signed int
     26        Declaration of f20: array of pointer to signed int with dimension of constant expression 10 signed int
     27        Declaration of f21: open array of pointer to pointer to signed int
     28        Declaration of f22: array of pointer to pointer to signed int with dimension of constant expression 10 signed int
     29        Declaration of f23: open array of pointer to const pointer to signed int
     30        Declaration of f24: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int
     31        Declaration of f25: open array of const pointer to const pointer to signed int
     32        Declaration of f26: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int
     33        Declaration of f27: open array of pointer to signed int
     34        Declaration of f28: array of pointer to signed int with dimension of constant expression 10 signed int
     35        Declaration of f29: open array of pointer to pointer to signed int
     36        Declaration of f30: array of pointer to pointer to signed int with dimension of constant expression 10 signed int
     37        Declaration of f31: open array of pointer to const pointer to signed int
     38        Declaration of f32: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int
     39        Declaration of f33: open array of const pointer to const pointer to signed int
     40        Declaration of f34: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int
     41        Declaration of f35: open array of pointer to signed int
     42        Declaration of f36: array of pointer to signed int with dimension of constant expression 10 signed int
     43        Declaration of f37: open array of pointer to pointer to signed int
     44        Declaration of f38: array of pointer to pointer to signed int with dimension of constant expression 10 signed int
     45        Declaration of f39: open array of pointer to const pointer to signed int
     46        Declaration of f40: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int
     47        Declaration of f41: open array of const pointer to const pointer to signed int
     48        Declaration of f42: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int
     49        Declaration of f43: open array of array of signed int with dimension of constant expression 3 signed int
     50        Declaration of f44: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int
     51        Declaration of f45: open array of array of signed int with dimension of constant expression 3 signed int
     52        Declaration of f46: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int
     53        Declaration of f47: open array of array of signed int with dimension of constant expression 3 signed int
     54        Declaration of f48: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int
     55        Declaration of f49: open array of array of pointer to signed int with dimension of constant expression 3 signed int
     56        Declaration of f50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int
     57        Declaration of f51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int
     58        Declaration of f52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int
     59        Declaration of f53: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int
     60        Declaration of f54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int
     61        Declaration of f55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int
     62        Declaration of f56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int
     63        Declaration of f57: open array of array of pointer to signed int with dimension of constant expression 3 signed int
     64        Declaration of f58: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int
     65        Declaration of f59: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int
     66        Declaration of f60: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int
     67        Declaration of f61: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int
     68        Declaration of f62: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int
     69        Declaration of f63: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int
     70        Declaration of f64: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int
     71        Declaration of f65: function
     72            with parameters
     73              signed int
     74            returning
     75              signed int
    7476
    75       Declaration of f66: a function
    76           with parameters
    77             signed int
    78           returning
    79             signed int
     77        Declaration of f66: function
     78            with parameters
     79              signed int
     80            returning
     81              signed int
    8082
    81       Declaration of f67: a function
    82           with parameters
    83             signed int
    84           returning
    85             pointer to signed int
     83        Declaration of f67: function
     84            with parameters
     85              signed int
     86            returning
     87              pointer to signed int
    8688
    87       Declaration of f68: a function
    88           with parameters
    89             signed int
    90           returning
    91             pointer to pointer to signed int
     89        Declaration of f68: function
     90            with parameters
     91              signed int
     92            returning
     93              pointer to pointer to signed int
    9294
    93       Declaration of f69: a function
    94           with parameters
    95             signed int
    96           returning
    97             pointer to const pointer to signed int
     95        Declaration of f69: function
     96            with parameters
     97              signed int
     98            returning
     99              pointer to const pointer to signed int
    98100
    99       Declaration of f70: a function
    100           with parameters
    101             signed int
    102           returning
    103             const pointer to const pointer to signed int
     101        Declaration of f70: function
     102            with parameters
     103              signed int
     104            returning
     105              const pointer to const pointer to signed int
    104106
    105       Declaration of f71: a function
    106           with parameters
    107             signed int
    108           returning
    109             pointer to signed int
     107        Declaration of f71: function
     108            with parameters
     109              signed int