static Function* current_function = 0;
static Type* current_type = 0;
static Field* current_field = 0;
-static ClassMember::Visbility current_visibility;
+static ClassMember::Visibility current_visibility;
class ParseError : public std::exception
{
public:
- ParseError(const std::string& message) throw()
+ ParseError(const std::string& message) throw() :
+ message()
{
std::ostringstream msg;
msg << "Parse error in '" << current_file
%token T_BOOL
%token T_CHAR
%token T_SHORT
-%token T_INT
%token T_LONG
-%token T_FLOAT
%token T_DOUBLE
%token T_PUBLIC
%token T_PROTECTED
function_attributes:
/* empty */
| T_CONST function_attributes
- | T_CUSTOM function_attributes
+ | T_CUSTOM '(' T_STRING ')' function_attributes
{
+ current_function->parameter_spec = $3;
current_function->custom = true;
}
| T_SUSPEND function_attributes
%%
+__attribute__((noreturn))
void yyerror(const char* error)
{
throw ParseError(error);