sure, but either way you look at it: if there's a language change, there still
be a need for recognizing the old syntax, either for in-place compatibility or
external automatic conversion
-m
Am 04.02.2012 um 22:25 schrieb Kenneth Lerman:
> The use of matching labels to resolve ambiguity was just a cheap trick
> to lower the cost of implementation. There is no reason that we should
> keep the labels on control structures. We should then follow the same
> rules that C uses.
>
> Ken
>
> On 2/4/2012 10:25 AM, Michael Haberler wrote:
>> {this is a bit of language/compiler theory, but then the thread started
>> here; sorry;)}
>>
>> One of ideas floating around was to to document the current language as an
>> EBNF, or an equivalent railroad diagram. An EBNF is a notation for a
>> context-free languages.
>>
>> That will not work, because the current LinuxCNC RS274NGC dialect cannot be
>> described by a context-free grammar in the first place, and hence not as an
>> EBNF, if one tries to include the control structures as language elements.
>>
>> This is different from the original language: the pre-oword syntax was
>> context-free, which is why there's a meaningful EBNF in the Tom Kramer
>> report, and working context-free parsers based on ANTLR and bison like here:
>> http://fennetic.net/irc/emc3/src/emc/interpreter/)
>>
>> To see why the current language is context-sensitive, consider just one
>> example:
>>
>> <<program start>>
>> o label1 do
>> ...
>> o label2 while ..
>> ...
>> o label3 endwhile
>> ...
>> o label4 while ..
>> <<eof>>
>>
>> You cannot determine by looking at a context-free grammar alone wether the
>> interpretation should be either:
>>
>> 1: (do ... while) (endwhile...while) or:
>> 2: (do ... (while ... endwhile) ... while)
>>
>> To resolve the ambiguity in scope, one needs to match the label *values*:
>>
>> (label1 == label4)&& (label2 == label3) -> interpretation 1 (in the
>> current language)
>> (label1 != label2) -> an error at 'endwhile'
>>
>> This also applies to if/then/elsif/else and repeat/endrepeat.
>>
>> So the labels constitute the context. Technically, since the labels are
>> variable keywords, this means a language with a theoretically infinite
>> alphabet.
>>
>> This has a couple of consequences:
>>
>> - writing an EBNF is only possibly on a line-by-line basis, not including
>> the control structures . But then such an EBNF will not tell you wether a
>> given program is correct wrt current scoping rules, or not, and as such
>> fairly useless.
>>
>> - it also means explains why my first attempt at a bison/flex parser *for
>> the current language* failed to properly recognize current control
>> structures because as it the stands the parser fails at the above
>> ambiguities. This also applies to other tools.
>>
>> This does not mean these tools are unusable, it just means the scanner needs
>> to tie into the parser or scope stack. It does however mean an EBNF will not
>> fully encompass all aspects of the language. This might be useful already.
>>
>> - Michael
>>
>> ps: this is a clarification of what we have, not a critique - C, and C++
>> have similar issues and work just fine, too.
>>
>> psps: so much for the comment 'G-code is extremely easy to parse.' ;)
>>
>>
>> ------------------------------------------------------------------------------
>> Try before you buy = See our experts in action!
>> 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-dev2
>> _______________________________________________
>> Emc-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/emc-users
>
> ------------------------------------------------------------------------------
> Try before you buy = See our experts in action!
> 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-dev2
> _______________________________________________
> Emc-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/emc-users
------------------------------------------------------------------------------
Try before you buy = See our experts in action!
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-dev2
_______________________________________________
Emc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-users