/** Tester; Give grammar filename as arg */ public static void Main(string[] args) { GrammarSpelunker g = new GrammarSpelunker(".", args[0]); g.parse(); Console.Out.WriteLine(g.grammarModifier + " grammar " + g.grammarName); Console.Out.WriteLine("language=" + g.language); Console.Out.WriteLine("tokenVocab=" + g.tokenVocab); Console.Out.WriteLine("imports=" + g.importedGrammars); }
/** Tester; Give grammar filename as arg */ public static void Main( string[] args ) { GrammarSpelunker g = new GrammarSpelunker( ".", args[0] ); g.parse(); Console.Out.WriteLine( g.grammarModifier + " grammar " + g.grammarName ); Console.Out.WriteLine( "language=" + g.language ); Console.Out.WriteLine( "tokenVocab=" + g.tokenVocab ); Console.Out.WriteLine( "imports=" + g.importedGrammars ); }
public virtual void SortGrammarFiles() { //Console.Out.WriteLine( "Grammar names " + GrammarFileNames ); Graph<string> g = new Graph<string>(); foreach ( string gfile in GrammarFileNames ) { GrammarSpelunker grammar = new GrammarSpelunker( inputDirectory, gfile ); grammar.Parse(); string vocabName = grammar.TokenVocab; string grammarName = grammar.GrammarName; // Make all grammars depend on any tokenVocab options if ( vocabName != null ) g.AddEdge( gfile, vocabName + CodeGenerator.VocabFileExtension ); // Make all generated tokens files depend on their grammars g.AddEdge( grammarName + CodeGenerator.VocabFileExtension, gfile ); } List<string> sorted = g.Sort(); //Console.Out.WriteLine( "sorted=" + sorted ); GrammarFileNames.Clear(); // wipe so we can give new ordered list for ( int i = 0; i < sorted.Count; i++ ) { string f = (string)sorted[i]; if ( GrammarExtensions.Any( ext => f.EndsWith( ext, StringComparison.OrdinalIgnoreCase ) ) ) AddGrammarFile( f ); } //Console.Out.WriteLine( "new grammars=" + grammarFileNames ); }