コード例 #1
0
        /// <summary>
        /// Make grammar rule according to regex plus notation (with optional delimiter)
        /// </summary>
        /// <param name="rule">Rule where plus notation is applied</param>
        /// <param name="delimiter">Delimiter of rule occurances</param>
        /// <returns>Created rule</returns>
        protected GrammarRule MakePlusRule(GrammarRule rule, GrammarRule delimiter = null)
        {
            var T = new NonTerminal(null);

            if (delimiter == null)
            {
                T.Rule = rule | (T + rule);
            }
            else
            {
                T.Rule = rule | (T + delimiter + rule);
            }
            return(T);
        }
コード例 #2
0
 /// <summary>
 /// Make grammar rule according to regex start notation (with optional delimiter)
 /// </summary>
 /// <param name="rule">Rule where star notation is applied</param>
 /// <param name="delimiter">Delimiter of rule occurances</param>
 /// <returns>Created rule</returns>
 protected GrammarRule MakeStarRule(GrammarRule rule, GrammarRule delimiter = null)
 {
     return(Q(MakePlusRule(rule, delimiter)));
 }
コード例 #3
0
 /// <summary>
 /// Set grammar rule as optional (Question mark notation)
 /// </summary>
 /// <param name="rule">Rule that can be ommited in grammar</param>
 /// <returns>Created rule</returns>
 protected GrammarRule Q(GrammarRule rule)
 {
     return(rule | Empty);
 }