From 7447dd9d492214d785c998df0f230540664a631b Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Wed, 20 Jun 2007 22:29:00 +0000 Subject: [PATCH] Recovered from cvs revision 2007-06-20 13:28:00 --- ase/change.log | 6 ++++- ase/test/awk/Awk.cpp | 53 +++++++++++++++++++++++++++++++++++--------- ase/test/awk/awk.c | 12 +++++----- 3 files changed, 53 insertions(+), 18 deletions(-) diff --git a/ase/change.log b/ase/change.log index 761f45c2..0aee8e9c 100644 --- a/ase/change.log +++ b/ase/change.log @@ -1,8 +1,12 @@ [0.2.1] -* changed the wrong macro name WIN32 to _WIN32 in utl/stdio.h * added ase_awk_setword to enable customization of keywords and intrinsic function names. +* added setWord method to the awk c++ class. + +* changed the wrong macro name WIN32 to _WIN32 in utl/stdio.h +* changed test/awk/Awk.cpp to include an option(-w) to utilize + the setWord method. [0.2.0] diff --git a/ase/test/awk/Awk.cpp b/ase/test/awk/Awk.cpp index ca8595bd..74849c78 100644 --- a/ase/test/awk/Awk.cpp +++ b/ase/test/awk/Awk.cpp @@ -1,5 +1,5 @@ /* - * $Id: Awk.cpp,v 1.25 2007/06/16 14:09:48 bacon Exp $ + * $Id: Awk.cpp,v 1.27 2007/06/20 04:22:21 bacon Exp $ */ #include @@ -472,7 +472,7 @@ static void print_usage (const ase_char_t* argv0) if (base == ASE_NULL) base = ase_strrchr(argv0, ASE_T('\\')); if (base == ASE_NULL) base = argv0; else base++; - ase_printf (ASE_T("Usage: %s [-m main] [-si file]? [-so file]? [-ci file]* [-co file]* [-a arg]*\n"), base); + ase_printf (ASE_T("Usage: %s [-m main] [-si file]? [-so file]? [-ci file]* [-co file]* [-a arg]* [-w o:n]* \n"), base); ase_printf (ASE_T(" -m main Specify the main function name\n")); ase_printf (ASE_T(" -si file Specify the input source file\n")); ase_printf (ASE_T(" The source code is read from stdin when it is not specified\n")); @@ -481,6 +481,9 @@ static void print_usage (const ase_char_t* argv0) ase_printf (ASE_T(" -ci file Specify the input console file\n")); ase_printf (ASE_T(" -co file Specify the output console file\n")); ase_printf (ASE_T(" -a str Specify an argument\n")); + ase_printf (ASE_T(" -w o:n Specify an old and new word pair\n")); + ase_printf (ASE_T(" o - an original word\n")); + ase_printf (ASE_T(" n - the new word to replace the original\n")); } int awk_main (int argc, ase_char_t* argv[]) @@ -495,6 +498,12 @@ int awk_main (int argc, ase_char_t* argv[]) ase_size_t nsrcins = 0; ase_size_t nsrcouts = 0; + if (awk.open() == -1) + { + ase_fprintf (stderr, ASE_T("cannot open awk\n")); + return -1; + } + for (int i = 1; i < argc; i++) { if (mode == 0) @@ -505,6 +514,7 @@ int awk_main (int argc, ase_char_t* argv[]) else if (ase_strcmp(argv[i], ASE_T("-co")) == 0) mode = 4; else if (ase_strcmp(argv[i], ASE_T("-a")) == 0) mode = 5; else if (ase_strcmp(argv[i], ASE_T("-m")) == 0) mode = 6; + else if (ase_strcmp(argv[i], ASE_T("-w")) == 0) mode = 7; else { print_usage (argv[0]); @@ -574,7 +584,7 @@ int awk_main (int argc, ase_char_t* argv[]) args[nargs++] = argv[i]; mode = 0; } - else if (mode == 6) + else if (mode == 6) // entry point { if (mainfn != NULL) { @@ -585,25 +595,42 @@ int awk_main (int argc, ase_char_t* argv[]) mainfn = argv[i]; mode = 0; } + else if (mode == 7) // word replacement + { + const ase_char_t* p; + ase_size_t l; + + p = ase_strchr(argv[i], ASE_T(':')); + if (p == ASE_NULL) + { + print_usage (argv[0]); + return -1; + } + + l = ase_strlen (argv[i]); + + awk.setWord ( + argv[i], p - argv[i], + p + 1, l - (p - argv[i] + 1)); + + mode = 0; + } } } if (mode != 0) { print_usage (argv[0]); + awk.close (); return -1; } - if (awk.open() == -1) - { - ase_fprintf (stderr, ASE_T("cannot open awk\n")); - return -1; - } if (awk.parse (srcin, srcout) == -1) { ase_fprintf (stderr, ASE_T("cannot parse: LINE[%d] %s\n"), awk.getErrorLine(), awk.getErrorMessage()); + awk.close (); return -1; } @@ -613,9 +640,11 @@ int awk_main (int argc, ase_char_t* argv[]) { ase_fprintf (stderr, ASE_T("cannot run: LINE[%d] %s\n"), awk.getErrorLine(), awk.getErrorMessage()); + awk.close (); return -1; } + awk.close (); return 0; } @@ -627,6 +656,10 @@ extern "C" int ase_main (int argc, ase_achar_t* argv[]) #if defined(__linux) && defined(_DEBUG) mtrace (); #endif +#if defined(_WIN32) && defined(_DEBUG) && defined(_MSC_VER) + _CrtSetDbgFlag (_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF); +#endif + n = ase_runmain (argc,argv,awk_main); @@ -634,9 +667,9 @@ extern "C" int ase_main (int argc, ase_achar_t* argv[]) muntrace (); #endif #if defined(_WIN32) && defined(_DEBUG) - #if defined(_MSC_VER) + /* #if defined(_MSC_VER) _CrtDumpMemoryLeaks (); - #endif + #endif */ _tprintf (_T("Press ENTER to quit\n")); getchar (); #endif diff --git a/ase/test/awk/awk.c b/ase/test/awk/awk.c index e091cab6..658accb6 100644 --- a/ase/test/awk/awk.c +++ b/ase/test/awk/awk.c @@ -1,5 +1,5 @@ /* - * $Id: awk.c,v 1.11 2007/06/17 15:29:29 bacon Exp $ + * $Id: awk.c,v 1.12 2007/06/20 03:48:02 bacon Exp $ */ #include @@ -1152,11 +1152,9 @@ int ase_main (int argc, ase_achar_t* argv[]) #if defined(__linux) && defined(_DEBUG) mtrace (); #endif -/* -#if defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG) - _CrtSetDbgFlag (_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_ALWAYS_DF); +#if defined(_WIN32) && defined(_DEBUG) && defined(_MSC_VER) + _CrtSetDbgFlag (_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF); #endif -*/ n = ase_runmain (argc, argv, awk_main); @@ -1164,9 +1162,9 @@ int ase_main (int argc, ase_achar_t* argv[]) muntrace (); #endif #if defined(_WIN32) && defined(_DEBUG) - #if defined(_MSC_VER) + /*#if defined(_MSC_VER) _CrtDumpMemoryLeaks (); - #endif + #endif*/ _tprintf (_T("Press ENTER to quit\n")); getchar (); #endif