public Grammar( Tool tool, string fileName, CompositeGrammar composite )
{
nameSpaceChecker = new NameSpaceChecker( this );
ll1Analyzer = new LL1Analyzer( this );
sanity = new GrammarSanity( this );
this.composite = composite;
Tool = tool;
FileName = fileName;
// ensure we have the composite set to something
if ( composite.DelegateGrammarTreeRoot == null )
{
composite.SetDelegationRoot( this );
}
else
{
defaultRuleModifier = composite.DelegateGrammarTreeRoot.Grammar.DefaultRuleModifier;
}
TemplateGroup lexerGrammarTemplateGroup = new TemplateGroupString(lexerGrammarTemplateText);
_lexerGrammarTemplate = lexerGrammarTemplateGroup.GetInstanceOf("grammar");
target = CodeGenerator.LoadLanguageTarget((string)GetOption("language"), tool.TargetsDirectory);
}