public ScopeBuilder(IProcessorState processor, ITokenTrie tokens, IOperatorMap <TOperator, TToken> operatorMap, bool dereferenceInLiterals) { TokenTrie trie = new TokenTrie(); trie.Append(tokens); _badSyntaxTokens = operatorMap.BadSyntaxTokens; _noops = operatorMap.NoOpTokens; _openGroup = operatorMap.OpenGroupToken; _closeGroup = operatorMap.CloseGroupToken; _literal = operatorMap.LiteralToken; _identity = operatorMap.Identity; _literalSequenceBoundsMarkers = operatorMap.LiteralSequenceBoundsMarkers; _terminators = operatorMap.Terminators; _isSymbolDereferenceInLiteralSequenceRequired = dereferenceInLiterals; _processor = processor; _knownTokensCount = tokens.Count; _valueEncoder = operatorMap.Encode; _valueDecoder = operatorMap.Decode; List <object> symbolValues = new List <object>(); foreach (KeyValuePair <string, object> variable in processor.Config.Variables) { trie.AddToken(processor.Encoding.GetBytes(string.Format(processor.Config.VariableFormatString, variable.Key))); symbolValues.Add(variable.Value); } _symbolValues = symbolValues; _tokenToOperatorMap = operatorMap.TokensToOperatorsMap; _operatorScopeFactory = operatorMap.OperatorScopeLookupFactory; _tokens = trie; }
public static ScopeBuilder <TOperator, TToken> ScopeBuilder <TOperator, TToken>(this IProcessorState processor, ITokenTrie tokens, IOperatorMap <TOperator, TToken> operatorMap, bool dereferenceInLiterals = false) where TOperator : struct where TToken : struct { return(new ScopeBuilder <TOperator, TToken>(processor, tokens, operatorMap, dereferenceInLiterals)); }