Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.sci.electronics > #264671
| From | Stefan Reuther <stefan.news@arcor.de> |
|---|---|
| Newsgroups | de.sci.electronics |
| Subject | Re: State Machine Compiler für 8-bit AVRs? |
| Date | 2019-09-27 17:42 +0200 |
| Message-ID | <qmlhmk.4k4.1@stefan.msgid.phost.de> (permalink) |
| References | (8 earlier) <qmadud$aks$1@news2.open-news-network.org> <qmdq68.3kc.1@stefan.msgid.phost.de> <qmdocn$crk$1@news2.open-news-network.org> <qmg9e7.2tg.1@stefan.msgid.phost.de> <qmkhnk$764$1@news2.open-news-network.org> |
Am 27.09.2019 um 10:37 schrieb Johannes Bauer:
>>> Und dann nochmal überdeutlich: "This summary of C ++ syntax is intended
>>> to be an aid to comprehension. It is not an exact statement of the
>>> language."
>>
>> Das ist die Zusammenfassung der Fragmente. Nicht normativ, weil die
>> normativen Teile nebst der semantischen Bedingungen in den anderen
>> Kapiteln stehen, und weil dir niemand zusichert, in dem Anhang nichts
>> vergessen zu haben.
>
> Und selbst die Fragmente sind horrend unvollständig. Ich nehme mir ein
> beliebiges Beispiel raus: "14.2. Names of template specializations".
> Eine popelige Grammatik, evtl 15 Zeilen lang. Gefolgt von 1 1/2 Seiten
> Prosa, die dann genau sagt wie die zu interpretieren ist.
Das nennt sich - ich wiederhole mich - semantische Bedingungen. Von
Trivialitäten wie Brainfuck abgesehen kommt kaum eine Sprache ohne aus.
>>>> sowie in Fragmenten in den
>>>> einzelnen Kapiteln.
>>>
>>> Genau, verteilt über ~1300 Seiten, aber eben nicht ausdefiniert (und
>>> genau das habe ich geschrieben, keine ausdefinierte Grammatik).
>>
>> Was wäre denn eine "ausdefinierte Grammatik"?
>
> Eine formale Beschreibung, die man im idealfall direkt einem Parser
> vorlegen kann, also maschinenlesbar ist. C++ ist aber als Sprache so
> kompliziert, dass ich vermute, dass das wohl nicht (mehr?) machbar ist.
> Deswegen nutzt man eben viel Prosa und Beispiele, um zu verdeutlichen,
> was gemeint ist.
Du kannst die Grammatik einem ausreichend fähigen Parsergenerator
vorlegen. Der wird dann halt *mehr* erkennen als nur gültige
C++-Programme, da die semantischen Bedingungen die gültigen Programme
*einschränken* ("eine Variable muss vor der Verwendung deklariert sein"
usw.).
>> Die ernsthafte Schwäche, die diese Grammatik hat, ist, dass sie zwischen
>> den Ebenen "lexikalische Analyse", "Präprozessor" und "syntaktische
>> Analyse" nicht sauber trennt. Jedem Praktiker ist das egal. Regeln wie
>> "maximum munch" (also dass 'inti' ein Wort ist und nicht das gleiche wie
>> 'int i') werden quasi immer in Prosa angegeben, nicht in der Grammatik.
>
> Ich würde sagen, die ernsthafteste Schwäche sind die extrem
> komplizierten Disambiguation Regeln. Die wirklich korrekt zu
> implementieren ist (auch aufgrund der mangelhaften Definition als
> textuelle Repräsentation) extrem schwierig und das zeigt sich auch immer
> wieder bei Beispielen, die von einem Compiler gefressen werden und von
> einem anderen nicht.
Diese Disambiguierungsregeln hat es zum Teil von C geerbt. 'a * b;' ist
ein expression-statement oder eine Deklaration.
> C++ ist halt Stückelwerk. Außerdem sind ihnen offenbar irgendwann die
> Tokens ausgegangen, sonst hätten wir nicht jahrelang elendige Probleme
> gehabt mir trivialsten Mist wie
>
> std::vector<std::vector<std::string>>
>
> bzw eben der früher notwendigen Variante
>
> std::vector<std::vector<std::string> >
>
> Wenn mich meiner Errinerung nicht täuscht, sind die ntowendigen
> Disambiguation Regeln dafür erst mit C++11 dazugekommen. Das ist einfach
> nur gruselig.
Das hat nichts mit schwammiger Disambiguierung zu tun, das ist ein ganz
normaler "maximum munch" Lexer, der, wenn man ihm keinen Tipp gibt, '>>'
als ein Token parsed.
Solche Effekte gibt es in vielen Sprachen. Pascal:
a := sqrt(.5);
(parsed nicht, weil '(.' als '[' interpretiert wird.)
In C++ hat man halt eine Sonderbehandlung für diesen einen Fall eingebaut.
Stefan
Back to de.sci.electronics | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
State Machine Compiler für 8-bit AVRs? Andreas Weber <info@tech-chat.de> - 2019-09-21 11:29 +0200
Re: State Machine Compiler für 8-bit AVRs? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2019-09-21 12:26 +0200
Re: State Machine Compiler für 8-bit AVRs? Andreas Weber <info@tech-chat.de> - 2019-09-21 19:09 +0200
Re: State Machine Compiler für 8-bit AVRs? Hergen Lehmann <hlehmann.expires.5-11@snafu.de> - 2019-09-21 20:37 +0200
Re: State Machine Compiler für 8-bit AVRs? Andreas Weber <info@tech-chat.de> - 2019-09-22 12:48 +0200
Re: State Machine Compiler für 8-bit AVRs? olaf <olaf@criseis.ruhr.de> - 2019-09-22 13:27 +0200
Re: State Machine Compiler für 8-bit AVRs? Johannes Bauer <dfnsonfsduifb@gmx.de> - 2019-09-22 17:23 +0200
Re: State Machine Compiler für 8-bit AVRs? Andreas Weber <info@tech-chat.de> - 2019-09-23 20:15 +0200
Re: State Machine Compiler für 8-bit AVRs? Stefan Reuther <stefan.news@arcor.de> - 2019-09-22 10:48 +0200
Re: State Machine Compiler für 8-bit AVRs? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2019-09-22 12:55 +0200
Re: State Machine Compiler für 8-bit AVRs? Johannes Bauer <dfnsonfsduifb@gmx.de> - 2019-09-22 17:32 +0200
Re: State Machine Compiler für 8-bit AVRs? Gerhard Hoffmann <dk4xp@arcor.de> - 2019-09-22 20:43 +0200
Re: State Machine Compiler für 8-bit AVRs? Johannes Bauer <dfnsonfsduifb@gmx.de> - 2019-09-22 21:10 +0200
Re: State Machine Compiler für 8-bit AVRs? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2019-09-23 00:34 +0200
Re: State Machine Compiler für 8-bit AVRs? Johannes Bauer <dfnsonfsduifb@gmx.de> - 2019-09-23 09:12 +0200
Re: State Machine Compiler für 8-bit AVRs? Gerhard Hoffmann <dk4xp@arcor.de> - 2019-09-23 14:15 +0200
Re: State Machine Compiler für 8-bit AVRs? Johannes Bauer <dfnsonfsduifb@gmx.de> - 2019-09-23 14:31 +0200
Re: State Machine Compiler für 8-bit AVRs? Stefan Reuther <stefan.news@arcor.de> - 2019-09-24 19:18 +0200
Re: State Machine Compiler für 8-bit AVRs? Johannes Bauer <dfnsonfsduifb@gmx.de> - 2019-09-24 20:47 +0200
Re: State Machine Compiler für 8-bit AVRs? Stefan Reuther <stefan.news@arcor.de> - 2019-09-25 17:51 +0200
Re: State Machine Compiler für 8-bit AVRs? Johannes Bauer <dfnsonfsduifb@gmx.de> - 2019-09-27 10:37 +0200
Re: State Machine Compiler für 8-bit AVRs? Stefan Reuther <stefan.news@arcor.de> - 2019-09-27 17:42 +0200
Re: State Machine Compiler für 8-bit AVRs? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2019-09-27 21:22 +0200
Re: State Machine Compiler für 8-bit AVRs? Stefan Reuther <stefan.news@arcor.de> - 2019-09-28 11:58 +0200
Re: State Machine Compiler für 8-bit AVRs? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2019-09-28 13:48 +0200
Re: State Machine Compiler für 8-bit AVRs? Johannes Bauer <dfnsonfsduifb@gmx.de> - 2019-09-28 13:43 +0200
Re: State Machine Compiler für 8-bit AVRs? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2019-09-23 19:07 +0200
Re: State Machine Compiler für 8-bit AVRs? Johannes Bauer <dfnsonfsduifb@gmx.de> - 2019-09-23 20:08 +0200
Re: State Machine Compiler für 8-bit AVRs? Gerhard Hoffmann <dk4xp@arcor.de> - 2019-09-22 13:40 +0200
Re: State Machine Compiler für 8-bit AVRs? olaf <olaf@criseis.ruhr.de> - 2019-09-22 14:59 +0200
csiph-web