help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Implementing eval and load functions inside a scripting engine.


From: evilsocket
Subject: Implementing eval and load functions inside a scripting engine.
Date: Wed, 19 May 2010 04:08:52 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100423 Thunderbird/3.0.4

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hy guys, i'm developing a scripting engine with flex and bison and now
i'm implementing the eval and load functions for this language.
Just to give you an example, the syntax is like :

import std.*;

load( "some_script.hy" );

eval( "foo = 123;" );

println( foo );

So, in my lexer i've implemented the function :

void hyb_parse_string( const char *str ){
    extern int yyparse(void);
    YY_BUFFER_STATE prev, next;
    /*
     * Save current buffer.
     */
    prev = YY_CURRENT_BUFFER;
    /*
     * yy_scan_string will call yy_switch_to_buffer.
     */
    next = yy_scan_string( str );
    /*
     * Do actual parsing (yyparse calls yylex).
     */
    yyparse();
    /*
     * Restore previous buffer.
     */
    yy_switch_to_buffer(prev);
}

But it does not seem to work.
Well, it does but when the string (loaded from a file or directly
evaluated) is finished, i get a sigsegv :

Program received signal SIGSEGV, Segmentation fault.
0xb7f2b801 in yylex () at src/lexer.cpp:1658
1658            if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status ==
YY_BUFFER_NEW )

As you may notice, the sigsegv is generated by the flex/bison code,
not mine ... any hints?
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJL80g0AAoJEOp6IutgtnhNVjYIAJMRo8dmBy1dzMpjVtWZVSq+
kd9h3qZg/twUtUJA7MkON77utoTZGLsNjwApxuD4G9qMaqE2d/SmTABEQW1HiW1/
/37xwBbjy6sLcWZkY/pmz10YN3G6NJJnTm95Vz6kBgvSDFFmvJJh8tt0uxmkNAa4
/5QsxL6ilzbnyChOlpPBodCozL6LLJrVBUZjfDTPwbje65DncrkALi2OzW09vwo7
TLfJXDA0cL3ELLy1twfwUNcwwgd4QnXJRje8X5ybLmpIzTzTWsIJKIoCFvJ4hDLw
E6/02jx1Cv2tryr+7pYYToi06zJt6Qvxnd+eweZ7HAshZZuZ+8OWaVqGbdLeHOo=
=FxBd
-----END PGP SIGNATURE-----




reply via email to

[Prev in Thread] Current Thread [Next in Thread]