/* Mine: */ #define SCPARSE_C #include "scparse.h" /* Perl */ #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" #/* self->read (filename) */ int _read_xs (CLASS, filename, strip_autos) SV *CLASS char *filename int strip_autos PROTOTYPE: $$$ CODE: { static int/*bool*/ in_parser = 0; if (!SvROK(CLASS)) { in_parser = 0; croak ("Parser::read() not called as class member"); } if (!filename) { in_parser = 0; croak ("Parser::read() filename=> parameter not passed"); } if (in_parser) { croak ("Parser::read() called recursively"); } in_parser = 1; scparse_init (CLASS, filename, strip_autos); if (!sclex_open (filename)) { in_parser = 0; croak ("Parser::read() file not found"); } scgrammerparse(); fclose (sclexin); /* Emit final tokens */ scparser_EmitPrefix (); if (scParserState.errors) { in_parser = 0; croak ("Parser::read() detected parse errors"); } in_parser = 0; RETVAL = 1; } OUTPUT: RETVAL