private Parser.Binding GetBindingWithStream(string line, Stream stream) { Parser.Binding initial = Parser.GetBinding(line); Parser.Token[] tokens = new Parser.Token[initial.tokens.Length]; string[] walked = this.WalkTokens(initial.tokens, stream); for (int i = 0; i < tokens.Length; i++) { tokens[i] = new Parser.Token(); tokens[i].type = walked[i] == null ? Parser.TokenType.Variable : Parser.TokenType.String; tokens[i].value = walked[i]; } initial.tokens = tokens; return(initial); }
private string[] WalkTokens(Parser.Token[] tokens, Stream stream) { string[] output = new string[tokens.Length]; for (int i = 0; i < tokens.Length; i++) { Parser.Token token = tokens[i]; string tokenValue = token.value; if (token.type == Parser.TokenType.Variable) { tokenValue = stream.Walk(token.value); } output[i] = tokenValue; } return(output); }
private static Pair[] TokenToPairs(Parser.Token[] tokens) { Pair[] output = new Pair[tokens.Length]; for (int i = 0; i < output.Length; i++) { Parser.Token token = tokens[i]; if (token.type == Parser.TokenType.Variable) { output[i] = Pair.Variable(token.value); } else { output[i] = Pair.Value(token.value); } } return(output); }