Index: AntlrPlugin.java
===================================================================
--- AntlrPlugin.java	(revision 429732)
+++ AntlrPlugin.java	(working copy)
@@ -25,6 +25,9 @@
 import java.io.File;
 import java.io.FileReader;
 import java.security.Permission;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 import java.util.StringTokenizer;
 
 // START SNIPPET: generate-sources-0
@@ -67,11 +70,12 @@
         //
         // ----------------------------------------------------------------------
 
-        StringTokenizer st = new StringTokenizer( grammars, ", " );
+        List grammarList = getGrammarList( grammars );
+        Iterator it = grammarList.iterator();
 
-        while ( st.hasMoreTokens() )
+        while ( it.hasNext() )
         {
-            String eachGrammar = st.nextToken().trim();
+            String eachGrammar = ( String ) it.next();
 
             File grammar = new File( sourceDirectory, eachGrammar );
 
@@ -103,7 +107,9 @@
                 generated.getParentFile().mkdirs();
             }
 
-            String[] args = new String[]{"-o", generated.getParentFile().getPath(), grammar.getPath(),};
+            String antlrSuperGrammars = getAntlrSuperGrammars( grammarList, eachGrammar, sourceDirectory.getAbsolutePath() );
+            
+            String[] args = new String[]{ "-o", generated.getParentFile().getPath(), "-glib", antlrSuperGrammars, grammar.getPath(), };
 
             SecurityManager oldSm = System.getSecurityManager();
 
@@ -195,6 +201,47 @@
         return genFile;
     }
 
+    private List getGrammarList( String grammars )
+    {
+    	List grammarList = new ArrayList();
+    	
+    	StringTokenizer st = new StringTokenizer( grammars, ", " );
+    	
+    	while ( st.hasMoreTokens() )
+        {
+            grammarList.add( st.nextToken().trim() );
+        }
+    	
+    	return grammarList;
+    }
+    
+    private String getAntlrSuperGrammars( List grammarList, String subGrammar, String sourceDirectory )
+    {
+    	StringBuffer antlrSuperGrammars = new StringBuffer();
+    	
+    	Iterator it = grammarList.iterator();
+    	
+    	while ( it.hasNext() )
+    	{
+    		String grammar = ( String ) it.next();
+    		
+    		if ( grammar.equals( subGrammar ) )
+    		{
+    			continue;
+    		}
+    		
+    		antlrSuperGrammars.append( sourceDirectory );
+    		antlrSuperGrammars.append( File.separatorChar );
+    		antlrSuperGrammars.append( grammar );
+    		if ( it.hasNext() )
+    		{
+    			antlrSuperGrammars.append( ';' );
+    		}
+    	}
+    	
+    	return antlrSuperGrammars.toString();
+    }
+
 }
 
 class NoExitSecurityManager

