Isnin, 2 Januari 2012

#10: Coderama IDE, Formatting Error Messages function

Petang tadi saya telah menulis satu function untuk parsing Formatted Error Message mengikut GNU Coding Standards. Ia ditulis melalui pascal dan digunakan bersama komponen synedit. Saya ingin kongsikan disini source code parser untuk mengeluarkan line number dari error message yang telah diformat mengikut GNU Coding Standards.
function TForm1.linedebug(a:string):integer;
var linenumber,colnumber,messageseparator:integer;
  string1,parse2,parse3,ki,sourcefile,errmessage:string;
begin

  colnumber:=0;

  messageseparator:= pos(': ',a);
  errmessage:=copy(a,messageseparator,length(a));
  string1:= copy (a,0,pos(': ',a)-1);
  sourcefile:=copy(string1,0,pos(':',string1)-1);

  ki:=copy(string1,pos(':',string1)+1,length(string1));

  if pos(':',ki)<> 0 then
  begin
   parse2:=copy(ki,pos(':',ki)+1,length(ki)); 
   parse3:=copy(ki,0,pos(':',ki)-1);
  end else parse3:=ki;

   linedebug:=strtoint(parse3);
  except
       on Exception : EConvertError do
   linedebug:=-1;
  end;
end; 

Mengikut artikel "4.4 Formatting Error Messages" dari GNU Coding Standards, Error messages from compilers should look like this:

source-file-name:lineno: message

If you want to mention the column number, use one of these formats:

source-file-name:lineno:column: message
source-file-name:lineno.column: message 

Source code yang saya kongsikan diatas adalah compatible dengan error message jenis pertama yang disertakan dengan column iaitu contohnya "coderama.c:50:20: declaration expected" dimana ia akan parse line number sebagai 50 dan column number sebagai 20 dan "coderama.c:15: declaration expected", line number sebagai 15 dan column sebagai 0. Terima kaseh. Selamat bercoderama!

Tiada ulasan: