[fpc-devel]h2pas and #warning
Jeff Pohlmeyer
yetanothergeek at yahoo.com
Sun Mar 2 08:50:11 CET 2003
If I feed this into h2pas:
#error "This is an error"
#warning "This is a warning"
#define nothing 0
I get an error message:
Illegal character in line 2
"#warning "This is a warning""
at line 2 error : syntax error
and the output is:
{$error "This is an error"}
(* error
#warning "This is a warning"
(* error
#warning "This is a warning"
in define line 3 *)
For some reason, h2pas is writing the message twice, and
not properly closing the comment for the first message.
( This also causes it to skip the #define on line 3 )
Here is a simple patch so it will recognize the #warning,
and keep it from falling through on unknown directives...
[PATCH]
--- scan.l.old Wed Feb 26 12:45:31 2003
+++ scan.l.new Sun Mar 2 01:25:26 2003
@@ -584,6 +584,12 @@
writeln(outfile,'}');
flush(outfile);
end;
+"#"[ \t]*"warning" begin
+ write(outfile,'{$warning');
+ copy_until_eol;
+ writeln(outfile,'}');
+ flush(outfile);
+ end;
"#"[ \t]*"include" begin
write(outfile,'{$include');
copy_until_eol;
@@ -630,6 +636,20 @@
in_define:=true;
in_space_define:=1;
return(DEFINE);
+ end;
+"#" begin
+ writeln('at line ',yylineno,
+ ' error : unknown directive');
+ if not stripinfo then
+ begin
+ write(outfile,'(** unknown directive: #');
+ copy_until_eol;
+ writeln(outfile,' *)');
+ flush(outfile);
+ end
+ else
+ skip_until_eol;
+ block_type:=bt_no;
end;
"char" return(_CHAR);
"union" return(UNION);
[/PATCH]
Now the output is:
{$error "This is an error"}
{$warning "This is a warning"}
const
nothing = 0;
This will also let it handle things like:
#strange "This is something strange"
Prints the message:
at line 3 error : unknown directive
And becomes:
(** unknown directive: #strange "This is something strange" *)
__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - forms, calculators, tips, more
http://taxes.yahoo.com/
More information about the fpc-devel
mailing list