[fpc-pascal]absolute identifier
Full_Name
memsom at post.interalpha.co.uk
Tue Mar 26 11:49:16 CET 2002
Quoting ron wilson <ron.wilson at coastgames.com>:
> type
> tyyvars = record
> yyinput, yyoutput : Text; (* input and output file *)
> yyline : String; (* current input line *)
> yylineno, yycolno : Integer; (* current input position *)
> yytext : String; (* matched text (should be
> considered
> r/o) *)
> yyleng : Byte (* length of matched text *)
> absolute yytext;
> end;
>
> i get the following error:
> Fatal: Syntax error, ; expected but identifier ABSOLUTE found
This relies on two things. 1: you are using Pascal strings (255 chars, first
char (position 0) is length of string) and 2: that the address in memory of
yytext will be constant, hence globals. This is never going to work nicely, but
a call to 'length(yytext);' gives the same value.
You could write a routine to do something with this info:
procedure populateyyvarsdata(var data: tyyvars);
begin
data.yyleng := length(yytext);
end;
You could write this better as a class :
type
tyyvars = class(TPersistent)
private
fyytext : String;
public
yyinput, yyoutput : Text; (* input and output file *)
yyline : String; (* current input line *)
yylineno, yycolno : Integer; (* current input position *)
property yyleng : integer read getyyleng;
property yytext : string read getyytext;
end;
...
function getyyleng: integer;
begin
result := length(fyytext);
end;
function getyytext: string;
begin
result := fyytext;
end;
...
Because TPersistent is streamable, you should be able to pass it about as text.
(ObjectBinaryToText and ObjectTextToBinary in Delphi.)
Just a thought anyways,
Matt
--
"Computer games don't affect kids; I mean if Pac-Man affected us as kids,
we'd all be running around in darkened rooms, munching magic pills and
listening to repetitive electronic music."
Kristian Wilson,
Nintendo, Inc, 1989
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d? s+++:+ a- C++ UL+ P L++ E---- W- N+ o+ K- w
O- M V PS PE-- Y PGP- t- 5-- X- R- tv+ b+ DI++ D+
G e++ h--- r+++ y+++
------END GEEK CODE BLOCK------
More information about the fpc-pascal
mailing list