public static ImportExpression Parse(ExpressionWalker ew) { ew.IsCurrentOrThrow(ExpressionToken.Import); ew.NextOrThrow(); // ReSharper disable once UseObjectOrCollectionInitializer var ret = new ImportExpression(); if (ew.IsCurrent(ExpressionToken.StringLiteral)) { ret._matchType = new RegexResult[] { ew.Current.Match.AsResult() }; ret.Type = ew.Current.Match.Value.Trim('\"'); } else { ret._matchType = ew.TakeForwardWhile(t => t.Token == ExpressionToken.Period || t.Token == ExpressionToken.Literal) .Select(t => t.Match.AsResult()).ToArray(); ret.Type = ret._matchType.Select(m => m.Value).StringJoin(); if (ew.IsCurrent(ExpressionToken.As)) { ret._matchAlias = ew.Next(ExpressionToken.Literal, true).Match.AsResult(); ret.As = ret._matchAlias.Value; } } ew.Next(); return(ret); }