View Issue Details

IDProjectCategoryView StatusLast Update
00008391003.1(2013)/Issue7+TC1Shell and Utilitiespublic2019-06-10 08:54
Reporterrhansen Assigned To 
PrioritynormalSeverityObjectionTypeError
Status ClosedResolutionAccepted As Marked 
NameRichard Hansen
OrganizationBBN
User Reference
Section2.10.2 (Shell Grammar Rules) rule 7.b.
Page Number2349
Line Number74755-74761
Interp StatusApproved
Final Accepted TextSee 0000839:0002248
Summary0000839: problems with reduction of WORD to ASSIGNMENT_WORD
DescriptionXCU 2.10.2 rule 7.b. has the following issues:
  * Rule 7.b. should not return WORD -- it should instead defer to
    rule 1 to allow implementations to add reserved words that contain
    equals signs.
  * The rule is missing the "else" case (it should say to apply rule 1
    if there is no <equals-sign> character).
  * Neither quoted <equals-sign> characters nor <equals-sign>
    characters in embedded parameter expansion, command substitution,
    or arithmetic expansion constructs should be considered when
    determining whether to apply rule 1 or return ASSIGNMENT_WORD.

Note that the last bullet point above is the subject of 0000643. The resolution of 0000643 does not completely solve the described problem, repeated here:

Each of the following:
    ${foo=bar}
    $(foo=bar; baz)
    $((foo=bar))
    ~foo=bar/baz
    "foo=bar"
    foo\=bar
is one token according to XCU 2.3. According to XCU 2.10.2, the tokens match cmd_name, so rule 7a is applied. Each token contains an equals sign, so rule 7a says to apply rule 7b. The tokens do not begin with '=', nor do all characters preceding '=' form a valid name, so according to 7b it is unspecified whether ASSIGNMENT_WORD or WORD is returned. All of these cases should return WORD.
Desired ActionAfter applying the changes in 0000643, change XCU 2.10.2 (Shell
Grammar Rules) rule 7.b. page 2349 lines 74755-74761 from:

    If the TOKEN contains the <equals-sign> character:

      * If it begins with '=', the token WORD shall be returned.
      * If all the characters in the TOKEN preceding the first '='
        form a valid name (see XBD Section 3.231), the token
        ASSIGNMENT_WORD shall be returned. (Quoted characters cannot
        participate in forming a valid name.)
      * Otherwise, it is unspecified whether it is ASSIGNMENT_WORD or
        WORD that is returned.

to:

    If the TOKEN contains an unquoted (as determined while applying
    rule #4 from section 2.3) <equals-sign> character that is not part
    of an embedded parameter expansion, command substitution, or
    arithmetic expansion construct (as determined while applying rule
    #5 from section 2.3):

      * If the TOKEN begins with '=', then rule 1 shall be applied.
      * If all the characters in the TOKEN preceding the first such
        <equals-sign> form a valid name (see XBD Section 3.231), the
        token ASSIGNMENT_WORD shall be returned. (Quoted characters
        cannot participate in forming a valid name.)
      * Otherwise, it is unspecified whether rule 1 is applied or
        ASSIGNMENT_WORD is returned.

    Otherwise, rule 1 shall be applied.
Tagstc2-2008

Relationships

related to 0000643 Closedajosey 1003.1(2008)/Issue 7 Reduction of TOKEN to WORD or ASSIGNMENT_WORD broken when TOKEN contains an equals sign 
parent of 0001276 Closed 1003.1(2013)/Issue7+TC1 incorrect resolution in 0000839 

Activities

rhansen

2014-05-22 15:42

manager   bugnote:0002248

Last edited: 2014-05-22 15:51

Interpretation response
------------------------
The standard is unclear on this issue, and no conformance distinction can be made between alternative implementations based on this. This is being referred to the sponsor.

Rationale:
-------------
None.

Notes to the Editor (not part of this interpretation):
-------------------------------------------------------
After applying the changes in 0000643, change XCU 2.10.2 (Shell Grammar Rules) rule 7.b. page 2349 lines 74755-74761 from:

    If the TOKEN contains the <equals-sign> character:

      * If it begins with '=', the token WORD shall be returned.
      * If all the characters in the TOKEN preceding the first '='
        form a valid name (see XBD Section 3.231), the token
        ASSIGNMENT_WORD shall be returned. (Quoted characters cannot
        participate in forming a valid name.)
      * Otherwise, it is unspecified whether it is ASSIGNMENT_WORD or
        WORD that is returned.

to:

    If the TOKEN contains an unquoted (as determined while applying
    rule #4 from section 2.3) <equals-sign> character that is not part
    of an embedded parameter expansion, command substitution, or
    arithmetic expansion construct (as determined while applying rule
    #5 from section 2.3):

      * If the TOKEN begins with '=', then rule 1 shall be applied.
      * If all the characters in the TOKEN preceding the first such
        <equals-sign> form a valid name (see XBD Section 3.231), the
        token ASSIGNMENT_WORD shall be returned.
      * Otherwise, it is unspecified whether rule 1 is applied or
        ASSIGNMENT_WORD is returned.

    Otherwise, rule 1 shall be applied.

ajosey

2014-05-23 13:18

manager   bugnote:0002251

Interpretation Proposed 23 May 2014

ajosey

2014-06-25 10:12

manager   bugnote:0002276

Interpretation approved 25 June 2014

Issue History

Date Modified Username Field Change
2014-05-08 18:51 rhansen New Issue
2014-05-08 18:51 rhansen Name => Richard Hansen
2014-05-08 18:51 rhansen Organization => BBN
2014-05-08 18:51 rhansen Section => 2.10.2 (Shell Grammar Rules) rule 7.b.
2014-05-08 18:51 rhansen Page Number => 2349
2014-05-08 18:51 rhansen Line Number => 74755-74761
2014-05-22 15:25 nick Relationship added related to 0000643
2014-05-22 15:42 rhansen Note Added: 0002248
2014-05-22 15:51 rhansen Note Edited: 0002248
2014-05-22 15:55 Don Cragun Interp Status => Pending
2014-05-22 15:55 Don Cragun Final Accepted Text => See 0000839:0002248
2014-05-22 15:55 Don Cragun Status New => Interpretation Required
2014-05-22 15:55 Don Cragun Resolution Open => Accepted As Marked
2014-05-22 15:56 Don Cragun Tag Attached: tc2-2008
2014-05-23 13:18 ajosey Interp Status Pending => Proposed
2014-05-23 13:18 ajosey Note Added: 0002251
2014-06-25 10:12 ajosey Interp Status Proposed => Approved
2014-06-25 10:12 ajosey Note Added: 0002276
2019-06-10 08:54 agadmin Status Interpretation Required => Closed
2019-07-30 14:26 eblake Relationship added parent of 0001276