Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.antlr.stringtemplate;
  
  
  import java.util.*;
  import java.io.Reader;

A group interface is like a group without the template implementations; there are just template names/argument-lists like this: interface foo; class(name,fields); method(name,args,body);
 
 public class StringTemplateGroupInterface {
What is the group name
 
 	protected String name;

Maps template name to TemplateDefinition object
 
 	protected Map templates = new LinkedHashMap();

Are we derived from another group? Templates not found in this group will be searched for in the superGroup recursively.
 
Where to report errors. All string templates in this group use this error handler by default.
 
 
         new StringTemplateErrorListener() {
             public void error(String sThrowable e) {
                 ..println(s);
                 if ( e!=null ) {
                     e.printStackTrace(.);
                 }
             }
             public void warning(String s) {
                 ..println(s);
             }
         };

All the info we need to track for a template defined in an interface
 
 	static class TemplateDefinition {
 		public String name;
 		public LinkedHashMap formalArgs// LinkedHashMap<FormalArgument>
 		public boolean optional = false;
 		public TemplateDefinition(String nameLinkedHashMap formalArgsboolean optional) {
 			this. = name;
 			this. = formalArgs;
 			this. = optional;
 		}
 	}
 
 	}
 
 		this(r,errors,(StringTemplateGroupInterface)null);
 	}

Create an interface from the input stream
 
 										StringTemplateGroupInterface superInterface)
 	{
 		this. = errors;
 		setSuperInterface(superInterface);
 	}
 
 		return ;
 	}
 
 	public void setSuperInterface(StringTemplateGroupInterface superInterface) {
 		this. = superInterface;
 	}
 
 	protected void parseInterface(Reader r) {
 		try {
 			InterfaceLexer lexer = new InterfaceLexer(r);
 			InterfaceParser parser = new InterfaceParser(lexer);
 			parser.groupInterface(this);
 			//System.out.println("read interface\n"+this.toString());
 		}
 		catch (Exception e) {
 			String name = "<unknown>";
 			if ( getName()!=null ) {
 				name = getName();
 			}
 			error("problem parsing group "+name+": "+ee);
 		}
 	}
 
	public void defineTemplate(String nameLinkedHashMap formalArgsboolean optional) {
		TemplateDefinition d = new TemplateDefinition(name,formalArgs,optional);
		.put(d.name,d);
	}

Return a list of all template names missing from group that are defined in this interface. Return null if all is well.
		List missing = new ArrayList();
		for (Iterator it = .keySet().iterator(); it.hasNext();) {
			String name = (String)it.next();
			if ( !d.optional && !group.isDefined(d.name) ) {
				missing.add(d.name);
			}
		}
		if ( missing.size()==0 ) {
			missing = null;
		}
		return missing;
	}

Return a list of all template sigs that are present in the group, but that have wrong formal argument lists. Return null if all is well.
		List mismatched = new ArrayList();
		for (Iterator it = .keySet().iterator(); it.hasNext();) {
			String name = (String)it.next();
			if ( group.isDefined(d.name) ) {
				StringTemplate defST = group.getTemplateDefinition(d.name);
				Map formalArgs = defST.getFormalArguments();
				boolean ack = false;
				if ( (d.formalArgs!=null && formalArgs==null) ||
					(d.formalArgs==null && formalArgs!=null) ||
					d.formalArgs.size() != formalArgs.size() )
				{
					ack=true;
				}
				if ( !ack ) {
					for (Iterator it2 = formalArgs.keySet().iterator();
						 it2.hasNext();)
					{
						String argName = (String)it2.next();
						if ( d.formalArgs.get(argName)==null ) {
							ack=true;
							break;
						}
					}
				}
				if ( ack ) {
					//System.out.println(d.formalArgs+"!="+formalArgs);
					mismatched.add(getTemplateSignature(d));
				}
			}
		}
		if ( mismatched.size()==0 ) {
			mismatched = null;
		}
		return mismatched;
	}
	public String getName() {
		return ;
	}
	public void setName(String name) {
		this. = name;
	}
	public void error(String msg) {
		error(msgnull);
	}
	public void error(String msgException e) {
		if ( !=null ) {
		}
		else {
			..println("StringTemplate: "+msg);
			if ( e!=null ) {
			}
		}
    }
	public String toString() {
        StringBuffer buf = new StringBuffer();
		buf.append("interface ");
		buf.append(";\n");
		for (Iterator it = .keySet().iterator(); it.hasNext();) {
			String name = (String)it.next();
			buf.append(";\n");
		}
		return buf.toString();
	}
		StringBuffer buf = new StringBuffer();
		if ( d.optional ) {
			buf.append("optional ");
		}
		buf.append(d.name);
		if ( d.formalArgs!=null ) {
			StringBuffer args = new StringBuffer();
			args.append('(');
			int i=1;
			for (Iterator it = d.formalArgs.keySet().iterator(); it.hasNext();) {
				String name = (Stringit.next();
				if ( i>1 ) {
					args.append(", ");
				}
				args.append(name);
				i++;
			}
			args.append(')');
			buf.append(args);
		}
		else {
			buf.append("()");
		}
		return buf.toString();
	}
New to GrepCode? Check out our FAQ X