public SrgsDocument(SrgsRule grammarRootRule)
     : this()
 {
     Helpers.ThrowIfNull(grammarRootRule, "grammarRootRule");
     Root = grammarRootRule;
     Rules.Add(grammarRootRule);
 }
 public SrgsRuleRef(SrgsRule rule, string semanticKey, string parameters)
     : this(rule)
 {
     Helpers.ThrowIfEmptyOrNull(parameters, "parameters");
     _semanticKey = semanticKey;
     _params      = parameters;
 }
 void IElement.PostParse(IElement parent)
 {
     if (_sRoot != null)
     {
         bool flag = false;
         foreach (SrgsRule rule in Rules)
         {
             if (rule.Id == _sRoot)
             {
                 Root = rule;
                 flag = true;
                 break;
             }
         }
         if (!flag)
         {
             XmlParser.ThrowSrgsException(SRID.RootNotDefined, _sRoot);
         }
     }
     foreach (XmlParser.ForwardReference item in _scriptsForwardReference)
     {
         SrgsRule srgsRule = Rules[item._name];
         if (srgsRule != null)
         {
             srgsRule.Script += item._value;
         }
         else
         {
             XmlParser.ThrowSrgsException(SRID.InvalidScriptDefinition);
         }
     }
     Validate();
 }
        IRule IGrammar.CreateRule(string id, RulePublic publicRule, RuleDynamic dynamic, bool hasScript)
        {
            SrgsRule srgsRule = new SrgsRule(id);

            if (publicRule != RulePublic.NotSet)
            {
                srgsRule.Scope = ((publicRule != 0) ? SrgsRuleScope.Private : SrgsRuleScope.Public);
            }
            srgsRule.Dynamic = dynamic;
            return(srgsRule);
        }
Beispiel #5
0
        void IElementFactory.AddScript(IGrammar grammar, string sRule, string code)
        {
            SrgsGrammar srgsGrammar = (SrgsGrammar)grammar;
            SrgsRule    srgsRule    = srgsGrammar.Rules[sRule];

            if (srgsRule != null)
            {
                srgsRule.Script += code;
            }
            else
            {
                srgsGrammar.AddScript(sRule, code);
            }
        }
Beispiel #6
0
 public SrgsRuleDebugDisplay(SrgsRule rule)
 {
     _rule = rule;
 }
 public SrgsRuleRef(SrgsRule rule, string semanticKey)
     : this(rule)
 {
     Helpers.ThrowIfEmptyOrNull(semanticKey, "semanticKey");
     _semanticKey = semanticKey;
 }
 public SrgsRuleRef(SrgsRule rule)
 {
     Helpers.ThrowIfNull(rule, "rule");
     _uri = new Uri("#" + rule.Id, UriKind.Relative);
 }