27 #include "UdtLibGrammar.h"
43 char caInputString[uiBufferSize];
49 apg_uint uiaRuleAstNodes[RULE_COUNT_UDTLIBGRAMMAR];
50 apg_uint uiaUdtAstNodes[UDT_COUNT_UDTLIBGRAMMAR];
51 APG_CALLBACK saUdtSyntaxCallbacks[UDT_COUNT_UDTLIBGRAMMAR];
52 void* vpParser = NULL;
53 char* cpOutFile =
"UdtLib.output";
56 char caStatsBuffer[uiStatsBufferSize];
60 printf(
"%s - output redirect file for Demonstration UdtLib\n", cpOutFile);
61 spOut = fopen(cpOutFile,
"w");
64 fprintf(spOut,
"*** LICENSE NOTICE ***\n");
67 fprintf(spOut,
"\n*** DEMO UDTLIB ***\n");
68 fprintf(spOut,
" Tests all functions in the UDT library &\n");
69 fprintf(spOut,
" demonstrates how they are implemented in an application.\n");
72 fprintf(spOut,
"\n*** TYPE SIZES ***\n");
76 fprintf(spOut,
"\n*** GRAMMAR INFORMATION ***\n");
107 for(; i < RULE_COUNT_UDTLIBGRAMMAR; i++){
110 uiaRuleAstNodes[RULE_UDTLIBGRAMMAR_FILE] =
APG_TRUE;
111 uiaRuleAstNodes[RULE_UDTLIBGRAMMAR_BLANKLINE] =
APG_TRUE;
112 uiaRuleAstNodes[RULE_UDTLIBGRAMMAR_LINE] =
APG_TRUE;
113 uiaRuleAstNodes[RULE_UDTLIBGRAMMAR_LINEALPHA] =
APG_TRUE;
114 uiaRuleAstNodes[RULE_UDTLIBGRAMMAR_LINEHYPHEN] =
APG_TRUE;
115 uiaRuleAstNodes[RULE_UDTLIBGRAMMAR_LINEUNDER] =
APG_TRUE;
116 uiaRuleAstNodes[RULE_UDTLIBGRAMMAR_LINEERROR] =
APG_TRUE;
117 uiaRuleAstNodes[RULE_UDTLIBGRAMMAR_NUMBER] =
APG_TRUE;
118 uiaRuleAstNodes[RULE_UDTLIBGRAMMAR_COMMENT] =
APG_TRUE;
119 for(; i < UDT_COUNT_UDTLIBGRAMMAR; i++){
126 memset((
void*)&caInputString[0], 0, uiBufferSize);
129 strcat(caInputString,
"\n");
130 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
133 strcat(caInputString,
" \r\n");
134 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
137 strcat(caInputString,
" \r");
138 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
141 strcat(caInputString,
"; semi comment using CR line end\r");
142 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
145 strcat(caInputString,
"// C++ comment using CRLF line end\r\n");
146 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
149 strcat(caInputString,
"/* C comment using LF line end */\n");
150 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
153 strcat(caInputString,
"/* multi-line C comment \n");
154 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
155 strcat(caInputString,
"continuing multi-line C comment \n");
156 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
157 strcat(caInputString,
" end of multi-line C comment */\n");
158 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
161 strcat(caInputString,
"\n// alphanum named line\n");
162 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
163 strcat(caInputString,
"john = \'John Doe\'\n");
164 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
165 strcat(caInputString,
"mary-jane = \"Mary Jane\"\n");
166 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
167 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
168 strcat(caInputString,
"jimmy_bob = \"Jimmy Bob\"\n");
169 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
172 strcat(caInputString,
"\n// test decimal numbers\n");
173 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
174 strcat(caInputString,
"number = 123456789\n");
175 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
176 strcat(caInputString,
"hexi-decimal = 0x1234ABCD\n");
177 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
178 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
179 strcat(caInputString,
"multiple_numbers = 123 0xabCD 567 0x1a2A3b4cdEF \n");
180 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
182 strcat(caInputString,
"\n");
183 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
185 strcat(caInputString,
"; end of test\n");
186 if(strlen(caInputString) >= uiBufferSize){
vTerminalAlert(__LINE__, __FILE__);}
187 uiStrLen = strlen(caInputString);
193 vCharToAChar(&acaParserString[0], &caInputString[0], uiStrLen);
209 fprintf(spOut,
"\n*** PARSER STATE ***\n");
215 if(uiTest <= uiStatsBufferSize){
217 fprintf(spOut,
"\n*** PARSER STATISTICS ***\n");
221 fprintf(spOut,
"\n*** NO PARSER STATISTICS: insufficient buffer size: needed: %lu: have: %lu\n",
227 fprintf(spOut,
"\n*** AST NODES AND PHRASES ***\n");
230 fprintf(spOut,
"\n*** DEMO UDTLIB - test ended successfully ***\n");