Пример #1
0
        static LispReader()
        {
            _macros['"']  = new StringReader();
            _macros[';']  = new CommentReader();
            _macros['\''] = new WrappingReader(QUOTE);
            _macros['@']  = new WrappingReader(DEREF);//new DerefReader();
            _macros['^']  = new WrappingReader(META);
            _macros['`']  = new SyntaxQuoteReader();
            _macros['~']  = new UnquoteReader();
            _macros['(']  = new ListReader();
            _macros[')']  = new UnmatchedDelimiterReader();
            _macros['[']  = new VectorReader();
            _macros[']']  = new UnmatchedDelimiterReader();
            _macros['{']  = new MapReader();
            _macros['}']  = new UnmatchedDelimiterReader();
            ////	macros['|'] = new ArgVectorReader();
            _macros['\\'] = new CharacterReader();
            _macros['%']  = new ArgReader();
            _macros['#']  = new DispatchReader();


            _dispatchMacros['^']  = new MetaReader();
            _dispatchMacros['\''] = new VarReader();
            _dispatchMacros['"']  = new RegexReader();
            _dispatchMacros['(']  = new FnReader();
            _dispatchMacros['{']  = new SetReader();
            _dispatchMacros['=']  = new EvalReader();
            _dispatchMacros['!']  = new CommentReader();
            _dispatchMacros['<']  = new UnreadableReader();
            _dispatchMacros['_']  = new DiscardReader();
        }
Пример #2
0
        private void btnReg_Click(object sender, EventArgs e)
        {
            string text = tbReg.Text;

            automaton = RegexReader.readRegex(text);
            processAutomaton(automaton);
        }
Пример #3
0
        public void readLetter_passExpression_returnParsedTransition()
        {
            string     input          = "a";
            Transition expectedResult = new Transition("a", new Node("q0"), null);
            var        list           = new List <Transition>();

            RegexReader.readLetter(ref list, input);
            Transition testResult = list[0];

            Assert.AreEqual(expectedResult.Letter, testResult.Letter);
        }
Пример #4
0
        public void readConcatExpression_passExpression_returnParsedTransitionsAndLastNode()
        {
            string input      = value1 + value2;
            var    testResult = new List <Transition>();

            RegexReader.readConcat(ref testResult, ref input);
            testResult.ForEach(x => Trace.WriteLine(x));
            Assert.AreEqual(2, testResult.Count, "Number of all transitions");
            Assert.AreEqual("a", testResult.First().Letter, "'a' transition is the first one");
            Assert.AreEqual(1, testResult.FindAll(x => x.Letter == "b").Count, "Number of 'b' transitions");
        }
Пример #5
0
        public void readLetter_passNothing_returnParsedTransitionWithEpsilonAndLastNode()
        {
            Transition expectedResult = new Transition("_", new Node("q0"), null);

            var list = new List <Transition>();

            RegexReader.readLetter(ref list);
            Transition testResult = list[0];

            Assert.AreEqual(expectedResult.Letter, testResult.Letter);
        }
Пример #6
0
        public void readStarExpression_passExpression_returnParsedTransitionsAndLastNode()
        {
            string input      = value1 + value2;
            var    testResult = new List <Transition>();

            RegexReader.readStar(ref testResult, ref input);
            testResult.ForEach(x => Trace.WriteLine(x));
            Assert.AreEqual(5, testResult.Count, "Number of all transitions");
            Assert.AreEqual(4, testResult.FindAll(x => x.Letter == "_").Count, "Number of '_' transitions");
            Assert.AreEqual(1, testResult.FindAll(x => x.Letter == "a").Count, "Number of 'a' transitions");
            Assert.AreEqual("b", input, "'a' was taken out of the input");
        }
Пример #7
0
        public void readExpression_passRegularExpression_returnFullyParsedTransitions(string expression, int epsilonCount, int aCount, int bCount)
        {
            var result = new List <Transition>();

            RegexReader.readExpression(ref result, ref expression);
            result.ForEach(x => Trace.WriteLine(x));
            int total = epsilonCount + aCount + bCount;

            Assert.AreEqual(total, result.Count);
            Assert.AreEqual(epsilonCount, result.FindAll(x => x.Letter == "_").Count, "Number of '_' transitions");
            Assert.AreEqual(aCount, result.FindAll(x => x.Letter == "a").Count, "Number of 'a' transitions");
            Assert.AreEqual(bCount, result.FindAll(x => x.Letter == "b").Count, "Number of 'b' transitions");
        }
Пример #8
0
        public void readRegex_passRegularExpression_returnParsedAutomaton(string input, string path)
        {
            //string input = ".(z, | (h, *(.(q, z))))";
            string graphInput  = "../../materials/regexpParsedInput" + (indexer) + ".txt";
            string graphOutput = "../../materials/regexpParsedOutput" + (indexer++) + ".txt";
            //Automaton expectedResult = Parser.parseFile(path);

            Automaton testResult = RegexReader.readRegex(input);

            GVgenerator.generateGraphVizInput(testResult, graphInput);
            GVgenerator.generateGraph(graphInput, graphOutput);
            //Assert.AreEqual(expectedResult, testResult);
        }
Пример #9
0
        static LispReader()
        {
            _macros['"'] = new StringReader();
            _macros[';'] = new CommentReader();
            _macros['\''] = new WrappingReader(QUOTE);
            _macros['@'] = new WrappingReader(DEREF);//new DerefReader();
            _macros['^'] = new WrappingReader(META);
            _macros['`'] = new SyntaxQuoteReader();
            _macros['~'] = new UnquoteReader();
            _macros['('] = new ListReader();
            _macros[')'] = new UnmatchedDelimiterReader();
            _macros['['] = new VectorReader();
            _macros[']'] = new UnmatchedDelimiterReader();
            _macros['{'] = new MapReader();
            _macros['}'] = new UnmatchedDelimiterReader();
            ////	macros['|'] = new ArgVectorReader();
            _macros['\\'] = new CharacterReader();
            _macros['%'] = new ArgReader();
            _macros['#'] = new DispatchReader();

            _dispatchMacros['^'] = new MetaReader();
            _dispatchMacros['\''] = new VarReader();
            _dispatchMacros['"'] = new RegexReader();
            _dispatchMacros['('] = new FnReader();
            _dispatchMacros['{'] = new SetReader();
            _dispatchMacros['='] = new EvalReader();
            _dispatchMacros['!'] = new CommentReader();
            _dispatchMacros['<'] = new UnreadableReader();
            _dispatchMacros['_'] = new DiscardReader();
        }
Пример #10
0
 public void testClean()
 {
     RegexReader.indexerReset();
 }