Antwort

2

Ihre Frage ist nicht klar, aber es scheint, als ob Sie Ihren eigenen Compiler/lexikalischen Analysator schreiben und fragen, was es die beste Weise ist, diesen Fehler zu behandeln. Sie haben sich vielleicht gefragt, wie bestehende Compiler diesen Fall handhaben, aber das ist leicht herauszufinden. Kompilieren Sie es einfach:

$ gcc SO.c 
SO.c:4:5: error: invalid suffix "abc" on integer constant 

Es gibt keine richtige Antwort; Sie können es zu einem lexikalischen Fehler machen, aber dann müssten Sie eine lexikalische Regel hinzufügen, um dieser spezifischen Situation zu entsprechen, und dann ein Fehler-Token an den Parser zurückgeben, was dann einen Syntaxfehler verursachen würde. Alternativ könnten Sie auch eine Ziffer/ganze Zahl gefolgt von einem Bezeichner zurückgeben, was ebenfalls einen Syntaxfehler erzeugen würde. In der Regel ist es einfacher, die gesehenen Token zurückzugeben und den Parser als Syntaxfehler behandeln zu lassen. Sie können sehen, dass gcc und andere übliche Compiler tun, die es als die pragmatische Wahl bestätigt.