1+ using DescribeCompiler . Compiler . Optimizers ;
2+ using DescribeCompiler . Compiler . Preprocessors ;
3+ using System ;
4+
5+ namespace DescribeCompiler
6+ {
7+ public partial class DescribeCompiler
8+ {
9+ /// <summary>
10+ /// Ctor.
11+ /// </summary>
12+ public DescribeCompiler ( )
13+ {
14+ LogText = log ;
15+ LogError = log ;
16+ LogInfo = log ;
17+ LogParserInfo = log ;
18+
19+ switch ( DEFAULT_GRAMMAR )
20+ {
21+ case GrammarName . Basic :
22+ Optimizer = new OptimizerForDescribe06 ( ) ;
23+ Preprocessor = new PreprocessorForDescribe06 ( ) ;
24+ break ;
25+ case GrammarName . Tags :
26+ Optimizer = new OptimizerForDescribe07 ( ) ;
27+ Preprocessor = new PreprocessorForDescribe07 ( ) ;
28+ break ;
29+ case GrammarName . Links :
30+ Optimizer = new OptimizerForDescribe08 ( ) ;
31+ Preprocessor = new PreprocessorForDescribe08 ( ) ;
32+ break ;
33+ case GrammarName . Decorators :
34+ Optimizer = new OptimizerForDescribe09 ( ) ;
35+ Preprocessor = new PreprocessorForDescribe09 ( ) ;
36+ break ;
37+ case GrammarName . Official :
38+ default :
39+ Optimizer = new DefaultOptimizer ( ) ;
40+ Preprocessor = new PreprocessorForDescribe10 ( ) ;
41+ break ;
42+ }
43+
44+
45+ initializeCompiler ( LogVerbosity . High ) ;
46+ }
47+
48+ /// <summary>
49+ /// Ctor.
50+ /// </summary>
51+ /// <param name="verbosity">The logging verbosity of the parser</param>
52+ public DescribeCompiler (
53+ LogVerbosity verbosity )
54+ {
55+ LogText = log ;
56+ LogError = log ;
57+ LogInfo = log ;
58+ LogParserInfo = log ;
59+
60+ switch ( DEFAULT_GRAMMAR )
61+ {
62+ case GrammarName . Basic :
63+ Optimizer = new OptimizerForDescribe06 ( ) ;
64+ Preprocessor = new PreprocessorForDescribe06 ( ) ;
65+ break ;
66+ case GrammarName . Tags :
67+ Optimizer = new OptimizerForDescribe07 ( ) ;
68+ Preprocessor = new PreprocessorForDescribe07 ( ) ;
69+ break ;
70+ case GrammarName . Links :
71+ Optimizer = new OptimizerForDescribe08 ( ) ;
72+ Preprocessor = new PreprocessorForDescribe08 ( ) ;
73+ break ;
74+ case GrammarName . Decorators :
75+ Optimizer = new OptimizerForDescribe09 ( ) ;
76+ Preprocessor = new PreprocessorForDescribe09 ( ) ;
77+ break ;
78+ case GrammarName . Official :
79+ default :
80+ Optimizer = new DefaultOptimizer ( ) ;
81+ Preprocessor = new PreprocessorForDescribe10 ( ) ;
82+ break ;
83+ }
84+
85+ initializeCompiler ( verbosity ) ;
86+ }
87+
88+ /// <summary>
89+ /// Ctor.
90+ /// </summary>
91+ /// <param name="verbosity">The logging verbosity of the parser</param>
92+ /// <param name="logText">method to log text</param>
93+ public DescribeCompiler (
94+ LogVerbosity verbosity ,
95+ Action < string > logText )
96+ {
97+ LogText = log ;
98+ LogText += logText ;
99+
100+ LogError = log ;
101+ LogInfo = log ;
102+ LogParserInfo = log ;
103+
104+ switch ( DEFAULT_GRAMMAR )
105+ {
106+ case GrammarName . Basic :
107+ Optimizer = new OptimizerForDescribe06 ( ) ;
108+ Preprocessor = new PreprocessorForDescribe06 ( ) ;
109+ break ;
110+ case GrammarName . Tags :
111+ Optimizer = new OptimizerForDescribe07 ( ) ;
112+ Preprocessor = new PreprocessorForDescribe07 ( ) ;
113+ break ;
114+ case GrammarName . Links :
115+ Optimizer = new OptimizerForDescribe08 ( ) ;
116+ Preprocessor = new PreprocessorForDescribe08 ( ) ;
117+ break ;
118+ case GrammarName . Decorators :
119+ Optimizer = new OptimizerForDescribe09 ( ) ;
120+ Preprocessor = new PreprocessorForDescribe09 ( ) ;
121+ break ;
122+ case GrammarName . Official :
123+ default :
124+ Optimizer = new DefaultOptimizer ( ) ;
125+ Preprocessor = new PreprocessorForDescribe10 ( ) ;
126+ break ;
127+ }
128+
129+ initializeCompiler ( verbosity ) ;
130+ }
131+
132+ /// <summary>
133+ /// Ctor.
134+ /// </summary>
135+ /// <param name="verbosity">The logging verbosity of the parser</param>
136+ /// <param name="logText">method to log text<</param>
137+ /// <param name="logError">method to log errors<</param>
138+ public DescribeCompiler (
139+ LogVerbosity verbosity ,
140+ Action < string > logText ,
141+ Action < string > logError )
142+ {
143+ LogText = log ;
144+ LogText += logText ;
145+
146+ LogError = log ;
147+ LogError += logError ;
148+
149+ LogInfo = log ;
150+ LogParserInfo = log ;
151+
152+ switch ( DEFAULT_GRAMMAR )
153+ {
154+ case GrammarName . Basic :
155+ Optimizer = new OptimizerForDescribe06 ( ) ;
156+ Preprocessor = new PreprocessorForDescribe06 ( ) ;
157+ break ;
158+ case GrammarName . Tags :
159+ Optimizer = new OptimizerForDescribe07 ( ) ;
160+ Preprocessor = new PreprocessorForDescribe07 ( ) ;
161+ break ;
162+ case GrammarName . Links :
163+ Optimizer = new OptimizerForDescribe08 ( ) ;
164+ Preprocessor = new PreprocessorForDescribe08 ( ) ;
165+ break ;
166+ case GrammarName . Decorators :
167+ Optimizer = new OptimizerForDescribe09 ( ) ;
168+ Preprocessor = new PreprocessorForDescribe09 ( ) ;
169+ break ;
170+ case GrammarName . Official :
171+ default :
172+ Optimizer = new DefaultOptimizer ( ) ;
173+ Preprocessor = new PreprocessorForDescribe10 ( ) ;
174+ break ;
175+ }
176+
177+ initializeCompiler ( verbosity ) ;
178+ }
179+
180+ /// <summary>
181+ /// Ctor.
182+ /// </summary>
183+ /// <param name="verbosity">The logging verbosity of the parser</param>
184+ /// <param name="logText">method to log text</param>
185+ /// <param name="logError">method to log errors</param>
186+ /// <param name="logInfo">method to log less important info</param>
187+ public DescribeCompiler (
188+ LogVerbosity verbosity ,
189+ Action < string > logText ,
190+ Action < string > logError ,
191+ Action < string > logInfo )
192+ {
193+ LogText = log ;
194+ LogText += logText ;
195+
196+ LogError = log ;
197+ LogError += logError ;
198+
199+ LogInfo = log ;
200+ LogInfo += logInfo ;
201+
202+ LogParserInfo = log ;
203+
204+ switch ( DEFAULT_GRAMMAR )
205+ {
206+ case GrammarName . Basic :
207+ Optimizer = new OptimizerForDescribe06 ( ) ;
208+ Preprocessor = new PreprocessorForDescribe06 ( ) ;
209+ break ;
210+ case GrammarName . Tags :
211+ Optimizer = new OptimizerForDescribe07 ( ) ;
212+ Preprocessor = new PreprocessorForDescribe07 ( ) ;
213+ break ;
214+ case GrammarName . Links :
215+ Optimizer = new OptimizerForDescribe08 ( ) ;
216+ Preprocessor = new PreprocessorForDescribe08 ( ) ;
217+ break ;
218+ case GrammarName . Decorators :
219+ Optimizer = new OptimizerForDescribe09 ( ) ;
220+ Preprocessor = new PreprocessorForDescribe09 ( ) ;
221+ break ;
222+ case GrammarName . Official :
223+ default :
224+ Optimizer = new DefaultOptimizer ( ) ;
225+ Preprocessor = new PreprocessorForDescribe10 ( ) ;
226+ break ;
227+ }
228+
229+ initializeCompiler ( verbosity ) ;
230+ }
231+
232+ /// <summary>
233+ /// Ctor.
234+ /// </summary>
235+ /// <param name="verbosity">The logging verbosity of the parser</param>
236+ /// <param name="logText">method to log text</param>
237+ /// <param name="logError">method to log errors</param>
238+ /// <param name="logInfo">method to log less important info</param>
239+ /// <param name="logParserInfo">method to log parser output</param>
240+ public DescribeCompiler (
241+ LogVerbosity verbosity ,
242+ Action < string > logText ,
243+ Action < string > logError ,
244+ Action < string > logInfo ,
245+ Action < string > logParserInfo )
246+ {
247+ LogText = log ;
248+ LogText += logText ;
249+
250+ LogError = log ;
251+ LogError += logError ;
252+
253+ LogInfo = log ;
254+ LogInfo += logInfo ;
255+
256+ LogParserInfo = log ;
257+ LogParserInfo += logParserInfo ;
258+
259+ switch ( DEFAULT_GRAMMAR )
260+ {
261+ case GrammarName . Basic :
262+ Optimizer = new OptimizerForDescribe06 ( ) ;
263+ Preprocessor = new PreprocessorForDescribe06 ( ) ;
264+ break ;
265+ case GrammarName . Tags :
266+ Optimizer = new OptimizerForDescribe07 ( ) ;
267+ Preprocessor = new PreprocessorForDescribe07 ( ) ;
268+ break ;
269+ case GrammarName . Links :
270+ Optimizer = new OptimizerForDescribe08 ( ) ;
271+ Preprocessor = new PreprocessorForDescribe08 ( ) ;
272+ break ;
273+ case GrammarName . Decorators :
274+ Optimizer = new OptimizerForDescribe09 ( ) ;
275+ Preprocessor = new PreprocessorForDescribe09 ( ) ;
276+ break ;
277+ case GrammarName . Official :
278+ default :
279+ Optimizer = new DefaultOptimizer ( ) ;
280+ Preprocessor = new PreprocessorForDescribe10 ( ) ;
281+ break ;
282+ }
283+
284+ initializeCompiler ( verbosity ) ;
285+ }
286+
287+
288+
289+ private void initializeCompiler ( LogVerbosity verbosity )
290+ {
291+ LogInfo ( "Initializing " + COMPILER_NAME ) ;
292+ LoadedGrammarName = "" ;
293+
294+ //init
295+ try
296+ {
297+ _GoldParser = new GoldParser . Parser . Parser ( ) ;
298+ LogInfo ( "GOLD parser engine initialized" ) ;
299+
300+ //set verbosity
301+ Verbosity = verbosity ;
302+ LogInfo ( "Verbosity set to: " + Verbosity . ToString ( ) ) ;
303+ }
304+ catch ( Exception ex )
305+ {
306+ LogError ( "Failed to initialize GOLD parser: " + ex . Message ) ;
307+ return ;
308+ }
309+
310+ //preload default grammar
311+ try
312+ {
313+ string grammarname = GrammarNameToResourceName ( DEFAULT_GRAMMAR ) ;
314+ byte [ ] grammar = ResourceUtil . ExtractResource_ByteArray ( grammarname ) ;
315+ string fullname = GrammarNameToFullGramarName ( DEFAULT_GRAMMAR ) ;
316+ if ( LoadGrammar ( grammar ) )
317+ {
318+ LogInfo ( "Preloaded grammar: \" " + fullname + "\" " ) ;
319+ if ( Verbosity != LogVerbosity . High ) LogText ( "------------------------" ) ;
320+ LoadedGrammarName = fullname ;
321+ }
322+ else
323+ {
324+ LogInfo ( "Failed to preload grammar: \" " + fullname + "\" " ) ;
325+ if ( Verbosity != LogVerbosity . High ) LogText ( "------------------------" ) ;
326+ return ;
327+ }
328+ }
329+ catch ( Exception ex )
330+ {
331+ LogError ( "Failed to preload grammar: " + ex . Message ) ;
332+ if ( Verbosity != LogVerbosity . High ) LogText ( "------------------------" ) ;
333+ return ;
334+ }
335+
336+ isInitialized = true ;
337+ }
338+ }
339+ }
0 commit comments