PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` # This is the Pegex grammar for Inline::C # Note: # # Use the following environment variables for dev: # # export PERL_PEGEX_DEBUG=1 # export PERL_PEGEX_AUTO_COMPILE=1 # # To recompile the grammar without AUTO COMPILE, just run: # # perl -Ilib -MInline::C::ParsePegex::Grammar=compile # # And that will put changes to this file into Inline::C::ParsePegex::Grammar. %grammar inline-c %version 0.0.1 # C code is 1 or more 'parts' code: part+ # The only parts we care about are function definitions and declarations, but # not those inside a comment. part: =ALL ( | comment | function_definition | function_declaration | anything_else ) comment: /- SLASH SLASH [^ BREAK ]* BREAK / | /- SLASH STAR (: [^ STAR ]+ | STAR (! SLASH))* STAR SLASH ([ TAB ]*)? / # int foo_ () { return -1; }\n function_definition: rtype /( identifier )/ - LPAREN arg* % COMMA /- RPAREN - LCURLY -/ function_declaration: rtype /( identifier )/ - LPAREN arg_decl* % COMMA /- RPAREN - SEMI -/ rtype: /- (: rtype1 | rtype2 ) -/ rtype1: / modifier*( type_identifier ) - ( STAR*) / rtype2: / modifier+ STAR*/ arg: /(: type - ( identifier)|( DOT DOT DOT ))/ arg_decl: /( type WS* identifier*| DOT DOT DOT )/ type: / WS*(: type1 | type2 ) WS* / type1: / modifier*( type_identifier ) WS*( STAR* )/ type2: / modifier* STAR* / modifier: /(: (:unsigned|long|extern|const)\b WS* )/ identifier: /(: WORD+ )/ type_identifier: /(: WORD+ )/ anything_else: / ANY* (: EOL | EOS ) /