Hum, OK, it uses block Exprs... That may then work for punctuation and
whitespace too.

On Fri, Feb 12, 2016 at 4:20 PM Erik Schnetter <schnet...@gmail.com> wrote:

> Line numbers are already handled in this way:
>
> julia> parse("f(x)=x") |> dump
> Expr
>   head: Symbol =
>   args: Array(Any,(2,))
>     1: Expr
>       head: Symbol call
>       args: Array(Any,(2,))
>         1: Symbol f
>         2: Symbol x
>       typ: Any
>     2: Expr
>       head: Symbol block
>       args: Array(Any,(2,))
>         1: LineNumberNode
>           file: Symbol none
>           line: Int64 1
>         2: Symbol x
>       typ: Any
>   typ: Any
>
> -erik
>
> On Fri, Feb 12, 2016 at 10:25 AM, Cristóvão Duarte Sousa
> <cris...@gmail.com> wrote:
> > Yes, but then where such Exprs will placed? Not inside the args array of
> > other Exprs...
> > I guess that if it is necessary to revert back to source code from an
> AST,
> > then a modification to Expr has to be made...
> >
> > On Fri, Feb 12, 2016 at 1:47 PM Erik Schnetter <schnet...@gmail.com>
> wrote:
> >>
> >> On Fri, Feb 12, 2016 at 5:17 AM, Cristóvão Duarte Sousa
> >> <cris...@gmail.com> wrote:
> >> > I don't know if it has been said here before, sorry if I'm repeating,
> >> > but:
> >> > a way to represent the "concrete" syntax tree, convert it to AST and
> >> > then
> >> > back would be of great use here, see
> >> > https://github.com/JuliaLang/JuliaParser.jl/issues/22 .
> >> >
> >> > I actually thought a lot about that, and imagine that the `Expr` type
> >> > could
> >> > have an extra field to hold syntax delimiters (punctuation and
> >> > whitespace)
> >> > which is found around and between its arguments.
> >>
> >> Adding to the `Expr` type is expensive, since it's used a lot.
> >> Instead, you can add extra `Expr` objects, e.g. `Expr(:empty_line)`,
> >> or `Expr(:block_comment, "text")`, or `Expr(:inline_comment, "text")`.
> >>
> >> -erik
> >>
> >> > But a great knowledge of the parsers, both Flisp and Julia written
> ones,
> >> > would be required.
> >> > Then I also wondered that maybe one formal, but incomplete, grammar
> >> > could be
> >> > useful to construct such tree, as in intermediate step between source
> >> > code
> >> > and real AST.
> >> >
> >> > That would allow the creation of very powerful autoformatting tools,
> >> > along
> >> > with lints, refactoring and other advanced IDE functionalities.
> >> >
> >> > On Friday, February 12, 2016 at 4:58:33 AM UTC, Maxim Grechkin wrote:
> >> >>
> >> >> Was there any progress on this lately? I've noticed that
> atom-beautify
> >> >> plugin doesn't have Julia
> >> >> support(https://github.com/Glavin001/atom-beautify/issues/799), but
> >> >> there
> >> >> doesn't seem to be a tool that it can hook into.
> >> >>
> >> >> On Saturday, January 11, 2014 at 9:22:14 AM UTC-8, Stefan Karpinski
> >> >> wrote:
> >> >>>
> >> >>> Kind of. I don't think that expression printing is even remotely
> good
> >> >>> enough for this yet, but that's the basic idea that makes the most
> >> >>> sense to
> >> >>> me. No point in using separate parse or print code when there's
> >> >>> already
> >> >>> functions that do this stuff.
> >> >>>
> >> >>>
> >> >>> On Sat, Jan 11, 2014 at 12:06 PM, Job van der Zwan
> >> >>> <j.l.van...@gmail.com>
> >> >>> wrote:
> >> >>>>
> >> >>>> So you are saying that the most of the tooling required for an
> >> >>>> auto-formatting tool is already there?
> >> >>>>
> >> >>>> On Thursday, 9 January 2014 14:42:40 UTC+1, Stefan Karpinski wrote:
> >> >>>>>
> >> >>>>> I would be into having an auto-formatting tool. The way to do this
> >> >>>>> would be to work on the printing of ASTs until the way the code
> >> >>>>> prints is
> >> >>>>> the standard way it should be formatted. Then you have an
> >> >>>>> auto-formatter:
> >> >>>>> parse the code and print the resulting AST. One missing thing is
> >> >>>>> that parser
> >> >>>>> currently discards comments.
> >> >>>>>
> >> >>>>>
> >> >>>>> On Thu, Jan 9, 2014 at 6:48 AM, Job van der Zwan
> >> >>>>> <j.l.van...@gmail.com>
> >> >>>>> wrote:
> >> >>>>>>
> >> >>>>>> The problem I see with that is that you can wait for a very long
> >> >>>>>> time
> >> >>>>>> before any consensus emerges. There are simply many choices to be
> >> >>>>>> made in
> >> >>>>>> that regard which at the end of the day are kind of arbitrary -
> >> >>>>>> that a
> >> >>>>>> choice is made and consistently followed is more important, and
> >> >>>>>> again the
> >> >>>>>> benefit of autoformatting is that you don't have to waste putting
> >> >>>>>> effort
> >> >>>>>> into doing so.
> >> >>>>>>
> >> >>>>>> Having something something concrete to respond to also helps with
> >> >>>>>> the
> >> >>>>>> discussion - an autoformatting tool will impose a certain style,
> >> >>>>>> which will
> >> >>>>>> drive the discussion of standardising proper style. If people
> >> >>>>>> disagree with
> >> >>>>>> the formatting it provides, great! That means a discussion is
> >> >>>>>> triggered.
> >> >>>>>>
> >> >>>>>> So instead of waiting for a consensus to emerge, I think that
> >> >>>>>> building
> >> >>>>>> an autoformatting tool with a "good enough first guess" in terms
> of
> >> >>>>>> style
> >> >>>>>> would be the place to start. Even if it starts out with terrible
> >> >>>>>> style
> >> >>>>>> choices otherwise.
> >> >>>>>>
> >> >>>>>> (is this worth starting a separate discussion on the topic?)
> >> >>>>>>
> >> >>>>>>
> >> >>>>>> On Thursday, 9 January 2014 03:18:05 UTC+1, John Myles White
> wrote:
> >> >>>>>>>
> >> >>>>>>> There is not yet, because there is still not a consensus on
> proper
> >> >>>>>>> style. Hopefully once we have that, it will be easier to make a
> >> >>>>>>> julia fmt
> >> >>>>>>> tool.
> >> >>>>>>>
> >> >>>>>>>  — John
> >> >>>>>>>
> >> >>>>>>> On Jan 8, 2014, at 6:09 PM, Job van der Zwan
> >> >>>>>>> <j.l.van...@gmail.com>
> >> >>>>>>> wrote:
> >> >>>>>>>
> >> >>>>>>> > Depends on what you mean with legibility.
> >> >>>>>>> >
> >> >>>>>>> > For example (and not at all related to x.f(y) vs f(x, y)), if
> I
> >> >>>>>>> > look at my experience with the Go programming language, once
> you
> >> >>>>>>> > get used to
> >> >>>>>>> > its imposed One True Way of formatting it really makes reading
> >> >>>>>>> > other
> >> >>>>>>> > people's source code a lot easier. And talking about spending
> >> >>>>>>> > energy on the
> >> >>>>>>> > subject of legibility: setting up my editor to use go-fmt (the
> >> >>>>>>> > autoformatting tool) when building/saving code means I don't
> >> >>>>>>> > have to spend
> >> >>>>>>> > any time thinking about it when writing my own code either; it
> >> >>>>>>> > will
> >> >>>>>>> > automatically get fixed.
> >> >>>>>>> >
> >> >>>>>>> > It's one of those things the Go developers are very
> enthusiastic
> >> >>>>>>> > about, and at first you go "really? That's a killer feature?"
> >> >>>>>>> > but after
> >> >>>>>>> > using it you do start to miss it in other languages.
> >> >>>>>>> >
> >> >>>>>>> > Speaking of which, is there an autoformatting tool for Julia?
> >> >>>>>
> >> >>>>>
> >> >>>
> >> >
> >>
> >>
> >>
> >> --
> >> Erik Schnetter <schnet...@gmail.com>
> >> http://www.perimeterinstitute.ca/personal/eschnetter/
>
>
>
> --
> Erik Schnetter <schnet...@gmail.com>
> http://www.perimeterinstitute.ca/personal/eschnetter/
>

Reply via email to