internal static gsColumnParserBase CreateParser(SelectElement selectElement) { if (selectElement is SelectStarExpression) { return(new gsColumnParserSelectStar(selectElement)); } else if (selectElement is SelectScalarExpression) { return(new gsColumnParserSelectScalar(selectElement)); } else { throw new NotImplementedException($"Select of type {selectElement.GetType().Name} not supported"); } }
private WSelectElement ParseSelectElement(SelectElement sel) { if (sel == null) { return null; } switch (sel.GetType().Name) { case "SelectScalarExpression": { var sse = sel as SelectScalarExpression; var pScalarExpr = new WSelectScalarExpression { SelectExpr = ParseScalarExpression(sse.Expression), FirstTokenIndex = sse.FirstTokenIndex, LastTokenIndex = sse.LastTokenIndex }; if (sse.ColumnName != null) { pScalarExpr.ColumnName = sse.ColumnName.Value; } return pScalarExpr; } case "SelectStarExpression": { var sse = sel as SelectStarExpression; return new WSelectStarExpression() { FirstTokenIndex = sse.FirstTokenIndex, LastTokenIndex = sse.LastTokenIndex, Qulifier = ParseMultiPartIdentifier(sse.Qualifier) }; } case "SelectSetVariable": { var ssv = sel as SelectSetVariable; return new WSelectSetVariable { VariableName = ssv.Variable.Name, Expression = ParseScalarExpression(ssv.Expression), AssignmentType = ssv.AssignmentKind, FirstTokenIndex = ssv.FirstTokenIndex, LastTokenIndex = ssv.LastTokenIndex }; } default: { return null; } } }