Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.sci.electronics > #264389

Re: State Machine Compiler für 8-bit AVRs?

From Stefan Reuther <stefan.news@arcor.de>
Newsgroups de.sci.electronics
Subject Re: State Machine Compiler für 8-bit AVRs?
Date 2019-09-24 19:18 +0200
Message-ID <qmdq68.3kc.1@stefan.msgid.phost.de> (permalink)
References (4 earlier) <qm846b$410$1@news2.open-news-network.org> <guqbrnF5agsU2@mid.individual.net> <qm9r9o$pej$1@news2.open-news-network.org> <qmad0t$nsh$1@solani.org> <qmadud$aks$1@news2.open-news-network.org>

Show all headers | View raw


Am 23.09.2019 um 14:31 schrieb Johannes Bauer:
> On 23.09.19 14:15, Gerhard Hoffmann wrote:
>> Und er muss dir auch nichts liefern, du hast nichts bei ihm gekauft.
> 
> Wenn jemand groß Sprüche klopft, wie einfach das doch alles von Hand
> sei, Lexer/Parser für komplexe Grammatiken zu schreiben (zum Beispiel
> der von C), und dann in der Praxis halt schon bei simpelsten Beispielen
> voll auf die Nase fliegt, dann ist das ja schon ein interessantes Ergebnis.

Ich warte ja auf das Gegenbeispiel, also: deinen C-Parser.

>> aber die wichtigen
>> Compiler, die jeder hernimmt, wie gcc oder clang benutzen rekursiven
>> Abstieg.
> 
> Das ist *professionelle* Software. Mit hunderttausenden Personenstunden,
> die da reingeflossen sind, sowohl in clang als auch in gcc. Und ich habe
> ausführlich beschrieben, warum die das so machen -- sowohl clang als
> auch gcc parsen eben auch C++, für das es keine ausdefinierte Grammatik
> gibt

*Das* ist Geschwätz. Selbstverständlich hat C++ eine Grammatik. Zu
finden im Standard-Dokument unter "Annex A" sowie in Fragmenten in den
einzelnen Kapiteln. Sie ist halt nur nicht LL(1).

> Ohne Not schreibt *niemand* einen Parser von Hand, auch nicht gcc und
> clang. Und wenn man sich dazu entscheidet, ist das *weitaus*
> schwieriger, als einen Parsergenerator zu nehmen.

Nein. Sage ich als einer, der routinemäßig Parser per Hand baut.

>> Pascal nimmt auch rekursiven Abstieg. Und da sind Bösartigkeiten
>> wie das with-statement drinnen:
>>
>> with record_variablenliste do begin ... end

(Das ist übrigens parserseitig völlig trivial. Für Pascal musst du nicht
wissen, was das Wort 'x' bedeutet, um aus 'x(y)' einen AST bauen zu können.)

>> und zwischen begin & end sind die Komponenten der records plötzlich
>> keine  rec.a und rec.b mehr, sondern einfach nur noch a und b.
>> Wenn's zufällig globale a und b gab, dann gibt's die eben vorrübergehend
>> nicht mehr. Bring das mal einem Parsergenerator nahe, wenn Variablen-
>> namen eben zwischendurch für etwas völlig anderes mit möglicherweise
>> einem anderen Typ stehen.
> 
> Ich weiß echt nicht, wieso du ständig mit Pascal anfängst, das hat mit
> dem Thema überhaupt nichts zu tun. Ich habe nie bestritten, dass
> Recursive Descent ein ordentliches oder geeignetes Parsing-Verfahren
> ist. Ich sage lediglich, dass das Schreiben eines Parsers von Hand
> RICHTIG viel schwieriger ist, als einen Parsergenerator zu nehmen und
> dass man deswegen dafür einen RICHTIG guten Grund (und viel, viel mehr
> Zeit) braucht. Und bin extrem skeptisch wenn sich jemand hinstellt und
> sagt "das hab ich schon gemacht, war ganz einfach". Weil >40000 Zeilen
> Code zu schreiben, nur fürs Parsing, ist eben NICHT einfach.

Das, was du beim Schreiben der Grammatik sparst - wenn überhaupt was -
zahlst du beim Debuggen drauf. Wo muss ich jetzt die Aktionen
platzieren? Wie bekomme ich das Speicherleck-frei? Wie bekomme ich
gescheite Fehlermeldungen außer "parse error"? Wie erhole ich mich am
besten von einem Parser-Fehler? (Nächstes Semikolon suchen? Oder doch
lieber geschweifte Klammern? Oder 'END'-Schlüsselwort?)

Und - und das ist einer der Gründe, einen C-Parser per Hand zu machen -
in einem händischen Parser ist es trivial, Feedback zu geben, was für
ein Ding 'x' in 'x*y[3]' ist, denn abhängig davon wird der Rest
geparsed. Mit einem generierten Parser muss man damit durch ein paar
Ebenen Generat (yacc, lex) durch und dabei Annahmen treffen, wie der
generierte Code sich benimmt.


  Stefan

Back to de.sci.electronics | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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