@@ -133,6 +133,8 @@ public static Vector getLiteralForms(Vector trms)
133133
134134 public abstract ASTTerm removeWhitespaceTerms ();
135135
136+ public abstract ASTTerm replaceCobolIdentifiers ();
137+
136138 public abstract String tagFunction ();
137139
138140 public static Vector allNestedTagsArities (Vector sasts )
@@ -207,67 +209,196 @@ public static Vector rulesFromTagsArities(Vector tagsarities)
207209
208210 public void addStereotype (String str )
209211 { String lit = literalForm ();
210- Vector stereotypes =
211- (Vector ) ASTTerm .metafeatures .get (lit );
212- if (stereotypes == null )
213- { stereotypes = new Vector ();
214- ASTTerm .metafeatures .put (lit ,stereotypes );
215- }
212+ if (ASTTerm .metafeatures .get (lit ) instanceof Vector )
213+ {
214+ Vector stereotypes =
215+ (Vector ) ASTTerm .metafeatures .get (lit );
216+ if (stereotypes == null )
217+ { stereotypes = new Vector ();
218+ ASTTerm .metafeatures .put (lit ,stereotypes );
219+ }
216220
217- if (stereotypes .contains (str )) {}
218- else
219- { stereotypes .add (str ); }
221+ System .out .println (">> Adding stereotype " + str + " to " + lit );
222+
223+ if (stereotypes .contains (str )) {}
224+ else
225+ { stereotypes .add (str ); }
226+ }
227+ }
228+
229+ public static void addStereo (ASTTerm ast , String str )
230+ { if (ast == null ) { return ; }
231+
232+ String lit = ast .literalForm ();
233+ addStereo (lit ,str );
220234 }
221235
222236 public static void addStereo (String lit , String str )
223- { Vector stereotypes =
224- (Vector ) ASTTerm .metafeatures .get (lit );
225- if (stereotypes == null )
226- { stereotypes = new Vector ();
227- ASTTerm .metafeatures .put (lit ,stereotypes );
237+ { Object mfs = ASTTerm .metafeatures .get (lit );
238+ if (mfs == null )
239+ { mfs = new Vector ();
240+ ASTTerm .metafeatures .put (lit , mfs );
228241 }
229242
230- if (stereotypes .contains (str )) {}
231- else
232- { stereotypes .add (str ); }
243+ if (mfs instanceof Vector )
244+ {
245+ Vector stereotypes = (Vector ) mfs ;
246+
247+ if (stereotypes .contains (str )) {}
248+ else
249+ { stereotypes .add (str ); }
250+ }
251+
252+ System .out .println ("*** Metafeatures of " + lit + " are " + mfs );
233253 }
234254
255+ public static void setTaggedValue (ASTTerm ast , String mf , String val )
256+ { // updates stereotypes of ast so that mf=val
257+
258+ String lit = ast .literalForm ();
259+
260+ setTaggedValue (lit , mf , val );
261+ }
262+
263+
264+ public static void setTaggedValue (String lit , String mf , String val )
265+ { Object mfs = ASTTerm .metafeatures .get (lit );
266+ System .out .println ("*** " + lit + " has tagged values: " +
267+ mfs );
268+
269+ if (mfs == null )
270+ { mfs = new Vector ();
271+ ASTTerm .metafeatures .put (lit ,mfs );
272+ }
273+
274+ if (mfs instanceof Vector )
275+ { Vector stereos = (Vector ) mfs ;
276+ Vector newstereos = new Vector ();
277+ for (int x = 0 ; x < stereos .size (); x ++)
278+ { String stereo = (String ) stereos .get (x );
279+ if (stereo .startsWith (mf + "=" ))
280+ { }
281+ else
282+ { newstereos .add (stereo ); }
283+ }
284+ newstereos .add (mf + "=" + val );
285+ ASTTerm .metafeatures .put (lit ,newstereos );
286+ System .out .println ("*** Set " + lit + " tagged values: " +
287+ newstereos );
288+ }
289+ }
290+
235291
236292 public void removeStereotype (String str )
237293 { String lit = literalForm ();
238- Vector stereotypes =
239- (Vector ) ASTTerm .metafeatures .get (lit );
240- if (stereotypes == null )
241- { stereotypes = new Vector ();
242- ASTTerm .metafeatures .put (lit ,stereotypes );
294+ if (ASTTerm .metafeatures .get (lit ) instanceof Vector )
295+ {
296+ Vector stereotypes =
297+ (Vector ) ASTTerm .metafeatures .get (lit );
298+ if (stereotypes == null )
299+ { stereotypes = new Vector ();
300+ ASTTerm .metafeatures .put (lit ,stereotypes );
301+ }
302+ Vector removed = new Vector ();
303+ removed .add (str );
304+ stereotypes .removeAll (removed );
243305 }
244- Vector removed = new Vector ();
245- removed .add (str );
246- stereotypes .removeAll (removed );
247306 }
248307
249308 public static void removeStereo (String lit , String str )
250- {
251- Vector stereotypes =
252- (Vector ) ASTTerm .metafeatures .get (lit );
253- if (stereotypes == null )
254- { stereotypes = new Vector ();
255- ASTTerm .metafeatures .put (lit ,stereotypes );
256- }
257- Vector removed = new Vector ();
258- removed .add (str );
259- stereotypes .removeAll (removed );
309+ { if (ASTTerm .metafeatures .get (lit ) instanceof Vector )
310+ {
311+ Vector stereotypes =
312+ (Vector ) ASTTerm .metafeatures .get (lit );
313+ if (stereotypes == null )
314+ { stereotypes = new Vector ();
315+ ASTTerm .metafeatures .put (lit ,stereotypes );
316+ }
317+ Vector removed = new Vector ();
318+ removed .add (str );
319+ stereotypes .removeAll (removed );
320+ }
260321 }
261322
262323 public boolean hasStereotype (String str )
263324 { String lit = literalForm ();
264- Vector stereotypes =
265- (Vector ) ASTTerm .metafeatures .get (lit );
266- if (stereotypes == null )
267- { stereotypes = new Vector ();
268- ASTTerm .metafeatures .put (lit ,stereotypes );
325+ if (ASTTerm .metafeatures .get (lit ) instanceof Vector )
326+ { Vector stereotypes =
327+ (Vector ) ASTTerm .metafeatures .get (lit );
328+ if (stereotypes == null )
329+ { stereotypes = new Vector ();
330+ ASTTerm .metafeatures .put (lit ,stereotypes );
331+ }
332+ return stereotypes .contains (str );
269333 }
270- return stereotypes .contains (str );
334+ return false ;
335+ }
336+
337+ public static String getStereotypeValue (String lit )
338+ { Object stereo =
339+ ASTTerm .metafeatures .get (lit );
340+ System .out .println (">>>--- Global variable " + lit +
341+ " has value " + stereo );
342+ System .out .println ();
343+ if (stereo == null )
344+ { return "" ; }
345+ else
346+ { return "" + stereo ; }
347+ }
348+
349+ public static void setStereotypeValue (String lit , String val )
350+ { System .out .println (">>>--- Global variable " + lit +
351+ " set to " + val );
352+ System .out .println ();
353+ ASTTerm .metafeatures .put (lit ,val );
354+ }
355+
356+ public static boolean hasTaggedValue (ASTTerm trm , String str )
357+ { String lit = trm .literalForm ();
358+ System .out .println ("*** " + lit + " has tagged values: " +
359+ ASTTerm .metafeatures .get (lit ));
360+
361+ if (ASTTerm .metafeatures .get (lit ) instanceof Vector )
362+ {
363+ Vector stereotypes =
364+ (Vector ) ASTTerm .metafeatures .get (lit );
365+ if (stereotypes == null )
366+ { stereotypes = new Vector ();
367+ ASTTerm .metafeatures .put (lit ,stereotypes );
368+ }
369+
370+ for (int x = 0 ; x < stereotypes .size (); x ++)
371+ { String stereo = (String ) stereotypes .get (x );
372+ if (stereo .startsWith (str + "=" ))
373+ { return true ; }
374+ }
375+ return false ;
376+ }
377+ return false ;
378+ }
379+
380+ public static String getTaggedValue (ASTTerm trm , String str )
381+ { String lit = trm .literalForm ();
382+ Object mfs = ASTTerm .metafeatures .get (lit );
383+ if (mfs == null )
384+ { mfs = new Vector ();
385+ ASTTerm .metafeatures .put (lit ,mfs );
386+ }
387+
388+ System .out .println ("*** " + lit + " gets tagged values: " +
389+ mfs );
390+
391+ if (mfs instanceof Vector )
392+ { Vector stereotypes = (Vector ) mfs ;
393+ for (int x = 0 ; x < stereotypes .size (); x ++)
394+ { String stereo = (String ) stereotypes .get (x );
395+ if (stereo .startsWith (str + "=" ))
396+ { int indx = stereo .indexOf ("=" );
397+ return stereo .substring (indx + 1 );
398+ }
399+ }
400+ }
401+ return null ;
271402 }
272403
273404 public static void addRequiredLibrary (String lib )
0 commit comments