Hi, Adrian.

I found that if we use "import" directive, and import file was not
found - ragel crashes with exception.

from sources i found function
void Scanner::handleImport() in rlscan.rl.

code ===============================
                ifstream *inFile = tryOpenInclude( importChecks, found );
                if ( inFile == 0 )
                                    {
                        scan_error() << "import: could not open import file " <<
                                        "for reading" << endl;
                        char **tried = importChecks;
                        while ( *tried != 0 )
                                scan_error() << "import: attempted: \"" << 
*tried++ << '\"' << endl;
                }

                Scanner scanner( id, importChecks[found], *inFile, parser, 0,
includeDepth+1, true );
                scanner.do_scan( );
                scanner.importToken( 0, 0, 0 );
                scanner.flushImport();
                delete inFile;

==========================

this mean that Scanner will work always -
if (inFile != 0) - file was found - scanner will work ( OK )
and
if (inFile == 0) - file not found - scanner will work ( BUG )

Solution can be like in Scanner::handleInclude()
== patch 1 ============================
if ( inFile == 0 )
{
    error output ....
}
else
{
     Scanner ....
}
== patch 1 end ========================

or

== patch 2 ============================
like in Scanner::handleInclude()

if ( inFile == 0 )
{
    error output ....

    RETURN;
}

  Scanner ....

== patch 2 end ========================


Best regards.
Denis.

_______________________________________________
ragel-users mailing list
[email protected]
http://www.complang.org/mailman/listinfo/ragel-users

Reply via email to