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
Version 1x8
Version 1x9
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.
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.
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.
Yamiez.

