[ 
https://issues.apache.org/jira/browse/OLINGO-730?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Fang Yimeng updated OLINGO-730:
-------------------------------
    Description: 
1. UriLexer.g4 line 74-79:
        //JSON support 
        BEGIN_OBJECT : WS*('{'/'%7B')WS*;
        END_OBJECT : WS*('}'/'%7D')WS*;
        BEGIN_ARRAY : WS*('['/'%5B')WS*;
        END_ARRAY :WS*(']'/'%5D')WS*;
I think '/' here means alternative, should '/' is replaced with '|'?

2. UriParser.g4 line 66:
        pathSegment         : vNS=namespace? vODI=odataIdentifier 
vlNVO+=nameValueOptList*;
I read the ABNF of 
OData4(http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/abnf/odata-abnf-construction-rules.txt),
 and find out each pathSegment should only has one nameValueOptList, for the 
reason that: 
        collectionNavPath    = keyPredicate [ singleNavigation ]
so should line 66 be like this:
        pathSegment         : vNS=namespace? vODI=odataIdentifier 
vlNVO=nameValueOptList?;

3. When I trying odata string like this: User?$expand=Friends($search=a), I got 
error showing me that "$search" is invalid. This is caused by needing SEARCH 
while presenting SEARCHINLINE. We can modify UriParser.g4 like this:
expandCountOption   : filter | searchInline;
and modify UriLexer.g4 like this:
SEARCHWORD: ('a'..'z'|'A'..'Z')+ ->popMode;

  was:
1. UriLexer.g4 line 74-79:
        //JSON support 
        BEGIN_OBJECT    : WS* ( '{' / '%7B' ) WS*;
        END_OBJECT      : WS* ( '}' / '%7D' ) WS*;

        BEGIN_ARRAY     : WS* ( '[' / '%5B' ) WS*;
        END_ARRAY       : WS* ( ']' / '%5D' ) WS*;
I think '/' here means alternative, should '/' is replaced with '|'?

2. UriParser.g4 line 66:
        pathSegment         : vNS=namespace? vODI=odataIdentifier 
vlNVO+=nameValueOptList*;
I read the ABNF of 
OData4(http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/abnf/odata-abnf-construction-rules.txt),
 and find out each pathSegment should only has one nameValueOptList, for the 
reason that: 
        collectionNavPath    = keyPredicate [ singleNavigation ]
so should line 66 be like this:
        pathSegment         : vNS=namespace? vODI=odataIdentifier 
vlNVO=nameValueOptList?;

3. When I trying odata string like this: User?$expand=Friends($search=a), I got 
error showing me that "$search" is invalid. This is caused by needing SEARCH 
while presenting SEARCHINLINE. We can modify UriParser.g4 like this:
expandCountOption   : filter | searchInline;
and modify UriLexer.g4 like this:
SEARCHWORD: ('a'..'z'|'A'..'Z')+ ->popMode;


> UriLexer.g4 and UriParser.g4 grammar mistake
> --------------------------------------------
>
>                 Key: OLINGO-730
>                 URL: https://issues.apache.org/jira/browse/OLINGO-730
>             Project: Olingo
>          Issue Type: Bug
>          Components: odata4-server
>    Affects Versions: (Java) V4 4.0.0-beta-03
>         Environment: MAC OSX 10.8
> ANTLR 4.1
>            Reporter: Fang Yimeng
>            Priority: Minor
>
> 1. UriLexer.g4 line 74-79:
>       //JSON support 
>       BEGIN_OBJECT : WS*('{'/'%7B')WS*;
>       END_OBJECT : WS*('}'/'%7D')WS*;
>       BEGIN_ARRAY : WS*('['/'%5B')WS*;
>       END_ARRAY :WS*(']'/'%5D')WS*;
> I think '/' here means alternative, should '/' is replaced with '|'?
> 2. UriParser.g4 line 66:
>       pathSegment         : vNS=namespace? vODI=odataIdentifier 
> vlNVO+=nameValueOptList*;
> I read the ABNF of 
> OData4(http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/abnf/odata-abnf-construction-rules.txt),
>  and find out each pathSegment should only has one nameValueOptList, for the 
> reason that: 
>       collectionNavPath    = keyPredicate [ singleNavigation ]
> so should line 66 be like this:
>       pathSegment         : vNS=namespace? vODI=odataIdentifier 
> vlNVO=nameValueOptList?;
> 3. When I trying odata string like this: User?$expand=Friends($search=a), I 
> got error showing me that "$search" is invalid. This is caused by needing 
> SEARCH while presenting SEARCHINLINE. We can modify UriParser.g4 like this:
> expandCountOption   : filter | searchInline;
> and modify UriLexer.g4 like this:
> SEARCHWORD: ('a'..'z'|'A'..'Z')+ ->popMode;



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to