File:  [parser3project] / parser3 / src / main / compile.C
Revision 1.69.2.6.2.5: download - view: text, annotated - select for diffs - revision graph
Wed Apr 2 14:16:18 2003 UTC (23 years, 3 months ago) by paf
prepared debug info
todo:use it

/** @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/04/02 14:16:18 $";

#include "pa_opcode.h"
#include "pa_request.h"
#include "compile_tools.h"

extern int yydebug;
extern int yyparse (void *);

VStateless_class& Request::compile(VStateless_class* aclass, const char* source, uint file_no) {
	// prepare to parse
	parse_control pc(*this, aclass, source, file_no);

	// 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_list[file_no].cstr(), 1+pc.line, pc.col,  pc.error);
	}

	// result
	return *pc.cclass;
}

E-mail: