/// <summary> /// Returns a visitor with the results of a single parsing pass /// </summary> /// <param name="textToParse">Z80 assembly code to parse</param> /// <param name="expectedErrors">Number of errors expected</param> /// <returns> /// Visitor with the syntax tree /// </returns> protected virtual ExpressionNode ParseExpr(string textToParse, int expectedErrors = 0) { var inputStream = new AntlrInputStream(textToParse); var lexer = new Z80AsmLexer(inputStream); var tokenStream = new CommonTokenStream(lexer); var parser = new Z80AsmParser(tokenStream); var context = parser.expr(); var visitor = new Z80AsmVisitor(); parser.SyntaxErrors.Count.ShouldBe(expectedErrors); return((ExpressionNode)visitor.VisitExpr(context)); }