public object?Transform(IdentifierNode item) { var valueKeyword = LanguageDefinition.Keywords.OfType <ValueKeywordDefinition>().FirstOrDefault(x => x.Names.Contains(item.TextValue)); if (valueKeyword != default) { return(valueKeyword.Value); } if (ScopeStack.Current.TryGetVariable(item.TextValue, out var value)) { return(value); } var scopedFunction = LanguageDefinition.ScopedFunctions.FirstOrDefault(func => func.Declaration.Name == item.TextValue); if (scopedFunction != null) { return(MethodGroup.Create(scopedFunction)); } var function = LanguageDefinition.Functions.FirstOrDefault(func => func.Declaration.Name == item.TextValue); if (function != null) { return(MethodGroup.Create(function)); } var test = LanguageDefinition.Tests.FirstOrDefault(func => func.Declaration.Name == item.TextValue); if (test != null) { return(MethodGroup.Create(test)); } return(null); }
public Expression Transform(IdentifierNode item) { var valueKeyword = LanguageDefinition.Keywords.OfType <ValueKeywordDefinition>().FirstOrDefault(keyword => keyword.Names.Contains(item.TextValue)); if (valueKeyword != null) { return(Expression.Constant(valueKeyword.Value)); } var functionDefinition = LanguageDefinition.Functions.Where(func => func.Declaration.Name == item.TextValue).FirstOrDefault(); if (functionDefinition != null) { return(Expression.Constant(MethodGroup.Create(functionDefinition))); } if (CurrentScope.TryGetVariable(item.TextValue, out var expression)) { return(expression); } throw new NotImplementedException(); }