Elektro schrieb:
> Mir ist gerade aufgefallen dass die Arduino-IDE anscheinend von unten
> nach oben die Syntax kontrolliert, jedenfalls wird immer die unterste
> Zeile die einen Fehler enthält markiert.
Ganz klar: Der Compiler verwendet einen so genannten Bottom-Up-Parser
zur Analyse des Quellcodes:
https://de.wikipedia.org/wiki/Bottom-Up-Parser
Nee, war nur Spaaß :)
Der aktuelle GCC hat einen Top-Down-Parser nach dem Prinzip des
rekursiven Abstiegs. Früher hatte der GCC zwar einen LALR-Parser, und
der arbeitet bottom-up. Das ist aber schon lange her und hat mit der
Reihenfolge der Fehlermeldungen überhaupt nichts zu tun.
> Warum ist das so?
Ist das wirklich so? Hast du ein kleines Beispiel?
in folgendem Beispiel sieht es vielleicht so aus, als würfle der
Compiler die Meldungen durcheinander:
Fehlermeldungen (Zeile 1 folgt Zeile 2):
1 | sketch_apr23a:2: error: conflicting declaration 'double a'
|
2 | double a;
|
3 | ^
|
4 | sketch_apr23a:1: error: 'a' has a previous declaration as 'int a'
|
5 | int a;
|
6 | ^
|
In Wirklichkeit ist aber die zweite keine eigenständige Fehlermeldung,
sondern gibt nur einen zusätzlichen Hinweis zur ersten.