|
|
| version 1.61, 2002/02/19 14:19:50 | version 1.67, 2002/10/14 15:22:42 |
|---|---|
| Line 3 | Line 3 |
| Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com) | Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com) |
| Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) | Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) |
| $Id$ | |
| */ | */ |
| static const char* IDENT_COMPILE_C="$Date$"; | |
| #include "pa_opcode.h" | #include "pa_opcode.h" |
| #include "pa_request.h" | #include "pa_request.h" |
| #include "pa_string.h" | #include "pa_string.h" |
| Line 25 VStateless_class& Request::real_compile( | Line 25 VStateless_class& Request::real_compile( |
| pc.pool=&pool(); | pc.pool=&pool(); |
| pc.request=this; | pc.request=this; |
| VStateless_class *cclass; | VStateless_class *cclass; |
| if(aclass) // we were told the class to compile to? | // we were told the class to compile to? |
| cclass=aclass; // yes, remember it [used in ^process] | pc.cclass=&aclass; // until changed with @CLASS would consider operators loading |
| else if(name) { // we were told the name of compiled class? | |
| // yes. create it | |
| cclass=NEW VClass(pool()); | |
| // defaulting base. may change with @BASE | |
| // dont use ?: for there would be getting & of temp object | |
| if(base_class) | |
| cclass->set_base(*base_class); | |
| classes().put(*name, cclass); | |
| cclass->set_name(*name); | |
| } else | |
| cclass=&OP; // until changed with @CLASS would consider operators loading | |
| pc.cclass=cclass; | |
| pc.source=source; | pc.source=source; |
| #ifndef NO_STRING_ORIGIN | #ifndef NO_STRING_ORIGIN |
| Line 62 VStateless_class& Request::real_compile( | Line 50 VStateless_class& Request::real_compile( |
| pc.line--; | pc.line--; |
| pc.col=-1; | pc.col=-1; |
| } | } |
| throw Exception(0,0, | throw Exception("parser.compile", |
| 0, | 0, |
| "%s(%d:%d): %s", | "%s(%d:%d): %s", file, 1+pc.line, pc.col, pc.error); |
| file, 1+pc.line, pc.col, | |
| pc.error); | |
| } | } |
| // result | // result |