A NOTE has been added to this issue. 
====================================================================== 
http://austingroupbugs.net/view.php?id=1098 
====================================================================== 
Reported By:                Mark_Galeck
Assigned To:                
====================================================================== 
Project:                    1003.1(2016)/Issue7+TC2
Issue ID:                   1098
Category:                   Shell and Utilities
Type:                       Error
Severity:                   Editorial
Priority:                   normal
Status:                     New
Name:                       Mark Galeck 
Organization:                
User Reference:              
Section:                    2.10.2 Shell Grammar Rules 
Page Number:                2379 
Line Number:                76091 
Interp Status:              --- 
Final Accepted Text:         
====================================================================== 
Date Submitted:             2016-10-20 16:56 UTC
Last Modified:              2016-10-26 16:32 UTC
====================================================================== 
Summary:                    do_group symbol cannot be accepted as written,
because rule 6 cannot yield Done token
====================================================================== 

---------------------------------------------------------------------- 
 (0003458) Mark_Galeck (reporter) - 2016-10-26 16:32
 http://austingroupbugs.net/view.php?id=1098#c3458 
---------------------------------------------------------------------- 
>Rule 6 is necessary to force 'for' as unquoted text being treated as a
keyword and not a simple command with arguments, in the absence of a
sequential_sep as 'best/longest matching production' to satisfy the command
production. 


It could be that I already know what you are talking about, but can't tell
because I don't understand this sentence.

Since you write "necessary", can you give me an example involving "for",
that if we dropped rule 6 and just applied default rule 1, would behave
differently compared to the current standard?  


>A similar ambiguity exists for 'in' 

Likewise, please, an example involving "in".  


I am not trying to argue with you, I just want to see if there is anything
in what you wrote, that I don't already know.


> for varname do ( ) done<NL>
parses as a for loop, with '( )' representing a valid subshell
compound-list that does nothing, and fully matches for_clause choice 1


No it doesn't. '( )', with or without the space inside is invalid
subshell.
Both dash and bash do not accept it.


> for varname do \() done<NL>
parses as a simple command, 'for'; with 'varname', 'do', '()', and 'done'
as textual arguments,
as '\()' is an invalid compound-list that forces backtracking to
simple_command as best match


No it doesn't, for multiple reasons:

* 'for' as the first token will be treated as reserved word, regardless of
whether the remaining tokens do or not form valid 'for' loop sequence. 
That is because, in order for it to parse as a simple command, 'for' would
have to be WORD in the cmd_name production, and rule 7a applies, which
says, 'for' is For, not WORD.  

* Even if 'for' were a command name (which is not), \() is not one WORD
token, but two tokens, one \( and then second ), and the second token is
the ')' operator, so the whole thing would still not be one simple command
, but it would be invalid use of ')'.  

As before, check either dash or bash, they show what I wrote above.  


>  \for varname do ( ) done<NL>
also parses as a simple command, but with '(' and ')' as separate
arguments, due to the escaping '\' disabling keyword recognition.


No it doesn't.  Here '\for' is command OK, but both ( and ) are operators,
regardless of space between them, and they are unexpected.  

Again, bash and dash do not accept this. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2016-10-20 16:56 Mark_Galeck    New Issue                                    
2016-10-20 16:56 Mark_Galeck    Name                      => Mark Galeck     
2016-10-20 16:56 Mark_Galeck    Section                   => 2.10.2 Shell
Grammar Rules
2016-10-20 16:56 Mark_Galeck    Page Number               => 2379            
2016-10-20 16:56 Mark_Galeck    Line Number               => 76091           
2016-10-21 09:23 geoffclare     Note Added: 0003448                          
2016-10-21 09:24 geoffclare     Note Edited: 0003448                         
2016-10-21 09:41 geoffclare     Note Edited: 0003448                         
2016-10-21 21:56 Mark_Galeck    Note Added: 0003449                          
2016-10-22 08:00 geoffclare     Note Added: 0003450                          
2016-10-22 08:22 Mark_Galeck    Note Added: 0003451                          
2016-10-22 10:44 geoffclare     Note Added: 0003452                          
2016-10-22 12:01 Mark_Galeck    Note Added: 0003453                          
2016-10-22 12:18 Mark_Galeck    Note Added: 0003454                          
2016-10-22 12:19 Mark_Galeck    Note Edited: 0003454                         
2016-10-22 12:19 Mark_Galeck    Note Edited: 0003454                         
2016-10-22 12:20 Mark_Galeck    Note Edited: 0003454                         
2016-10-22 12:24 Mark_Galeck    Note Edited: 0003453                         
2016-10-22 12:29 Mark_Galeck    Note Added: 0003455                          
2016-10-25 23:16 shware_systems Note Added: 0003457                          
2016-10-26 16:32 Mark_Galeck    Note Added: 0003458                          
======================================================================


Reply via email to