@@ -191,6 +191,11 @@ private IWqlStatement<TIndexItem> Parse(string input, Queue<WqlToken> tokenQueue
191191
192192 if ( string . IsNullOrWhiteSpace ( input ) )
193193 {
194+ ilaQueue . Enqueue ( new WqlLookaheadToken ( new WqlToken ( ) { Value = "" } , WqlExpressionType . None )
195+ {
196+ ExpectedNextTokens = [ WqlExpressionType . Attribute , WqlExpressionType . OpenParenthesis , WqlExpressionType . Order , WqlExpressionType . PartitioningOperator ]
197+ } ) ;
198+
194199 return wql ;
195200 }
196201
@@ -494,10 +499,10 @@ private static WqlExpressionLogicalOperator ParseLogicalOperator(Queue<WqlToken>
494499 /// <returns>The attribute node.</returns>
495500 private WqlExpressionNodeAttribute < TIndexItem > ParseAttribute ( Queue < WqlToken > tokenQueue , Queue < WqlLookaheadToken > ilaQueue )
496501 {
502+ var attributeToken = PeekToken ( tokenQueue ) ;
503+
497504 try
498505 {
499- var attributeToken = PeekToken ( tokenQueue ) ;
500-
501506 if ( attributeToken is null )
502507 {
503508 throw new WqlParseException
@@ -507,11 +512,11 @@ private WqlExpressionNodeAttribute<TIndexItem> ParseAttribute(Queue<WqlToken> to
507512 ) ;
508513 }
509514
515+ ReadToken ( tokenQueue ) ;
516+
510517 var path = WqlPropertyPath < TIndexItem > . Parse ( attributeToken . Value ) ;
511518 var property = path . Resolve ( typeof ( TIndexItem ) ) ;
512519
513- ReadToken ( tokenQueue ) ;
514-
515520 if ( property is not null )
516521 {
517522 ilaQueue . Enqueue ( new WqlLookaheadToken ( attributeToken , WqlExpressionType . Attribute )
@@ -537,11 +542,15 @@ private WqlExpressionNodeAttribute<TIndexItem> ParseAttribute(Queue<WqlToken> to
537542 }
538543 catch ( Exception )
539544 {
540- throw new WqlParseException
541- (
542- "webexpress.webindex:wql.attribute_unknown" ,
543- [ ]
544- ) ;
545+ ilaQueue . Enqueue ( new WqlLookaheadToken ( attributeToken , WqlExpressionType . Attribute )
546+ {
547+ ExpectedNextTokens = [ WqlExpressionType . Operator ] ,
548+ } ) ;
549+
550+ return new WqlExpressionNodeAttribute < TIndexItem >
551+ {
552+ Name = attributeToken . Value
553+ } ;
545554 }
546555 }
547556
0 commit comments