/** @file
Parser: compiler part of request class.
Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com)
Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
*/
static const char* IDENT_COMPILE_C="$Date: 2003/03/21 13:42:29 $";
#include "pa_opcode.h"
#include "pa_request.h"
#include "compile_tools.h"
extern int yydebug;
extern int yyparse (void *);
VStateless_class& Request::real_compile(VStateless_class* aclass, const char* source, const char* file) {
// prepare to parse
parse_control pc(*this, aclass, source, file);
// parse=compile!
//yydebug=1;
if(yyparse(&pc)) { // error?
if(pc.col==0) { // expecting something after EOL means they've expected it BEFORE
// step back. -1 col means EOL
pc.line--;
pc.col=-1;
}
throw Exception("parser.compile",
0,
"%s(%d:%d): %s", file, 1+pc.line, pc.col, pc.error);
}
// result
return *pc.cclass;
}
E-mail: