Annotation of parser3/src/main/compile.C, revision 1.89
1.32 paf 1: /** @file
1.33 paf 2: Parser: compiler part of request class.
3:
1.89 ! moko 4: Copyright (c) 2001-2024 Art. Lebedev Studio (http://www.artlebedev.com)
1.88 moko 5: Authors: Konstantin Morshnev <moko@design.ru>, Alexandr Petrosian <paf@design.ru>
1.64 paf 6: */
1.33 paf 7:
1.89 ! moko 8: volatile const char * IDENT_COMPILE_C="$Id: compile.C,v 1.88 2023/09/26 20:49:09 moko Exp $";
1.1 paf 9:
1.10 paf 10: #include "pa_request.h"
1.1 paf 11: #include "compile_tools.h"
12:
13: extern int yydebug;
1.83 moko 14: extern int yyparse (Parse_control *);
1.1 paf 15:
1.84 moko 16: ArrayClass& Request::compile(VStateless_class* aclass, const char* source, const String* main_alias, uint file_no, int line_no_offset) {
1.7 paf 17: // prepare to parse
1.73 paf 18: Parse_control pc(*this, aclass, source, main_alias, file_no, line_no_offset);
1.10 paf 19:
1.12 paf 20: // parse=compile!
1.60 paf 21: //yydebug=1;
1.10 paf 22: if(yyparse(&pc)) { // error?
1.70 paf 23: pc.pos_prev_c();
1.75 paf 24: if(!pc.explicit_result)
25: if(pc.pos.col==0) // expecting something after EOL means they've expected it BEFORE
26: pc.pos_prev_c();
1.70 paf 27:
1.84 moko 28: exception_trace.push(Trace(0, Operation::Origin::create(file_no, pc.pos.line, pc.pos.col)));
29: throw Exception("parser.compile", 0, "%s", pc.error);
1.8 paf 30: }
1.7 paf 31:
32: // result
1.79 misha 33: return *pc.cclasses;
1.1 paf 34: }
E-mail: