--- parser3/src/targets/parser/Attic/parser.C 2001/01/30 11:52:22 1.1 +++ parser3/src/targets/parser/Attic/parser.C 2001/01/30 13:07:31 1.2 @@ -1,15 +1,15 @@ /* - $Id: parser.C,v 1.1 2001/01/30 11:52:22 paf Exp $ + $Id: parser.C,v 1.2 2001/01/30 13:07:31 paf Exp $ */ #include #include -#include "pa_pool.h" #include "pa_hash.h" #include "pa_array.h" #include "pa_table.h" #include "pa_common.h" +#include "pool.h" char *itoa(int n, char *buf){ snprintf(buf,MAX_STRING,"%d",n); @@ -17,76 +17,76 @@ char *itoa(int n, char *buf){ } int main(int argc, char *argv[]) { - parser_Pool pool; - - char *file="file1"; - String& string=pool.make_string(); - string.APPEND("Hello, ", file, 1); - string.APPEND("w", file, 2); - string.APPEND("o", file, 3); - string.APPEND("r", file, 4); - string.APPEND("l", file, 5); - string.APPEND("d", file, 6); - string.APPEND("!\n ", file, 7); - printf(string.cstr()); - - char *key1_file="key1_file"; - Hash& hash=pool.make_hash(); - String key1=string; - key1.APPEND("1", key1_file, 1); - String& value1=pool.make_string(); - value1.APPEND("i'm value1\n", file, 1); - String& value2=pool.make_string(); - value2.APPEND("i'm value2\n", file, 1); - hash.put(key1, &value1); - char *key2_file="key2_file"; - String key2=string; - key2.APPEND("2", key2_file, 1); - hash.put(key2, &value2); - String *found_value=(String*)hash.get(key2); - printf(found_value?found_value->cstr():"not found\n"); - - String& a=pool.make_string(); a.APPEND("fi", file, 1); a.APPEND("rst", file, 2); - String& b=pool.make_string(); b.APPEND("fir", file, 1); b.APPEND("st", file, 2); - printf(a==b?"eq\n":"ne\n"); - - - Array& array=pool.make_array(2); - array+="first"; - array+="second"; - array+="third"; - printf("%s-%s-%s\n", + Exception fatal_exception; + if(EXCEPTION_TRY(fatal_exception)) { + parser_Pool pool(fatal_exception); + + char *file="file1"; + String& string=pool.make_string(); + string.APPEND("Hello, ", file, 1); + string.APPEND("w", file, 2); + string.APPEND("o", file, 3); + string.APPEND("r", file, 4); + string.APPEND("l", file, 5); + string.APPEND("d", file, 6); + string.APPEND("!\n ", file, 7); + printf(string.cstr()); + + char *key1_file="key1_file"; + Hash& hash=pool.make_hash(); + String key1=string; + key1.APPEND("1", key1_file, 1); + String& value1=pool.make_string(); + value1.APPEND("i'm value1\n", file, 1); + String& value2=pool.make_string(); + value2.APPEND("i'm value2\n", file, 1); + hash.put(key1, &value1); + char *key2_file="key2_file"; + String key2=string; + key2.APPEND("2", key2_file, 1); + hash.put(key2, &value2); + String *found_value=(String*)hash.get(key2); + printf(found_value?found_value->cstr():"not found\n"); + + String& a=pool.make_string(); a.APPEND("fi", file, 1); a.APPEND("rst", file, 2); + String& b=pool.make_string(); b.APPEND("fir", file, 1); b.APPEND("st", file, 2); + printf(a==b?"eq\n":"ne\n"); + + + Array& array=pool.make_array(2); + array+="first"; + array+="second"; + array+="third"; + printf("%s-%s-%s\n", array.get_cstr(0), array.get_cstr(1), array.get_cstr(2)); - - Array& a1=pool.make_array(); - a1+="first"; - Array& a2=pool.make_array(); - a2+="second"; - Array& asum=pool.make_array(); - asum.append_array(a1); - asum.append_array(a2); - printf("%s-%s\n", + + Array& a1=pool.make_array(); + a1+="first"; + Array& a2=pool.make_array(); + a2+="second"; + Array& asum=pool.make_array(); + asum.append_array(a1); + asum.append_array(a2); + printf("%s-%s\n", asum.get_cstr(0), asum.get_cstr(1)); - parser_Pool request_pool; - Request request(&request_pool); - Exception global_exception; - request.pool.set_global_exception(&global_exception); - if(EXCEPTION_TRY(request.pool.global_exception())) { - Exception local_exception; - request.pool.set_local_exception(&local_exception); - if(EXCEPTION_TRY(request.pool.local_exception())) { - Array acolumns(request.pool); + parser_Pool request_pool(fatal_exception); + Request request(request_pool); + + Exception operator_exception; + Local_request_exception subst(request, operator_exception); + if(EXCEPTION_TRY(request.exception())) { + Array acolumns(request.pool()); acolumns+="id"; acolumns+="name"; acolumns+="age"; Table named_table(request, "_file.cfg", 1, &acolumns); for(int n=1; n<=5; n++) { - Array& row=request.pool.make_array(named_table.columns()->size()); - char *buf=static_cast(request.pool.malloc(MAX_STRING)); + Array& row=request.pool().make_array(named_table.columns()->size()); + char *buf=static_cast(request.pool().malloc(MAX_STRING)); row+=itoa(n, buf); row+="paf"; row+="99"; @@ -98,15 +98,15 @@ int main(int argc, char *argv[]) { printf("%s\t", named_table.columns()->get_cstr(i)); printf("\n"); for(named_table.set_current(0); named_table.get_current()size(); i++) { - //String name(request.pool); - //char *buf=static_cast(request.pool.malloc(MAX_STRING)); + //String name(request.pool()); + //char *buf=static_cast(request.pool().malloc(MAX_STRING)); //name.APPEND(itoa(i, buf), "names file", 0); //name.APPEND("id", "names file", 0); //named_table.read_item(line, name); const char *cstr_name=named_table.columns()->get_cstr(i); - String name(request.pool); + String name(request.pool()); name.APPEND(cstr_name, 0, 0); named_table.read_item(line, name); line.APPEND("\t", 0, 0); @@ -115,25 +115,26 @@ int main(int argc, char *argv[]) { } } else { printf("operator_error occured: \n"); - const String *problem_source=request.operator_error.problem_source(); + Exception& e=request.exception(); + const String *type=e.type(); + if(type) { + printf(" type: %s", type->cstr()); + const String *code=e.code(); + if(code) + printf(", code: %s", code->cstr()); + printf("\n"); + } + const String *problem_source=e.problem_source(); if(problem_source) { const Origin& origin=problem_source->origin(); printf(" origin: '%s', file '%s', line %d\n", problem_source->cstr(), origin.file, origin.line); } - printf(" comment: %s\n", request.operator_error.comment()); + printf(" comment: %s\n", e.comment()); } } else { - printf("request_error occured: \n"); - const String *problem_source=request.request_error.problem_source(); - if(problem_source) { - const Origin& origin=problem_source->origin(); - printf(" origin: '%s', file '%s', line %d\n", - problem_source->cstr(), - origin.file, origin.line); - } - printf(" comment: %s\n", request.request_error.comment()); + printf("fatal exception occured: %s\n", fatal_exception.comment()); } return 0;