internal double Calculate() { LexicalAnalyzer = new LexicalAnalyzer(Input); RPNConverter = new RPNConverter(LexicalAnalyzer.Analyse()); RPNComputer = new RPNComputer(RPNConverter.Convert()); return(RPNComputer.Compute()); }
protected static void Succeeds(IList <Element> input, IList <Element> expected) { var rpnConverter = new RPNConverter(); rpnConverter.Convert(new List <Element>(input)); var output = rpnConverter.Rpn; Assert.Equal(output.Count, expected.Count); for (var i = 0; i < output.Count; ++i) { Assert.Equal(output[i], expected[i]); } }
public CompiledScript Compile(string source, Options options = Options.None, IDictionary <string, VariableValue> variables = null) { _rpnConverter.Reset(); // Tokenization var tokens = _lexer.Analyze(source); // Parse _tokenParser.Parse(tokens); // Convert to RPN _rpnConverter.Convert(_tokenParser.Elements); // Build AST var rootNode = ASTBuilder.Build(_rpnConverter.Rpn, options, variables, _functions); // Optimize rootNode = rootNode.Optimize(); // Create script wrapper return(new CompiledScript(rootNode)); }
protected static void Fails(IList <Element> input) { var rpnConverter = new RPNConverter(); Assert.Throws <ParserException>(() => { rpnConverter.Convert(new List <Element>(input)); }); }