|
|
| version 1.69.2.6.2.5, 2003/04/02 14:16:18 | version 1.69.2.6.2.6, 2003/04/02 16:05:19 |
|---|---|
| Line 16 extern int yyparse (void *); | Line 16 extern int yyparse (void *); |
| VStateless_class& Request::compile(VStateless_class* aclass, const char* source, uint file_no) { | VStateless_class& Request::compile(VStateless_class* aclass, const char* source, uint file_no) { |
| // prepare to parse | // prepare to parse |
| parse_control pc(*this, aclass, source, file_no); | Parse_control pc(*this, aclass, source, file_no); |
| // parse=compile! | // parse=compile! |
| //yydebug=1; | //yydebug=1; |
| if(yyparse(&pc)) { // error? | if(yyparse(&pc)) { // error? |
| if(pc.col==0) { // expecting something after EOL means they've expected it BEFORE | if(pc.pos.col==0) { // expecting something after EOL means they've expected it BEFORE |
| // step back. -1 col means EOL | // step back. -1 col means EOL |
| pc.line--; | pc.pos.line--; |
| pc.col=-1; | pc.pos.col=-1; |
| } | } |
| throw Exception("parser.compile", | throw Exception("parser.compile", |
| 0, | 0, |
| "%s(%d:%d): %s", file_list[file_no].cstr(), 1+pc.line, pc.col, pc.error); | "%s(%d:%d): %s", file_list[file_no].cstr(), 1+pc.pos.line, pc.pos.col, pc.error); |
| } | } |
| // result | // result |