On Wed, 1 Feb 2012 15:14:39 +1100
Erik Christiansen <dva...@internode.on.net> wrote:

> On 30.01.12 07:54, Kenneth Lerman wrote:
> > On 01/30/2012 12:28 AM, Erik Christiansen wrote:
> > > What is being missed here is that the present parser does all
> > > that you fear above, just without the maintainability and
> > > documentation benefits conferred by a higher level
> > > implementation, using powerful tools.
> > >
> > > Erik
> > >
> > No.  I don't think so.
> > 
> > The current implementation does it; not the current parser. If we
> > go back to the compilation/execution analogy, some error conditions
> > are detected at run time; not at compile time.
> 
> There is no compile time. Both the current and future parsers are
> interpreters only, AIUI.
> 
> > I don't see how the parser can require that G1 has an Fn clause
> > defined on the same or some previously executed line.
> 
> Nor can I. It doesn't. AIUI, gcode executes with whatever value of
> that modaility is current. It does that now, and any new interpreter
> easily does the same. The grammar then _permits_ an Fn clause where
> we choose.
> 
> > The parser knows nothing about execution order; only about lexical
> > order. Since the Fn might be hidden away in some subroutine, the
> > parse might not have seen it. I would think that knowing whether an
> > Fn is active is a difficult problem when looking from the outside,
> > but a simple problem from the inside of the run time environment.
> > (Of course, feel free to prove me wrong.)
> 
> Any "need" to know the run-time state of a modality before run-time is
> illusory. That which needs to be known at run-time needs to be known
> at run time, not before. It is worth understanding that the run-time
> value of a modality is not part of the grammar. I'm not sure what
> you're basing these imaginary concerns on, but I can't relate them to
> reality, despite some effort  :-)
> 
> > Don't get me wrong. I agree that we need a better definition of the 
> > grammar and a more structured implementation. In general, though, I 
> > prefer recursive descent parsers such as the present parser that is
> > used for each line. I consider the ability to generate excellent
> > diagnostic and error messages to be worth the effort of hand coding.
> 
> We usually prefer what we're good at. I'm as guilty of that as the
> next bloke. The actual merits of the alternatives have been kicked
> about upthread.
> 
> I wouldn't propose replacing the current parser in the forseeable
> future. Since there is interest in a more readable input syntax,
> expressed several times per year by a subset of LinuxCNC users, I have
> upthread already discussed implementing a filter which supplements the
> existing parser, but does not replace it. That way, there is scope for
> pleasing two groups.
> 
> > I recognize that my control structure (o-word) implementation
> > leaves a lot to be desired -- to say the least. About its only
> > saving grace is that it enables us to do a lot of things we
> > couldn't do before. It must be redone in a way that is obviously
> > correct and maintainable.
> 
> As they say, "The perfect is the enemy of the good." An available
> practical implementation is superior to any imagined "perfection"
> which does not yet exist. If the limitations of the current parser
> have forced clutter upon the user, just to get the parser to work,
> not to improve readability, then no-one could do a better job with
> the current tools.
> 
> And I sincerely want to express my thanks for the working gem that is
> LinuxCNC. It is so infuriatingly easy for someone to come along, after
> all the hard work of making something good out of nothing, and say "Ya
> know, we could improve this bit here." But it isn't done to be a PITA.
> 
> There is a large user base which is happy with the status quo. That is
> worth infinitely more than any amount of talk about making the syntax
> prettier. The current implementation satisfactorily makes swarf around
> the globe.
> 
> I honestly don't think it "must be redone". If we make a filter which
> pleases the "new look" enthusiasts, it'll just generate your o-word
> code, for input into the current parser. Whether anyone then ever goes
> so far as to merge the two, partly depends on how valuable a fully
> documented interpreter grammar is.
> 
> > I haven't looked closely at modern automated tools for doing this
> > in a few decades. If they let us generate effective diagnostic
> > information in a straightforward way, we should be using them. On
> > the other hand, the grammar should be simple enough that a hand
> > generated recursive descent parser should do fine.
> 
> In practice, the grammar has to be the same as now for the ""old
> look", just with optional "#< .>" etc., and optional "Rapid" instead
> of "G0" for the new. There cannot be substantial differences, or it's
> not just prettified gcode.
> 
> And in your last sentence, s/hand generated/auto generated/.
> There is no need to spend time or effort on actually writing code for
> the parser. Only code snippets to implement the actions of each leaf,
> i.e to spit out what we want after interpretation.
> 
> The O'Reily "Lex & Yacc" book is an easy introduction to using tools
> to generate lexers and parsers with minimal effort. Admittedly, it
> takes time and effort to tame them, but that's the case when doing
> serious work with any tool.
> 
> Maybe I should strip my embryonic filter of its more "way-out"
> translation, and start again with just documenting the existing
> grammar, with provision for optional use of decluttered syntax.
> The filter would pass legal gcode unaltered, and put back any "#< .>"
> etc. missing from the input. It would also convert "Rapid" to "G0", so
> nothing but good old gcode would be passed on to LinuxCNC.
> 
> It would take a while, not least because the current legal syntax is
> obscure. A practical way to proceed might be to initially pass
> anything not explicitly handled, prettify enough for some users to
> find it useful, and add error messages later, if/when there was some
> prospect of the formal parser entering prime time.
> 
> I'm doubtful that we have enough collegiate enthusiasm to merit
> getting carried away, but we're not having much summer anyway, so I
> could begin to swing what I have around to approximately meeting the
> desires expressed to date. (I'm as curious as anyone, to see how it
> pans out, once academic prognostications shuffle into the next room
> and have to become a working implementation. I can only go on past
> experience.)
> 
> Erik

To my uncluttered mind ... read blank ... 
is this a good way to set the state of a machine at any given line as a
precursor to "restart from line no"?

Dave
> 


------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to