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(); }
private void btnReg_Click(object sender, EventArgs e) { string text = tbReg.Text; automaton = RegexReader.readRegex(text); processAutomaton(automaton); }
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); }
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"); }
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); }
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"); }
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"); }
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); }
public void testClean() { RegexReader.indexerReset(); }