| /*---------------------------------------------------------------------------* |
| * make_g2g.c * |
| * * |
| * Copyright 2007, 2008 Nuance Communciations, Inc. * |
| * * |
| * Licensed under the Apache License, Version 2.0 (the 'License'); * |
| * you may not use this file except in compliance with the License. * |
| * * |
| * You may obtain a copy of the License at * |
| * http://www.apache.org/licenses/LICENSE-2.0 * |
| * * |
| * Unless required by applicable law or agreed to in writing, software * |
| * distributed under the License is distributed on an 'AS IS' BASIS, * |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * |
| * See the License for the specific language governing permissions and * |
| * limitations under the License. * |
| * * |
| *---------------------------------------------------------------------------*/ |
| |
| #include <stdlib.h> |
| |
| #include "pstdio.h" |
| #include "pmemory.h" |
| #include "plog.h" |
| #include "PFile.h" |
| #include "PFileSystem.h" |
| #include "PANSIFileSystem.h" |
| |
| #include "SR_Grammar.h" |
| #include "ESR_CommandLine.h" |
| #include "ESR_Session.h" |
| #include "LCHAR.h" |
| #include "srec_context.h" |
| |
| #define MAX_LINE_LENGTH 256 |
| #define MAX_STR_LENGTH 80 |
| #define MAX_SEM_RESULTS 3 |
| #define MAX_KEYS 30 |
| |
| static void usage(LCHAR* exename) |
| { |
| LFPRINTF(stdout,"usage: %s -base <base grammar filename> [-out <output file>] \n",exename); |
| } |
| |
| int main (int argc, char *argv[]) |
| { |
| SR_Grammar* grammar = NULL; |
| ESR_ReturnCode rc; |
| LCHAR base[P_PATH_MAX]; |
| LCHAR* p; |
| LCHAR outFilename[P_PATH_MAX]; |
| size_t len; |
| |
| /* |
| * Initialize portable library. |
| * Can't use CHKLOG() before plogInit, so use non-portable methods instead. |
| */ |
| CHKLOG(rc, PMemInit()); |
| /* CHKLOG(rc, PFileSystemCreate()); |
| CHKLOG(rc, PANSIFileSystemCreate()); |
| CHKLOG(rc, PANSIFileSystemAddPath(L("/dev/ansi/"), L("/")));*/ |
| CHKLOG(rc, PLogInit(NULL, 3)); |
| |
| /* Set ANSI file-system as default file-system */ |
| /* CHKLOG(rc, PANSIFileSystemSetDefault(ESR_TRUE));*/ |
| /* Set virtual current working directory to native current working directory */ |
| /* len = P_PATH_MAX; |
| CHKLOG(rc, PANSIFileSystemGetcwd(cwd, &len)); |
| CHKLOG(rc, PFileSystemChdir(cwd));*/ |
| |
| len = P_PATH_MAX; |
| rc = ESR_CommandLineGetValue(argc, (const char **)argv, L("base"), base, &len); |
| if (rc==ESR_NO_MATCH_ERROR) |
| { |
| LFPRINTF(stderr, "ERROR: Mandatory option -base is unspecified\n"); |
| return ESR_INVALID_ARGUMENT; |
| } |
| else if (rc!=ESR_SUCCESS) |
| { |
| PLogError(ESR_rc2str(rc)); |
| goto CLEANUP; |
| } |
| |
| len = P_PATH_MAX; |
| rc = ESR_CommandLineGetValue(argc, (const char **)argv, L("out"), outFilename, &len); |
| if (rc==ESR_NO_MATCH_ERROR) |
| { |
| LFPRINTF(stderr, "ERROR: Mandatory option -out is unspecified\n"); |
| return ESR_INVALID_ARGUMENT; |
| } |
| else if (rc!=ESR_SUCCESS) |
| { |
| PLogError(ESR_rc2str(rc)); |
| goto CLEANUP; |
| } |
| |
| if (base==NULL || (LSTRCMP(outFilename, L(""))==0 )) |
| { |
| usage(argv[0]); |
| exit(EXIT_FAILURE); |
| } |
| |
| /* setup the default outfilename if not already set */ |
| if (!outFilename[0]) |
| { |
| LSTRCPY(outFilename,base); |
| /* get rid of the ',addWords=2000' grammar load param */ |
| p = LSTRCHR(outFilename,L(',')); |
| if(p) *p = 0; |
| LSTRCAT(outFilename,L(".g2g")); |
| } |
| |
| LFPRINTF(stdout,"Loading grammar %s from text files...\n",base); |
| CHKLOG(rc, SR_GrammarLoad(base, &grammar)); |
| |
| LFPRINTF(stdout,"Saving grammar as binary image %s...\n",outFilename); |
| CHKLOG(rc, SR_GrammarSave(grammar, outFilename)); |
| |
| LFPRINTF(stdout,"SUCCESS!\n"); |
| |
| CLEANUP: |
| |
| if (grammar) |
| grammar->destroy(grammar); |
| PLogShutdown(); |
| /* PANSIFileSystemDestroy(); |
| PFileSystemDestroy();*/ |
| PMemShutdown(); |
| return rc; |
| } |