[fpc-devel] Output flush on pipes

Michael Van Canneyt michael at freepascal.org
Sun May 14 12:03:34 CEST 2006



On Sun, 14 May 2006, Daniël Mantione wrote:

> 
> 
> Op Sun, 14 May 2006, schreef Michael Van Canneyt:
> 
> > 
> > 
> > On Sun, 14 May 2006, Daniël Mantione wrote:
> > 
> > > 
> > > 
> > > Op Sun, 14 May 2006, schreef Martin Schreiber:
> > > 
> > > > Since some time FPC doesn't  flush output on pipes after writeln.
> > > > On linux I can use a pseudo terminal, what can I do on win32 to get flushed 
> > > > output from FPC into the message window of MSEide?
> > > 
> > > It is strongly recommended against to parse the compiler output, as it is 
> > > designed for humans, not computers. The formatting of the compiler output 
> > > can therefore change in time and can also be configured by the user in any 
> > > language. Some people are doing it anyway, like Lazarus.
> > > 
> > > The compiler has an interface designed for computers and that is through 
> > > the compiler and comphook units. This allows you to retrieve the messages 
> > > neatly. If you want process separation, please write a wrapper that puts 
> > > the messages in a computer friendly way, and we'll include it in FPC.
> > 
> > We could do this ourselves by assigning a unique number to each error.
> > (and keeping these numbers)
> 
> I think a command line output for computers needs to be a bit more 
> advanced, take for example this error message:
> 
> testc.pas(11,1) Fatal: Syntax error, "BEGIN" expected but "identifier Z" found
> 
> We have:
> * The source file
> * The error location
> * The error severity
> * The error message, containing two parameters.
> 
> Both the severity and error message are currently unpredictable, i.e. they 
> can be translated for example. Some IDE's may want to have access to the 
> error messages their parameters as well.
> 
> A command line output for computers also needs to be extendable, if we 
> want to output more information, this should not break existing 
> applications.
> 
> For example, a good way to output this error message in a computer
> friendly format would be:
> 
> error:(file='testc.pas';line=11;column=1;message_code='02003_F';
>        message='Syntax error, $1 expected but $2 found';
>        parameters=('BEGIN','IDENTIFIER Z'));

I'm all for such a message form; it should be easy to add with some -v switch...
But  
- This is no use if the message code changes over time,
  because that is still the unique identifier for the error...
- The message itself should not be given, IMHO. 
  The program can look it up in the error message file...

Michael.


More information about the fpc-devel mailing list