Ejemplo n.º 1
0
 public void TestToString()
 {
     var configurator = new ParserConfigurator<string>();
     var nt = configurator.CreateNonTerminal();
     nt.DebugName = "NT";
     Assert.IsNotNull(nt.ToString());
 }
Ejemplo n.º 2
0
        public void TestToString()
        {
            var configurator = new ParserConfigurator <string>();
            var nt           = configurator.CreateNonTerminal();

            nt.DebugName = "NT";
            Assert.IsNotNull(nt.ToString());
        }
Ejemplo n.º 3
0
        public FluentParserConfigurator(ParserConfigurator <object> configurator)
        {
            this.configurator = configurator;

            rules         = new List <FluentRule>();
            listRules     = new Dictionary <Tuple <IRule, string>, NonTerminal <object> >();
            optionalRules = new Dictionary <NonTerminal <object>, NonTerminal <object> >();
            ignored       = new List <string>();
        }
Ejemplo n.º 4
0
 public void TestBadProduction()
 {
     try
     {
         var configurator = new ParserConfigurator<string>();
         var nt = configurator.CreateNonTerminal();
         nt.AddProduction("abc", 123, 2.0, false);
         Assert.Fail("No exception for bad type in production rule list");
     }
     catch (ArgumentException)
     {
     }
 }
Ejemplo n.º 5
0
 public void TestBadProduction()
 {
     try
     {
         var configurator = new ParserConfigurator <string>();
         var nt           = configurator.CreateNonTerminal();
         nt.AddProduction("abc", 123, 2.0, false);
         Assert.Fail("No exception for bad type in production rule list");
     }
     catch (ArgumentException)
     {
     }
 }
Ejemplo n.º 6
0
 public void TestMultipleDefinedTerminalWithDifferentRegEx()
 {
     try
     {
         var configurator = new ParserConfigurator <string>();
         configurator.CreateTerminal("abc", f => "abc");
         configurator.CreateTerminal("abc", f => "ABC");
         Assert.Fail("No exception for multiple definition of terminal with different regex");
     }
     catch (ParserConfigurationException)
     {
     }
 }
Ejemplo n.º 7
0
 public void TestMultipleDefinedTerminalWithDifferentRegEx()
 {
     try
     {
         var configurator = new ParserConfigurator<string>();
         configurator.CreateTerminal("abc", f => "abc");
         configurator.CreateTerminal("abc", f => "ABC");
         Assert.Fail("No exception for multiple definition of terminal with different regex");
     }
     catch (ParserConfigurationException)
     {
     }
 }
Ejemplo n.º 8
0
        /// <summary>
        /// Creates a <see cref="ParserContainer"/> instance configured using the provided configuration method.
        /// </summary>
        /// <param name="configurator">A method that sets configuration options for a new <see cref="ParserContainer"/> instance.</param>
        /// <returns>A new <see cref="ParserContainer"/> instance.</returns>
        public static ParserContainer Create(ParserConfigurator configurator)
        {
            if (configurator is null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            ParserContainer container = new ParserContainer();

            ParserConfiguration configuration = new Configuration(container);

            configurator(configuration);

            configuration.Lock();

            return(container);
        }
Ejemplo n.º 9
0
 public FluentExpression(ParserConfigurator <object> configurator)
 {
     this.configurator = configurator;
 }
Ejemplo n.º 10
0
        /// <summary>
        /// Create a code based configurator
        /// </summary>
        /// <typeparam name="T">Semantic value type of tokens</typeparam>
        /// <returns>A configurator, ready for use</returns>
        public static IParserConfigurator <T> Configure <T>()
        {
            var parserConfigurator = new ParserConfigurator <T>();

            return(parserConfigurator);
        }