Results 1 to 5 of 5
  1. #1
    Yemiez's Avatar
    Join Date
    Jun 2012
    Gender
    male
    Location
    Sweden
    Posts
    2,566
    Reputation
    731
    Thanks
    16,279
    My Mood
    Devilish

    Expression Parser Release [1x9]

    Introduction
    Welcome to the release of Expression parser version 1x9.
    This is going to be a short thread as all the necessary information can be found in my other threads created about ep, they can be seen at the bottom of this page.

    What is Expression Parser?
    Ep, which by the way is short for Expression Parser, is a new scripting language created for the sole purpose of being used by MPGH members exclusively. It's meant to work along the side of C++, meaning you can directly use ep in your C++ Applications by simply including the ep headers and libraries. The now improved C++ portability means you can have ep arguments (variable_list) automatically deduced into arguments at C++ compile time.

    I wanna learn more, how does it work?
    Expression Parser Theoretical Introduction
    Expression Parser Practical and Syntactical Introduction


    Changelog
    [...]

    Version 1x7
    Code:
    - Added a few new working keywords (means they're implemented)
        break
        continue
        public
        private
        
    - Added the ability for a developer to specift if an argument should be a ep reference
      (using the automatic deduction method) specify your argument as ep::argument_ref_ptr.
      
    - Added implementation of binary files (use epcc to compile your *.ep file into a *.oep)
    
    - Huge improvements/bug fixes to asignments (before you couldn't do object->x = 5, or get_x() = 5)
      you can now! Yay.
    Version 1x8
    Code:
    - Added more C++ type safety.'
      You can no longer create value_reference of int and cast it to e.g double.
      
    - Fixed an assignment bug (I forgot to change a function)
    
    - Remade error message system completely and it now has better error messages.
    
    - Made some changes to value reference.
    Version 1x9
    Code:
    - Added 'type_info' type (use either typeid() or type_info() to construct)
      it provides the basic utilites needed to check the run-time type information
      of variables etc.
      
     - Added standard type nullptr_t (use nullptr keyword/variable)
      
    - Added ability to import dll's that are using the EP plugin format
      (instead of specifying it inside of the ep::module constructor, it
       can still be done like that though)
      
    - Added optional new import syntax, totally didn't steal it from go ;)
      You can now import multiple libraries or files with one import statement.
      Example:
    	import( bo, 
    	        ios, 
    			vector,
    			"somefile.ep",
    			"somelibrary.dll" );
      
    - Optimized some of the evaluation code (Move semantics etc)
    
    - Fixed an internal parser error when converting infix to (not actual) postfix.
      The following expression would fail to be parsed because a trailing '(' was
      added to the end of the postfix expression (no parentheses allowed):
    	typeid( "hi" )->bare_equal( typeid( 6 ) )
      This is now fixed, and should produce a valid postfix output.
    
    - Fixed a bug when accessing member methods, it didn't check the arity
      of the arguments on the stack, so it caused an uncatchable exception.
      
    - Fixed a few ep_error bugs (lol)
    
    - Fixed a bug in 'vector::for_each' using the wrong argument.
    
    - Fixed a value_reference bug (it would attempt to destroy references)
    
    - Fixed a bug in bo::operator! (doing it with any other type than 'floating' would throw a conversion error)
    
    - Fixed yet another access bug.
      The error would happen whenever you did something like this:
    	type->get()->method( argument );
      The postfix output would be falsely generated here, it would attempt to access 'method'
      from 'argument', instead of the rvalue returned from 'type->get()'.
    Sincerely,
    Yamiez.
    <b>Downloadable Files</b> Downloadable Files

  2. The Following 2 Users Say Thank You to Yemiez For This Useful Post:

    Hunter (10-15-2016),k3jl7h (10-15-2016)

  3. #2
    Hunter's Avatar
    Join Date
    Dec 2013
    Gender
    male
    Location
    Depths Of My Mind.
    Posts
    17,468
    Reputation
    3771
    Thanks
    6,159
    My Mood
    Cheerful
    https://www.virustotal.com/en/file/8...is/1476539527/.

    /Approved. Post back results and as always, use at your own risk.

  4. The Following User Says Thank You to Hunter For This Useful Post:

    Yemiez (10-15-2016)

  5. #3
    Yemiez's Avatar
    Join Date
    Jun 2012
    Gender
    male
    Location
    Sweden
    Posts
    2,566
    Reputation
    731
    Thanks
    16,279
    My Mood
    Devilish
    2 downloads for months of work

    Nontheless, still working hard on ep, believe it or not but remaking the compiler took me 3 or so days of rigorous debugging.

    Upcoming release:
    Code:
    If you are sharing your ep source code, there is no need to give away your library modules (.dll) as well. 
    Because they're built into the generated *.oep compiled file! This is what took all of my debugging time, it was.. agitating.
    
    Adding run-time overload-like behaviour, using the "specialize" keyword, you can specialize methods to certain expressions,
    like such:
    import( bo, type_traits );
    
    method add( &a, &b )
    {
        // do some error reporting because a and b are invalid
    };
    
    specialize<is_arithmetic( a ) && is_arithmetic( b );>
    method add( &a, &b )
    {
         return a + b;
    };
    
    specialize<is_string_literal( a ) && is_arithmetic( b );>
    method add( &a, &b )
    {
         return a + b;
    };
    
    specialize<is_string_literal( a ) && is_string_literal( b );>
    method add( &a, &b )
    {
        return a + b;
    };
    
    // here, we can only assume the operator '+' of 'a' only supports a same type
    // rhs argument. (b)
    specialize<is_same( a, b ) && type_has_method( a, "+" );>
    method add( &a, &b )
    {
        return a + b;
    };
    Also, sneak peak of a library I've been implementing:
    Code:
    -->> Type system:
    ---->> floating
    -------->> floating::floating( &other )
    -------->> floating::~floating( )
    -------->> floating::=( &rhs )
    -------->> floating::+( &rhs )
    -------->> floating::-( &rhs )
    -------->> floating::*( &rhs )
    -------->> floating::/( &rhs )
    -------->> floating::&&( &rhs )
    -------->> floating::||( &rhs )
    -------->> floating::==( &rhs )
    -------->> floating::!=( &rhs )
    -------->> floating::>( &rhs )
    -------->> floating::<( &rhs )
    -------->> floating::>=( &rhs )
    -------->> floating::<=( &rhs )
    
    ---->> integral
    -------->> integral::integral( &other )
    -------->> integral::~integral( )
    -------->> integral::=( &rhs )
    -------->> integral::+( &rhs )
    -------->> integral::-( &rhs )
    -------->> integral::*( &rhs )
    -------->> integral::/( &rhs )
    -------->> integral::%( &rhs )
    -------->> integral::&( &rhs )
    -------->> integral::|( &rhs )
    -------->> integral::&&( &rhs )
    -------->> integral::||( &rhs )
    -------->> integral::==( &rhs )
    -------->> integral::!=( &rhs )
    -------->> integral::>( &rhs )
    -------->> integral::<( &rhs )
    -------->> integral::>=( &rhs )
    -------->> integral::<=( &rhs )
    -------->> integral::~( )
    -------->> integral::^( &rhs )
    
    ---->> string_literal
    -------->> string_literal::string_literal( &other )
    -------->> string_literal::~string_literal( )
    -------->> string_literal::=( &rhs )
    -------->> string_literal::==( &rhs )
    -------->> string_literal::!=( &rhs )
    -------->> string_literal::+( &rhs )
    
    ---->> type_info
    -------->> type_info::type_info( &other )
    -------->> type_info::~type_info( )
    -------->> type_info::bare_equal( &other )
    -------->> type_info::get_name( )
    -------->> type_info::==( &other )
    -------->> type_info::!=( &other )
    -------->> type_info::=( &other )
    
    ---->> nullptr_t
    -------->> nullptr_t::~nullptr_t( )
    
    ---->> vector
    -------->> vector::vector( )
    -------->> vector::~vector( )
    -------->> vector::emplace_back( &element )
    -------->> vector::erase( &it )
    -------->> vector::begin( )
    -------->> vector::end( )
    -------->> vector::for_each( &method )
    -------->> vector::pop_back( )
    -------->> vector::clear( )
    -------->> vector::empty( )
    -------->> vector::size( )
    -------->> vector::capacity( )
    
    ---->> vector::iterator
    -------->> vector::iterator::~vector::iterator( )
    -------->> vector::iterator::<( &it1 )
    -------->> vector::iterator::>( &it1 )
    -------->> vector::iterator::increment( )
    -------->> vector::iterator::decrement( )
    -------->> vector::iterator::access( )
    
    ---->> dx_Application
    -------->> dx_Application::~dx_Application( )
    -------->> dx_Application::run( )
    -------->> dx_Application::exit( )
    -------->> dx_Application::register_window( &arg1 )
    -------->> dx_Application::unregister_window( &arg1 )
    -------->> dx_Application::set_tick_rate( &arg1 )
    -------->> dx_Application::set_clipboard( &arg1 )
    -------->> dx_Application::on_tick( &arg1 )
    -------->> dx_Application::begin_invoke( &arg1 )
    -------->> dx_Application::=( &arg1 )
    
    ---->> dx_Vector2
    -------->> dx_Vector2::dx_Vector2( &arg, &arg1 )
    -------->> dx_Vector2::~dx_Vector2( )
    -------->> dx_Vector2::intersects( &arg1 )
    -------->> dx_Vector2::dot( &arg1 )
    -------->> dx_Vector2::magnitude( )
    -------->> dx_Vector2::+=( &arg1 )
    -------->> dx_Vector2::-=( &arg1 )
    -------->> dx_Vector2::=( &arg1 )
    -------->> dx_Vector2::+( &arg1 )
    -------->> dx_Vector2::-( &arg1 )
    -------->> dx_Vector2::*( &arg1 )
    -------->> dx_Vector2::/( &arg1 )
    -------->> dx_Vector2::>( &arg1 )
    -------->> dx_Vector2::<( &arg1 )
    -------->> dx_Vector2::>=( &arg1 )
    -------->> dx_Vector2::<=( &arg1 )
    -------->> dx_Vector2::==( &arg1 )
    -------->> dx_Vector2::!=( &arg1 )
    -------->> dx_Vector2::get_x( )
    -------->> dx_Vector2::get_y( )
    
    ---->> dx_Region
    -------->> dx_Region::dx_Region( &arg, &arg1 )
    -------->> dx_Region::~dx_Region( )
    -------->> dx_Region::move_by( &arg1 )
    -------->> dx_Region::move_to( &arg1 )
    -------->> dx_Region::resize_by( &arg1 )
    -------->> dx_Region::resize_to( &arg1 )
    -------->> dx_Region::intersects( &arg1 )
    -------->> dx_Region::get_position( )
    -------->> dx_Region::get_size( )
    
    ---->> dx_Path
    -------->> dx_Path::dx_Path( &arg )
    -------->> dx_Path::~dx_Path( )
    -------->> dx_Path::as_string( )
    -------->> dx_Path::previous( )
    -------->> dx_Path::upto_previous( )
    -------->> dx_Path::root( )
    -------->> dx_Path::filename( )
    -------->> dx_Path::extension( )
    -------->> dx_Path::branches( )
    -------->> dx_Path::remove_extension( )
    -------->> dx_Path::remove_directories( )
    -------->> dx_Path::remove_filename( )
    -------->> dx_Path::extension_is( &arg1 )
    -------->> dx_Path::has_extension( )
    -------->> dx_Path::has_filename( )
    -------->> dx_Path::has_branches( )
    -------->> dx_Path::is_directory( )
    -------->> dx_Path::=( &arg1 )
    
    ---->> dx_Texture
    -------->> dx_Texture::dx_Texture( &arg, &arg1 )
    -------->> dx_Texture::~dx_Texture( )
    -------->> dx_Texture::get_size( )
    -------->> dx_Texture::paint( &arg1 )
    -------->> dx_Texture::=( &arg1 )
    
    ---->> dx_Pen
    -------->> dx_Pen::dx_Pen( &arg, &arg1 )
    -------->> dx_Pen::~dx_Pen( )
    -------->> dx_Pen::get_color( )
    -------->> dx_Pen::set_color( &arg1 )
    -------->> dx_Pen::get_thickness( )
    -------->> dx_Pen::set_thickness( &arg1 )
    -------->> dx_Pen::=( &arg1 )
    
    ---->> dx_FontContext
    -------->> dx_FontContext::dx_FontContext( )
    -------->> dx_FontContext::~dx_FontContext( )
    -------->> dx_FontContext::get_height( )
    -------->> dx_FontContext::get_weight( )
    -------->> dx_FontContext::set_height( &arg1 )
    -------->> dx_FontContext::set_weight( &arg1 )
    -------->> dx_FontContext::make_proof_quality( )
    -------->> dx_FontContext::make_default_quality( )
    -------->> dx_FontContext::=( &arg1 )
    
    ---->> dx_Font
    -------->> dx_Font::dx_Font( &arg, &arg1, &arg2 )
    -------->> dx_Font::~dx_Font( )
    -------->> dx_Font::get_context( )
    -------->> dx_Font::string_size( &arg1 )
    -------->> dx_Font::=( &arg1 )
    
    ---->> dx_Line
    -------->> dx_Line::dx_Line( &arg, &arg1, &arg2 )
    -------->> dx_Line::~dx_Line( )
    -------->> dx_Line::get_position( )
    -------->> dx_Line::get_target( )
    -------->> dx_Line::get_pen( )
    -------->> dx_Line::set_position( &arg1 )
    -------->> dx_Line::set_target( &arg1 )
    -------->> dx_Line::set_pen( &arg1 )
    -------->> dx_Line::=( &arg1 )
    
    ---->> dx_Text
    -------->> dx_Text::dx_Text( &arg, &arg1, &arg2, &arg3 )
    -------->> dx_Text::~dx_Text( )
    -------->> dx_Text::get_font( )
    -------->> dx_Text::get_text( )
    -------->> dx_Text::get_position( )
    -------->> dx_Text::get_max_clip( )
    -------->> dx_Text::set_font( &arg1 )
    -------->> dx_Text::set_text( &arg1 )
    -------->> dx_Text::set_position( &arg1 )
    -------->> dx_Text::set_max_clip( &arg1 )
    -------->> dx_Text::=( &arg1 )
    
    ---->> dx_WindowMovedArgs
    -------->> dx_WindowMovedArgs::~dx_WindowMovedArgs( )
    -------->> dx_WindowMovedArgs::is_handled( )
    -------->> dx_WindowMovedArgs::get_region( )
    -------->> dx_WindowMovedArgs::make_handled( )
    
    ---->> dx_WindowResizedArgs
    -------->> dx_WindowResizedArgs::~dx_WindowResizedArgs( )
    -------->> dx_WindowResizedArgs::is_handled( )
    -------->> dx_WindowResizedArgs::get_region( )
    -------->> dx_WindowResizedArgs::make_handled( )
    
    ---->> dx_WindowClosingArgs
    -------->> dx_WindowClosingArgs::~dx_WindowClosingArgs( )
    -------->> dx_WindowClosingArgs::is_handled( )
    -------->> dx_WindowClosingArgs::get_should_close( )
    -------->> dx_WindowClosingArgs::set_should_close( &arg1 )
    -------->> dx_WindowClosingArgs::make_handled( )
    
    ---->> dx_KeyDownArgs
    -------->> dx_KeyDownArgs::~dx_KeyDownArgs( )
    -------->> dx_KeyDownArgs::is_handled( )
    -------->> dx_KeyDownArgs::make_handled( )
    -------->> dx_KeyDownArgs::is_ctrl_down( )
    -------->> dx_KeyDownArgs::is_shift_down( )
    -------->> dx_KeyDownArgs::get_key_code( )
    
    ---->> dx_KeyUpArgs
    -------->> dx_KeyUpArgs::~dx_KeyUpArgs( )
    -------->> dx_KeyUpArgs::is_handled( )
    -------->> dx_KeyUpArgs::make_handled( )
    -------->> dx_KeyUpArgs::is_ctrl_down( )
    -------->> dx_KeyUpArgs::is_shift_down( )
    -------->> dx_KeyUpArgs::get_key_code( )
    
    ---->> dx_KeyDownCharArgs
    -------->> dx_KeyDownCharArgs::~dx_KeyDownCharArgs( )
    -------->> dx_KeyDownCharArgs::is_handled( )
    -------->> dx_KeyDownCharArgs::make_handled( )
    -------->> dx_KeyDownCharArgs::get_string( )
    
    ---->> dx_MouseMovedArgs
    -------->> dx_MouseMovedArgs::~dx_MouseMovedArgs( )
    -------->> dx_MouseMovedArgs::is_handled( )
    -------->> dx_MouseMovedArgs::make_handled( )
    -------->> dx_MouseMovedArgs::is_ctrl_down( )
    -------->> dx_MouseMovedArgs::is_shift_down( )
    -------->> dx_MouseMovedArgs::get_position( )
    
    ---->> dx_MouseClickedArgs
    -------->> dx_MouseClickedArgs::~dx_MouseClickedArgs( )
    -------->> dx_MouseClickedArgs::is_handled( )
    -------->> dx_MouseClickedArgs::make_handled( )
    -------->> dx_MouseClickedArgs::is_ctrl_down( )
    -------->> dx_MouseClickedArgs::is_shift_down( )
    -------->> dx_MouseClickedArgs::get_key_code( )
    -------->> dx_MouseClickedArgs::get_position( )
    
    ---->> dx_MouseReleasedArgs
    -------->> dx_MouseReleasedArgs::~dx_MouseReleasedArgs( )
    -------->> dx_MouseReleasedArgs::is_handled( )
    -------->> dx_MouseReleasedArgs::make_handled( )
    -------->> dx_MouseReleasedArgs::is_ctrl_down( )
    -------->> dx_MouseReleasedArgs::is_shift_down( )
    -------->> dx_MouseReleasedArgs::get_key_code( )
    -------->> dx_MouseReleasedArgs::get_position( )
    
    ---->> dx_ScrollArgs
    -------->> dx_ScrollArgs::~dx_ScrollArgs( )
    -------->> dx_ScrollArgs::is_handled( )
    -------->> dx_ScrollArgs::make_handled( )
    -------->> dx_ScrollArgs::is_ctrl_down( )
    -------->> dx_ScrollArgs::is_shift_down( )
    -------->> dx_ScrollArgs::is_scrolling_up( )
    -------->> dx_ScrollArgs::is_scrolling_down( )
    
    ---->> dx_MessageDataArgs
    -------->> dx_MessageDataArgs::~dx_MessageDataArgs( )
    -------->> dx_MessageDataArgs::is_handled( )
    -------->> dx_MessageDataArgs::make_handled( )
    -------->> dx_MessageDataArgs::get_lparam( )
    -------->> dx_MessageDataArgs::get_wparam( )
    -------->> dx_MessageDataArgs::get_msg_code( )
    
    ---->> dx_Window
    -------->> dx_Window::dx_Window( &arg, &arg1, &arg2, &arg3 )
    -------->> dx_Window::~dx_Window( )
    -------->> dx_Window::get_title( )
    -------->> dx_Window::get_class( )
    -------->> dx_Window::client_to_screen( &arg1 )
    -------->> dx_Window::screen_to_client( &arg1 )
    -------->> dx_Window::hide( )
    -------->> dx_Window::show( )
    -------->> dx_Window::bring_to_top( )
    -------->> dx_Window::minimize( )
    -------->> dx_Window::maximize( )
    -------->> dx_Window::restore( )
    -------->> dx_Window::force_paint( )
    -------->> dx_Window::enable( )
    -------->> dx_Window::disable( )
    -------->> dx_Window::load_icon( &arg1 )
    -------->> dx_Window::load_icon_small( &arg1 )
    -------->> dx_Window::close( )
    -------->> dx_Window::get_parent( )
    -------->> dx_Window::get_painter( )
    -------->> dx_Window::set_painter( &arg1, &arg2 )
    -------->> dx_Window::has_painter( )
    -------->> dx_Window::get_width( )
    -------->> dx_Window::get_height( )
    -------->> dx_Window::is_ctrl_held( )
    -------->> dx_Window::is_shift_held( )
    -------->> dx_Window::is_key_down( &arg1 )
    -------->> dx_Window::handle_tasks( )
    -------->> dx_Window::poll_events( )
    -------->> dx_Window::=( &arg1 )
    -------->> dx_Window::dont_paint_on_event( )
    -------->> dx_Window::paint_on_event( )
    -------->> dx_Window::on_window_resize( &arg1 )
    -------->> dx_Window::on_window_moved( &arg1 )
    -------->> dx_Window::on_paint( &arg1 )
    -------->> dx_Window::on_window_maximize( &arg1 )
    -------->> dx_Window::on_window_minimize( &arg1 )
    -------->> dx_Window::on_window_restored( &arg1 )
    -------->> dx_Window::on_window_closed( &arg1 )
    -------->> dx_Window::on_window_closing( &arg1 )
    -------->> dx_Window::on_mouse_moved( &arg1 )
    -------->> dx_Window::on_mouse_clicked( &arg1 )
    -------->> dx_Window::on_mouse_released( &arg1 )
    -------->> dx_Window::on_mouse_double_clicked( &arg1 )
    -------->> dx_Window::on_mouse_scroll( &arg1 )
    -------->> dx_Window::on_key_down( &arg1 )
    -------->> dx_Window::on_key_up( &arg1 )
    -------->> dx_Window::on_key_down_char( &arg1 )
    -------->> dx_Window::on_handle_message( &arg1 )
    
    ---->> dx_Painter
    -------->> dx_Painter::dx_Painter( &arg )
    -------->> dx_Painter::~dx_Painter( )
    -------->> dx_Painter::reset_painter( &arg1, &arg2 )
    -------->> dx_Painter::begin_paint( )
    -------->> dx_Painter::paint_text( &arg1, &arg2 )
    -------->> dx_Painter::paint_rect( &arg1, &arg2 )
    -------->> dx_Painter::paint_rect_outlined( &arg1, &arg2, &arg3 )
    -------->> dx_Painter::paint_line( &arg1 )
    -------->> dx_Painter::present_paint( )
    -------->> dx_Painter::get_default_font( )
    -------->> dx_Painter::set_default_font( &arg1 )
    -------->> dx_Painter::=( &arg1 )
    
    ---->> thread
    -------->> thread::thread( )
    -------->> thread::~thread( )
    -------->> thread::start( &arg1 )
    -------->> thread::is_running( )
    -------->> thread::wait( &arg1 )
    -------->> thread::suspend( )
    -------->> thread::resume( )
    -------->> thread::kill( )
    -------->> thread::sleep( &arg1 )
    
    ---->> milliseconds
    -------->> milliseconds::milliseconds( &arg )
    -------->> milliseconds::~milliseconds( )
    -------->> milliseconds::count( )
    
    ---->> fstream
    -------->> fstream::fstream( &fname, &ftype )
    -------->> fstream::~fstream( )
    -------->> fstream::close( )
    -------->> fstream::eof( )
    -------->> fstream::getln( )
    -------->> fstream::putln( &input )
    -------->> fstream::put( &input )
    -------->> fstream::<<( &input )
    -------->> fstream::>>( &output )
    
    ---->> ostream
    -------->> ostream::~ostream( )
    -------->> ostream::putln( &input )
    -------->> ostream::put( &input )
    -------->> ostream::<<( &input )
    
    ---->> istream
    -------->> istream::~istream( )
    -------->> istream::getln( )
    -------->> istream::>>( &output )
    
    ---->> std::endl
    -------->> std::endl::~std::endl( )
    Last edited by Yemiez; 10-17-2016 at 03:13 PM.

  6. The Following 3 Users Say Thank You to Yemiez For This Useful Post:

    [MPGH]Hugo Boss (10-17-2016),Hunter (10-23-2016),k3jl7h (10-20-2016)

  7. #4
    Yemiez's Avatar
    Join Date
    Jun 2012
    Gender
    male
    Location
    Sweden
    Posts
    2,566
    Reputation
    731
    Thanks
    16,279
    My Mood
    Devilish
    Working on ep2x0 still, it's taking extra long because I've been ill over the past few days, and as such most of my time goes towards studying so that I don't fall behind in school! 2x0 is ready to be released, however, I don't wanna release it untill I finish the newest revamped version of epcc!

    Preview:
    Last edited by Yemiez; 10-22-2016 at 05:15 PM.

  8. The Following 2 Users Say Thank You to Yemiez For This Useful Post:

    [MPGH]Hugo Boss (10-22-2016),Hunter (10-23-2016)

  9. #5
    Hunter's Avatar
    Join Date
    Dec 2013
    Gender
    male
    Location
    Depths Of My Mind.
    Posts
    17,468
    Reputation
    3771
    Thanks
    6,159
    My Mood
    Cheerful
    /Outdated, closed.

Similar Threads

  1. [Outdated] Expression Parser Release [1x6]
    By Yemiez in forum Coders Lounge
    Replies: 3
    Last Post: 10-10-2016, 06:14 AM
  2. [Outdated] Expression Parser Release [1x5]
    By Yemiez in forum Coders Lounge
    Replies: 3
    Last Post: 10-08-2016, 06:05 AM
  3. [Outdated] Expression Parser Release [1x4]
    By Yemiez in forum Coders Lounge
    Replies: 1
    Last Post: 10-05-2016, 06:12 AM
  4. [Outdated] Expression Parser Release [1x3]
    By Yemiez in forum Coders Lounge
    Replies: 6
    Last Post: 10-05-2016, 05:36 AM
  5. [Outdated] Expression Parser Release [1x2]
    By Yemiez in forum Coders Lounge
    Replies: 1
    Last Post: 10-02-2016, 10:14 AM