[swift-evolution] [Discussion]: Renaming #line, the line control statement

Erica Sadun erica at ericasadun.com
Thu Feb 4 11:55:11 CST 2016


How about this then?

syntactic-context-statement → #setsyntaxcontext
syntactic-context-statement → #setsyntaxcontext syntactic-control-assignments
syntactic-control-assignments → syntactic-control-assignments, syntactic-control-assignment
syntactic-control-assignments → syntactic-control-assignment
syntactic-control-assignment → line = line-number
syntactic-control-assignment → file = file-name

* It offers a specific identifier that's unlikely to conflict with future keywords
* It enables the grammar to expand for future syntactic control assignments
* It adds labels so dropped arguments and arbitrary order are easily disambiguated (thanks BRG)

I know Brent prefers reset to set (#resetsyntaxcontext to #setsyntaxcontext), and wanted to punch that point again here.

-- E

> On Feb 4, 2016, at 10:49 AM, Chris Lattner <clattner at apple.com> wrote:
> 
>> 
>> On Feb 4, 2016, at 9:46 AM, Erica Sadun <erica at ericasadun.com <mailto:erica at ericasadun.com>> wrote:
>> 
>> What do you feel about something more like:
>> 
>> syntactic-context-statement → #setsyntaxcontext
>> syntactic-context-statement → #setsyntaxcontext syntactic-control-assignments
>> syntactic-control-assignments → syntactic-control-assignments, syntactic-control-assignment
>> syntactic-control-assignments → syntactic-control-assignment
>> syntactic-control-assignment → line = line-number
>> syntactic-control-assignment → file = file-name
>> syntactic-control-assignment → column = column-number
>> syntactic-control-assignment → function = function-name
>> syntactic-control-assignment → dsohandle = dsohandle-name
> 
> Something like this makes sense to me, but only file and line can really be set by this construct.
> 
> -Chris
> 
>> 
>> -- E
>> 
>> 
>>> On Feb 4, 2016, at 10:31 AM, Chris Lattner <clattner at apple.com <mailto:clattner at apple.com>> wrote:
>>> 
>>>> 
>>>> On Feb 3, 2016, at 7:29 PM, Brent Royal-Gordon via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>>> 
>>>>> line-control-statement → #line­
>>>>> line-control-statement → #line ­line-number­ file-name­
>>>>> line-number → A decimal integer greater than zero
>>>>> file-name → static-string-literal­
>>>>> 
>>>>> The accepted implementation of SE-0028 disambiguates the two by requiring #line (the control statement) to appear at the first column for the time being. This is a stop-gap solution best remedied by renaming #line. 
>>>>> 
>>>>> Chris Lattner writes, "The core team isn’t thrilled with the magic “first token on a line” whitespace behavior that #line will be getting, and would like someone to start a discussion about renaming the old #line directive to something more specific and tailored to its purpose.   Once that name and syntax is settled, we can rename the directive and remove the whitespace rule."
>>>>> 
>>>>> I'd recommend #setline or #linenumber. Starting this thread to solicit other suggestions.
>>>> 
>>>> I don't love the way the current format has two unlabeled parameters in an arbitrary order. Maybe something more like this?
>>>> 
>>>> 	#reset line=50, file="foo.swift"
>>>> 
>>>> (I have a soft preference for "reset" over "set" because these are things the compiler changes automatically, but that might be a silly reason.)
>>>> 
>>>> Perhaps this could even let you set any combination of the #whatever parameters, so if, for instance, you were writing a parser generator, you could set #function to the name of the rule a particular piece of code came from.
>>> 
>>> Using something like this as the grammar structure makes sense to me, but I’d suggest something more specific (and longer) for this, perhaps:
>>> 
>>> #setsyntacticsourcelocation
>>> 
>>> or something. :-)
>>> 
>>> -Chris

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160204/02735f00/attachment.html>


More information about the swift-evolution mailing list