>>>>> "Ken" == Ken Kahn <[email protected]> writes:
Ken> P.S. Is this the right list to ask this or should I be using Ken> github for this? Sorry, I know this can get confusing -- there's netlogo-users and netlogo-devel, plus we're now encouraging asking questions on Stack Overflow, and then there's all the repos at github.com/NetLogo, each with its own issue tracker. In general, unless you're fairly confident that it's more appropriate to use the issue tracker for something (e.g. if it's clearly a bug report), asking on a list first is a good default. I think that's a safe statement to make about open-source projects generally, not just about us specifically. Mailing list threads can always later be linked to, or copy-and-pasted from, if an issue ultimately is created. Ken> In 5.0.5 I can declare pens, globals, etc after some Ken> procedures. In 5.1 M-2 'check' says 'keyword expected' and Ken> highlights the word 'globals'. Moving it to the top fixes the Ken> problem. Ken> Is this an intentional change in 5.1? Ha, well, sort of. It may be accidental that this was *ever* allowed. At the time, a decade or so ago, that we added support for including ".nls" files, we had to relax things so each included file could have its own declarations, separate from those in the main code tab. This had the side effect of relaxing the restriction within each file as well. I no longer recall if this was intentional or not. Did we discuss it, did we notice and shrug our shoulders, or did we not even notice? I can't remember. For 5.1, I did a ground-up rewrite of StructureParser, the phase of the NetLogo compiler that handles overall program structure. (It needed redoing as part of preparatory work on Tortoise; plus in general, the old bad code was an obstacle for other potential compiler and engine improvements.) The rewrite involved replacing a bunch of messy ad-hoc parsing code with a formal grammar. In case anyone's curious, the grammar rules are here: https://github.com/NetLogo/NetLogo/blob/headless/src/main/org/nlogo/parse/StructureCombinators.scala The pattern part of each rule is everything before `^^`. When I wrote the new grammar, I had to make an explicit decision about this issue of where declarations are allowed. I picked the stricter option, figuring that it could always be relaxed later. Also, my own feeling is that we probably don't want to encourage people to intermingle variable declarations and procedure declarations in large models. We never do it that way in Sample Models. The decision isn't set in stone yet though. The grammar could still be altered. Do you want to make a pitch that it should be altered? -- Seth Tisue | Northwestern University | http://tisue.net developer, NetLogo: http://ccl.northwestern.edu/netlogo/ -- You received this message because you are subscribed to the Google Groups "netlogo-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
