mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-28 09:10:25 +02:00
* column problem hopefully solved
+ C vars declaration changed
This commit is contained in:
parent
05885faa83
commit
390fc9063d
@ -73,6 +73,9 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
|
||||
implementation
|
||||
{***************************************************************************}
|
||||
|
||||
uses
|
||||
scanner;
|
||||
|
||||
const
|
||||
never_copy_const_param : boolean = false;
|
||||
bytes2Sxx:array[1..4] of Topsize=(S_B,S_W,S_NO,S_L);
|
||||
@ -4859,19 +4862,15 @@ end;
|
||||
var
|
||||
oldcodegenerror : boolean;
|
||||
oldswitches : Tcswitches;
|
||||
oldis : pinputfile;
|
||||
oldnr : longint;
|
||||
oldpos : tfileposinfo;
|
||||
|
||||
begin
|
||||
oldcodegenerror:=codegenerror;
|
||||
oldswitches:=aktswitches;
|
||||
oldis:=current_module^.current_inputfile;
|
||||
oldnr:=current_module^.current_inputfile^.line_no;
|
||||
get_cur_file_pos(oldpos);
|
||||
|
||||
codegenerror:=false;
|
||||
current_module^.current_inputfile:=
|
||||
pinputfile(current_module^.sourcefiles.get_file(p^.fileinfo.fileindex));
|
||||
current_module^.current_inputfile^.line_no:=p^.fileinfo.line;
|
||||
set_cur_file_pos(p^.fileinfo);
|
||||
aktswitches:=p^.pragmas;
|
||||
if not(p^.error) then
|
||||
begin
|
||||
@ -4882,8 +4881,7 @@ end;
|
||||
else
|
||||
codegenerror:=true;
|
||||
aktswitches:=oldswitches;
|
||||
current_module^.current_inputfile:=oldis;
|
||||
current_module^.current_inputfile^.line_no:=oldnr;
|
||||
set_cur_file_pos(oldpos);
|
||||
end;
|
||||
|
||||
|
||||
@ -5137,7 +5135,11 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.7 1998-06-09 16:01:36 pierre
|
||||
Revision 1.8 1998-06-12 10:32:22 pierre
|
||||
* column problem hopefully solved
|
||||
+ C vars declaration changed
|
||||
|
||||
Revision 1.7 1998/06/09 16:01:36 pierre
|
||||
+ added procedure directive parsing for procvars
|
||||
(accepted are popstack cdecl and pascal)
|
||||
+ added C vars with the following syntax
|
||||
|
@ -58,7 +58,7 @@ implementation
|
||||
|
||||
uses
|
||||
verbose,cobjects,systems,globals,files,
|
||||
symtable,types,aasm,
|
||||
symtable,types,aasm,scanner,
|
||||
pass_1,hcodegen,temp_gen
|
||||
{$ifdef GDB}
|
||||
,gdb
|
||||
@ -230,19 +230,15 @@ implementation
|
||||
var
|
||||
oldcodegenerror : boolean;
|
||||
oldswitches : Tcswitches;
|
||||
oldis : pinputfile;
|
||||
oldnr : longint;
|
||||
oldpos : tfileposinfo;
|
||||
|
||||
begin
|
||||
oldcodegenerror:=codegenerror;
|
||||
oldswitches:=aktswitches;
|
||||
oldis:=current_module^.current_inputfile;
|
||||
oldnr:=current_module^.current_inputfile^.line_no;
|
||||
get_cur_file_pos(oldpos);
|
||||
|
||||
codegenerror:=false;
|
||||
current_module^.current_inputfile:=
|
||||
pinputfile(current_module^.sourcefiles.get_file(p^.fileinfo.fileindex));
|
||||
current_module^.current_inputfile^.line_no:=p^.fileinfo.line;
|
||||
set_cur_file_pos(p^.fileinfo);
|
||||
aktswitches:=p^.pragmas;
|
||||
if not(p^.error) then
|
||||
begin
|
||||
@ -253,8 +249,7 @@ implementation
|
||||
else
|
||||
codegenerror:=true;
|
||||
aktswitches:=oldswitches;
|
||||
current_module^.current_inputfile:=oldis;
|
||||
current_module^.current_inputfile^.line_no:=oldnr;
|
||||
set_cur_file_pos(oldpos);
|
||||
end;
|
||||
|
||||
|
||||
@ -516,7 +511,11 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.38 1998-06-09 16:01:37 pierre
|
||||
Revision 1.39 1998-06-12 10:32:23 pierre
|
||||
* column problem hopefully solved
|
||||
+ C vars declaration changed
|
||||
|
||||
Revision 1.38 1998/06/09 16:01:37 pierre
|
||||
+ added procedure directive parsing for procvars
|
||||
(accepted are popstack cdecl and pascal)
|
||||
+ added C vars with the following syntax
|
||||
|
637
compiler/depend
637
compiler/depend
@ -1,636 +1 @@
|
||||
pp: pp.pas \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
parser.ppu \
|
||||
systems.ppu \
|
||||
tree.ppu \
|
||||
symtable.ppu \
|
||||
options.ppu \
|
||||
link.ppu \
|
||||
import.ppu \
|
||||
files.ppu \
|
||||
verb_def.ppu \
|
||||
verbose.ppu
|
||||
$(COMPILER) pp
|
||||
|
||||
cobjects.ppu: cobjects.pas
|
||||
|
||||
globals.ppu: globals.pas \
|
||||
cobjects.ppu \
|
||||
systems.ppu
|
||||
|
||||
systems.ppu: systems.pas
|
||||
|
||||
parser.ppu: parser.pas \
|
||||
systems.ppu \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
verbose.ppu \
|
||||
symtable.ppu \
|
||||
files.ppu \
|
||||
aasm.ppu \
|
||||
hcodegen.ppu \
|
||||
import.ppu \
|
||||
assemble.ppu \
|
||||
link.ppu \
|
||||
script.ppu \
|
||||
gendef.ppu \
|
||||
scanner.ppu \
|
||||
pbase.ppu \
|
||||
pdecl.ppu \
|
||||
psystem.ppu \
|
||||
pmodules.ppu
|
||||
|
||||
verbose.ppu: verbose.pas \
|
||||
messages.ppu \
|
||||
globals.ppu
|
||||
|
||||
messages.ppu: messages.pas
|
||||
|
||||
symtable.ppu: symtable.pas \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
systems.ppu \
|
||||
globals.ppu \
|
||||
aasm.ppu \
|
||||
files.ppu \
|
||||
gendef.ppu \
|
||||
i386.ppu \
|
||||
gdb.ppu \
|
||||
types.ppu
|
||||
|
||||
aasm.ppu: aasm.pas \
|
||||
cobjects.ppu \
|
||||
files.ppu \
|
||||
globals.ppu \
|
||||
verbose.ppu \
|
||||
systems.ppu
|
||||
|
||||
files.ppu: files.pas \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
verbose.ppu \
|
||||
systems.ppu
|
||||
|
||||
gendef.ppu: gendef.pas \
|
||||
cobjects.ppu \
|
||||
systems.ppu \
|
||||
globals.ppu
|
||||
|
||||
i386.ppu: i386.pas \
|
||||
cobjects.ppu \
|
||||
aasm.ppu \
|
||||
globals.ppu \
|
||||
verbose.ppu
|
||||
|
||||
gdb.ppu: gdb.pas \
|
||||
i386.ppu \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
aasm.ppu
|
||||
|
||||
types.ppu: types.pas \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
symtable.ppu \
|
||||
tree.ppu \
|
||||
verbose.ppu \
|
||||
aasm.ppu
|
||||
|
||||
tree.ppu: tree.pas \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
i386.ppu \
|
||||
types.ppu \
|
||||
verbose.ppu \
|
||||
files.ppu
|
||||
|
||||
hcodegen.ppu: hcodegen.pas \
|
||||
aasm.ppu \
|
||||
tree.ppu \
|
||||
symtable.ppu \
|
||||
i386.ppu \
|
||||
systems.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
globals.ppu \
|
||||
files.ppu
|
||||
|
||||
import.ppu: import.pas \
|
||||
cobjects.ppu \
|
||||
systems.ppu \
|
||||
verbose.ppu \
|
||||
os2_targ.ppu \
|
||||
win_targ.ppu
|
||||
|
||||
os2_targ.ppu: os2_targ.pas \
|
||||
import.ppu \
|
||||
globals.ppu \
|
||||
link.ppu \
|
||||
files.ppu
|
||||
|
||||
link.ppu: link.pas \
|
||||
cobjects.ppu \
|
||||
script.ppu \
|
||||
globals.ppu \
|
||||
systems.ppu \
|
||||
verbose.ppu
|
||||
|
||||
script.ppu: script.pas \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
systems.ppu
|
||||
|
||||
win_targ.ppu: win_targ.pas \
|
||||
import.ppu \
|
||||
aasm.ppu \
|
||||
files.ppu \
|
||||
globals.ppu \
|
||||
cobjects.ppu \
|
||||
i386.ppu
|
||||
|
||||
assemble.ppu: assemble.pas \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
aasm.ppu \
|
||||
script.ppu \
|
||||
files.ppu \
|
||||
systems.ppu \
|
||||
verbose.ppu \
|
||||
ag386att.ppu \
|
||||
ag386int.ppu \
|
||||
ag386nsm.ppu
|
||||
|
||||
ag386att.ppu: ag386att.pas \
|
||||
aasm.ppu \
|
||||
assemble.ppu \
|
||||
globals.ppu \
|
||||
systems.ppu \
|
||||
cobjects.ppu \
|
||||
i386.ppu \
|
||||
files.ppu \
|
||||
verbose.ppu \
|
||||
gdb.ppu
|
||||
|
||||
ag386int.ppu: ag386int.pas \
|
||||
aasm.ppu \
|
||||
assemble.ppu \
|
||||
globals.ppu \
|
||||
systems.ppu \
|
||||
cobjects.ppu \
|
||||
i386.ppu \
|
||||
files.ppu \
|
||||
verbose.ppu \
|
||||
gdb.ppu
|
||||
|
||||
ag386nsm.ppu: ag386nsm.pas \
|
||||
aasm.ppu \
|
||||
assemble.ppu \
|
||||
globals.ppu \
|
||||
systems.ppu \
|
||||
cobjects.ppu \
|
||||
i386.ppu \
|
||||
files.ppu \
|
||||
verbose.ppu \
|
||||
gdb.ppu
|
||||
|
||||
scanner.ppu: scanner.pas \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
files.ppu \
|
||||
verbose.ppu \
|
||||
systems.ppu \
|
||||
symtable.ppu \
|
||||
switches.ppu
|
||||
|
||||
switches.ppu: switches.pas \
|
||||
globals.ppu \
|
||||
verbose.ppu \
|
||||
files.ppu \
|
||||
systems.ppu
|
||||
|
||||
pbase.ppu: pbase.pas \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
symtable.ppu \
|
||||
files.ppu \
|
||||
scanner.ppu \
|
||||
systems.ppu \
|
||||
verbose.ppu
|
||||
|
||||
pdecl.ppu: pdecl.pas \
|
||||
globals.ppu \
|
||||
symtable.ppu \
|
||||
cobjects.ppu \
|
||||
scanner.ppu \
|
||||
aasm.ppu \
|
||||
tree.ppu \
|
||||
pass_1.ppu \
|
||||
files.ppu \
|
||||
types.ppu \
|
||||
hcodegen.ppu \
|
||||
verbose.ppu \
|
||||
systems.ppu \
|
||||
gdb.ppu \
|
||||
pbase.ppu \
|
||||
ptconst.ppu \
|
||||
pexpr.ppu \
|
||||
psub.ppu \
|
||||
pexports.ppu \
|
||||
i386.ppu
|
||||
|
||||
pass_1.ppu: pass_1.pas \
|
||||
tree.ppu \
|
||||
scanner.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
systems.ppu \
|
||||
globals.ppu \
|
||||
aasm.ppu \
|
||||
symtable.ppu \
|
||||
types.ppu \
|
||||
hcodegen.ppu \
|
||||
files.ppu \
|
||||
i386.ppu \
|
||||
tgeni386.ppu
|
||||
|
||||
tgeni386.ppu: tgeni386.pas \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
tree.ppu \
|
||||
hcodegen.ppu \
|
||||
verbose.ppu \
|
||||
files.ppu \
|
||||
aasm.ppu \
|
||||
i386.ppu
|
||||
|
||||
ptconst.ppu: ptconst.pas \
|
||||
symtable.ppu \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
scanner.ppu \
|
||||
aasm.ppu \
|
||||
tree.ppu \
|
||||
pass_1.ppu \
|
||||
hcodegen.ppu \
|
||||
types.ppu \
|
||||
verbose.ppu \
|
||||
pbase.ppu \
|
||||
pexpr.ppu \
|
||||
i386.ppu
|
||||
|
||||
pexpr.ppu: pexpr.pas \
|
||||
symtable.ppu \
|
||||
tree.ppu \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
scanner.ppu \
|
||||
aasm.ppu \
|
||||
pass_1.ppu \
|
||||
systems.ppu \
|
||||
hcodegen.ppu \
|
||||
types.ppu \
|
||||
verbose.ppu \
|
||||
pbase.ppu \
|
||||
pdecl.ppu \
|
||||
i386.ppu
|
||||
|
||||
psub.ppu: psub.pas \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
scanner.ppu \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
tree.ppu \
|
||||
pass_1.ppu \
|
||||
types.ppu \
|
||||
hcodegen.ppu \
|
||||
files.ppu \
|
||||
verbose.ppu \
|
||||
systems.ppu \
|
||||
import.ppu \
|
||||
gendef.ppu \
|
||||
gdb.ppu \
|
||||
i386.ppu \
|
||||
cgi386.ppu \
|
||||
tgeni386.ppu \
|
||||
cgai386.ppu \
|
||||
aopt386.ppu \
|
||||
pbase.ppu \
|
||||
pdecl.ppu \
|
||||
pexpr.ppu \
|
||||
pstatmnt.ppu
|
||||
|
||||
cgi386.ppu: cgi386.pas \
|
||||
tree.ppu \
|
||||
verbose.ppu \
|
||||
cobjects.ppu \
|
||||
systems.ppu \
|
||||
globals.ppu \
|
||||
files.ppu \
|
||||
symtable.ppu \
|
||||
types.ppu \
|
||||
aasm.ppu \
|
||||
pass_1.ppu \
|
||||
hcodegen.ppu \
|
||||
gdb.ppu \
|
||||
i386.ppu \
|
||||
tgeni386.ppu \
|
||||
cgai386.ppu \
|
||||
cg386con.ppu \
|
||||
cg386mat.ppu \
|
||||
cg386cnv.ppu \
|
||||
cg386set.ppu \
|
||||
cg386add.ppu \
|
||||
cg386mem.ppu \
|
||||
cg386cal.ppu \
|
||||
cg386ld.ppu \
|
||||
cg386flw.ppu
|
||||
|
||||
cgai386.ppu: cgai386.pas \
|
||||
cobjects.ppu \
|
||||
tree.ppu \
|
||||
i386.ppu \
|
||||
aasm.ppu \
|
||||
symtable.ppu \
|
||||
systems.ppu \
|
||||
globals.ppu \
|
||||
verbose.ppu \
|
||||
files.ppu \
|
||||
types.ppu \
|
||||
pbase.ppu \
|
||||
tgeni386.ppu \
|
||||
hcodegen.ppu \
|
||||
gdb.ppu
|
||||
|
||||
cg386con.ppu: cg386con.pas \
|
||||
tree.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
i386.ppu \
|
||||
hcodegen.ppu \
|
||||
cgai386.ppu \
|
||||
tgeni386.ppu \
|
||||
cgi386.ppu
|
||||
|
||||
cg386mat.ppu: cg386mat.pas \
|
||||
tree.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
globals.ppu \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
i386.ppu \
|
||||
types.ppu \
|
||||
cgi386.ppu \
|
||||
cgai386.ppu \
|
||||
tgeni386.ppu \
|
||||
hcodegen.ppu
|
||||
|
||||
cg386cnv.ppu: cg386cnv.pas \
|
||||
tree.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
globals.ppu \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
i386.ppu \
|
||||
cgi386.ppu \
|
||||
cgai386.ppu \
|
||||
tgeni386.ppu \
|
||||
hcodegen.ppu
|
||||
|
||||
cg386set.ppu: cg386set.pas \
|
||||
tree.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
globals.ppu \
|
||||
systems.ppu \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
i386.ppu \
|
||||
types.ppu \
|
||||
cgi386.ppu \
|
||||
cgai386.ppu \
|
||||
tgeni386.ppu \
|
||||
hcodegen.ppu
|
||||
|
||||
cg386add.ppu: cg386add.pas \
|
||||
tree.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
globals.ppu \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
i386.ppu \
|
||||
types.ppu \
|
||||
cgi386.ppu \
|
||||
cgai386.ppu \
|
||||
tgeni386.ppu \
|
||||
hcodegen.ppu
|
||||
|
||||
cg386mem.ppu: cg386mem.pas \
|
||||
tree.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
globals.ppu \
|
||||
systems.ppu \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
i386.ppu \
|
||||
types.ppu \
|
||||
cgi386.ppu \
|
||||
cgai386.ppu \
|
||||
tgeni386.ppu \
|
||||
hcodegen.ppu
|
||||
|
||||
cg386cal.ppu: cg386cal.pas \
|
||||
symtable.ppu \
|
||||
tree.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
globals.ppu \
|
||||
systems.ppu \
|
||||
aasm.ppu \
|
||||
i386.ppu \
|
||||
types.ppu \
|
||||
cgi386.ppu \
|
||||
cgai386.ppu \
|
||||
tgeni386.ppu \
|
||||
hcodegen.ppu \
|
||||
cg386ld.ppu
|
||||
|
||||
cg386ld.ppu: cg386ld.pas \
|
||||
tree.ppu \
|
||||
i386.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
globals.ppu \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
types.ppu \
|
||||
cgi386.ppu \
|
||||
cgai386.ppu \
|
||||
tgeni386.ppu \
|
||||
hcodegen.ppu
|
||||
|
||||
cg386flw.ppu: cg386flw.pas \
|
||||
tree.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
globals.ppu \
|
||||
systems.ppu \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
i386.ppu \
|
||||
types.ppu \
|
||||
cgi386.ppu \
|
||||
cgai386.ppu \
|
||||
tgeni386.ppu \
|
||||
hcodegen.ppu
|
||||
|
||||
aopt386.ppu: aopt386.pas \
|
||||
aasm.ppu \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
systems.ppu \
|
||||
symtable.ppu \
|
||||
verbose.ppu \
|
||||
hcodegen.ppu \
|
||||
i386.ppu \
|
||||
cgi386.ppu
|
||||
|
||||
pstatmnt.ppu: pstatmnt.pas \
|
||||
tree.ppu \
|
||||
cobjects.ppu \
|
||||
scanner.ppu \
|
||||
globals.ppu \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
pass_1.ppu \
|
||||
types.ppu \
|
||||
hcodegen.ppu \
|
||||
files.ppu \
|
||||
verbose.ppu \
|
||||
systems.ppu \
|
||||
i386.ppu \
|
||||
rai386.ppu \
|
||||
ratti386.ppu \
|
||||
radi386.ppu \
|
||||
tgeni386.ppu \
|
||||
pbase.ppu \
|
||||
pexpr.ppu \
|
||||
pdecl.ppu
|
||||
|
||||
rai386.ppu: rai386.pas \
|
||||
tree.ppu \
|
||||
i386.ppu \
|
||||
systems.ppu \
|
||||
files.ppu \
|
||||
aasm.ppu \
|
||||
globals.ppu \
|
||||
asmutils.ppu \
|
||||
hcodegen.ppu \
|
||||
scanner.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
types.ppu
|
||||
|
||||
asmutils.ppu: asmutils.pas \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
hcodegen.ppu \
|
||||
verbose.ppu \
|
||||
systems.ppu \
|
||||
globals.ppu \
|
||||
files.ppu \
|
||||
cobjects.ppu \
|
||||
i386.ppu
|
||||
|
||||
ratti386.ppu: ratti386.pas \
|
||||
i386.ppu \
|
||||
tree.ppu \
|
||||
files.ppu \
|
||||
aasm.ppu \
|
||||
globals.ppu \
|
||||
asmutils.ppu \
|
||||
hcodegen.ppu \
|
||||
scanner.ppu \
|
||||
systems.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
symtable.ppu \
|
||||
types.ppu
|
||||
|
||||
radi386.ppu: radi386.pas \
|
||||
tree.ppu \
|
||||
files.ppu \
|
||||
i386.ppu \
|
||||
hcodegen.ppu \
|
||||
globals.ppu \
|
||||
scanner.ppu \
|
||||
aasm.ppu \
|
||||
cobjects.ppu \
|
||||
symtable.ppu \
|
||||
types.ppu \
|
||||
verbose.ppu \
|
||||
asmutils.ppu
|
||||
|
||||
pexports.ppu: pexports.pas \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
scanner.ppu \
|
||||
symtable.ppu \
|
||||
pbase.ppu \
|
||||
verbose.ppu
|
||||
|
||||
psystem.ppu: psystem.pas \
|
||||
symtable.ppu \
|
||||
globals.ppu \
|
||||
tree.ppu
|
||||
|
||||
pmodules.ppu: pmodules.pas \
|
||||
files.ppu \
|
||||
cobjects.ppu \
|
||||
verbose.ppu \
|
||||
systems.ppu \
|
||||
globals.ppu \
|
||||
symtable.ppu \
|
||||
aasm.ppu \
|
||||
hcodegen.ppu \
|
||||
link.ppu \
|
||||
assemble.ppu \
|
||||
i386.ppu \
|
||||
scanner.ppu \
|
||||
pbase.ppu \
|
||||
psystem.ppu \
|
||||
pdecl.ppu \
|
||||
psub.ppu \
|
||||
parser.ppu
|
||||
|
||||
options.ppu: options.pas \
|
||||
cobjects.ppu \
|
||||
globals.ppu \
|
||||
systems.ppu \
|
||||
verbose.ppu \
|
||||
scanner.ppu \
|
||||
link.ppu \
|
||||
verb_def.ppu \
|
||||
messages.ppu \
|
||||
gendef.ppu \
|
||||
opts386.ppu
|
||||
|
||||
verb_def.ppu: verb_def.pas \
|
||||
verbose.ppu \
|
||||
globals.ppu \
|
||||
files.ppu
|
||||
|
||||
opts386.ppu: opts386.pas \
|
||||
options.ppu \
|
||||
systems.ppu \
|
||||
globals.ppu
|
||||
|
||||
|
@ -58,8 +58,9 @@ unit files;
|
||||
pinputfile = ^tinputfile;
|
||||
tinputfile = object(textfile)
|
||||
filenotatend : boolean;
|
||||
line_no : longint;
|
||||
line_count : longint; { second counter for unimportant tokens }
|
||||
line_no : longint; { position to give out }
|
||||
true_line : longint; { real line counter }
|
||||
column : longint;
|
||||
next : pinputfile; { next input file in the stack of input files }
|
||||
ref_count : longint; { to handle the browser refs }
|
||||
constructor init(const p,n,e : string);
|
||||
@ -259,7 +260,8 @@ unit files;
|
||||
inherited init(p,n,e);
|
||||
filenotatend:=true;
|
||||
line_no:=1;
|
||||
line_count:=0;
|
||||
true_line:=1;
|
||||
column:=1;
|
||||
next:=nil;
|
||||
end;
|
||||
|
||||
@ -938,7 +940,11 @@ unit files;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.18 1998-06-11 13:58:07 peter
|
||||
Revision 1.19 1998-06-12 10:32:26 pierre
|
||||
* column problem hopefully solved
|
||||
+ C vars declaration changed
|
||||
|
||||
Revision 1.18 1998/06/11 13:58:07 peter
|
||||
* small fix to let newppu compile
|
||||
|
||||
Revision 1.17 1998/06/09 16:01:40 pierre
|
||||
|
@ -4928,8 +4928,7 @@ unit pass_1;
|
||||
oldcodegenerror : boolean;
|
||||
oldswitches : Tcswitches;
|
||||
{ there some calls of do_firstpass in the parser }
|
||||
oldis : pinputfile;
|
||||
oldnr : longint;
|
||||
oldpos : tfileposinfo;
|
||||
{$ifdef extdebug}
|
||||
str1,str2 : string;
|
||||
oldp : ptree;
|
||||
@ -4943,8 +4942,7 @@ unit pass_1;
|
||||
{$endif extdebug}
|
||||
{ if we save there the whole stuff, }
|
||||
{ line numbers become more correct }
|
||||
oldis:=current_module^.current_inputfile;
|
||||
oldnr:=current_module^.current_inputfile^.line_no;
|
||||
get_cur_file_pos(oldpos);
|
||||
oldcodegenerror:=codegenerror;
|
||||
oldswitches:=aktswitches;
|
||||
{$ifdef extdebug}
|
||||
@ -4961,9 +4959,7 @@ unit pass_1;
|
||||
{$endif extdebug}
|
||||
|
||||
codegenerror:=false;
|
||||
current_module^.current_inputfile:=
|
||||
pinputfile(current_module^.sourcefiles.get_file(p^.fileinfo.fileindex));
|
||||
current_module^.current_inputfile^.line_no:=p^.fileinfo.line;
|
||||
set_cur_file_pos(p^.fileinfo);
|
||||
aktswitches:=p^.pragmas;
|
||||
|
||||
if not(p^.error) then
|
||||
@ -4991,8 +4987,7 @@ unit pass_1;
|
||||
inc(p^.firstpasscount);
|
||||
{$endif extdebug}
|
||||
aktswitches:=oldswitches;
|
||||
current_module^.current_inputfile:=oldis;
|
||||
current_module^.current_inputfile^.line_no:=oldnr;
|
||||
set_cur_file_pos(oldpos);
|
||||
end;
|
||||
|
||||
function do_firstpass(var p : ptree) : boolean;
|
||||
@ -5017,7 +5012,11 @@ unit pass_1;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.29 1998-06-09 16:01:44 pierre
|
||||
Revision 1.30 1998-06-12 10:32:28 pierre
|
||||
* column problem hopefully solved
|
||||
+ C vars declaration changed
|
||||
|
||||
Revision 1.29 1998/06/09 16:01:44 pierre
|
||||
+ added procedure directive parsing for procvars
|
||||
(accepted are popstack cdecl and pascal)
|
||||
+ added C vars with the following syntax
|
||||
|
@ -1575,6 +1575,8 @@ unit pdecl;
|
||||
filepos : tfileposinfo;
|
||||
|
||||
Csym : pvarsym;
|
||||
is_cdecl,extern_Csym,export_Csym : boolean;
|
||||
C_name : string;
|
||||
|
||||
begin
|
||||
hs:='';
|
||||
@ -1590,32 +1592,11 @@ unit pdecl;
|
||||
(pattern<>'PUBLISHED') and
|
||||
(pattern<>'PROTECTED') do
|
||||
begin
|
||||
C_name:=orgpattern;
|
||||
sc:=idlist;
|
||||
consume(COLON);
|
||||
p:=read_type('');
|
||||
if do_absolute and (token=ID) and (pattern='CALIAS') then
|
||||
begin
|
||||
s:=sc^.get_with_tokeninfo(filepos);
|
||||
if sc^.get<>'' then
|
||||
Message(parser_e_absolute_only_one_var);
|
||||
dispose(sc,done);
|
||||
consume(ID);
|
||||
if (token<>CCHAR) and (token<>CSTRING) then
|
||||
consume(CSTRING)
|
||||
else
|
||||
begin
|
||||
Csym:=new(pvarsym,init_C(s,pattern,p));
|
||||
consume(token);
|
||||
consume(SEMICOLON);
|
||||
if (token=ID) and (pattern='EXTERNAL') then
|
||||
begin
|
||||
Csym^.var_options:=Csym^.var_options or vo_is_external;
|
||||
Consume(ID);
|
||||
end;
|
||||
symtablestack^.insert(Csym);
|
||||
end;
|
||||
end
|
||||
else if do_absolute and (token=ID) and (pattern='ABSOLUTE') then
|
||||
if do_absolute and (token=ID) and (pattern='ABSOLUTE') then
|
||||
begin
|
||||
s:=sc^.get_with_tokeninfo(filepos);
|
||||
if sc^.get<>'' then
|
||||
@ -1685,12 +1666,56 @@ unit pdecl;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if token=SEMICOLON then
|
||||
if not(is_record) then
|
||||
consume(token);
|
||||
if do_absolute and (token=ID) and
|
||||
((pattern='EXPORT') or (pattern='EXTERNAL')
|
||||
or (pattern='CDECL')) then
|
||||
begin
|
||||
if (symtablestack^.symtabletype=objectsymtable) then
|
||||
if pattern='CDECL' then
|
||||
begin
|
||||
consume(ID);
|
||||
consume(SEMICOLON);
|
||||
if (token=ID) and (pattern='STATIC') and
|
||||
is_cdecl:=true;
|
||||
end
|
||||
else
|
||||
is_cdecl:=false;
|
||||
|
||||
extern_Csym:=(pattern='EXTERNAL');
|
||||
if not is_cdecl then
|
||||
export_Csym:=(pattern='EXPORT')
|
||||
else
|
||||
export_Csym:=false;
|
||||
s:=sc^.get_with_tokeninfo(filepos);
|
||||
if sc^.get<>'' then
|
||||
Message(parser_e_absolute_only_one_var);
|
||||
dispose(sc,done);
|
||||
if extern_Csym or export_Csym then
|
||||
consume(ID);
|
||||
{ external and export need a name after }
|
||||
if not is_cdecl then
|
||||
begin
|
||||
if (token<>CCHAR) and (token<>CSTRING) then
|
||||
consume(CSTRING);
|
||||
C_name:=pattern;
|
||||
consume(token);
|
||||
consume(SEMICOLON);
|
||||
end;
|
||||
if is_cdecl and extern_Csym then
|
||||
consume(SEMICOLON);
|
||||
Csym:=new(pvarsym,init_C(s,C_name,p));
|
||||
if extern_Csym then
|
||||
begin
|
||||
Csym^.var_options:=Csym^.var_options or vo_is_external;
|
||||
{ correct type ?? }
|
||||
externals^.concat(new(pai_external,init(Csym^.mangledname,EXT_NEAR)));
|
||||
end;
|
||||
symtablestack^.insert(Csym);
|
||||
end
|
||||
else
|
||||
if (symtablestack^.symtabletype=objectsymtable) then
|
||||
begin
|
||||
if (token=ID) and (pattern='STATIC') and
|
||||
(cs_static_keyword in aktswitches) then
|
||||
begin
|
||||
current_object_option:=current_object_option or sp_static;
|
||||
@ -1707,15 +1732,7 @@ unit pdecl;
|
||||
begin
|
||||
{ at the right line }
|
||||
insert_syms(symtablestack,sc,p);
|
||||
consume(SEMICOLON);
|
||||
end
|
||||
end
|
||||
else
|
||||
begin
|
||||
insert_syms(symtablestack,sc,p);
|
||||
if not(is_record) then
|
||||
consume(SEMICOLON);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
while token=SEMICOLON do
|
||||
consume(SEMICOLON);
|
||||
@ -1860,7 +1877,11 @@ unit pdecl;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.25 1998-06-09 16:01:45 pierre
|
||||
Revision 1.26 1998-06-12 10:32:30 pierre
|
||||
* column problem hopefully solved
|
||||
+ C vars declaration changed
|
||||
|
||||
Revision 1.25 1998/06/09 16:01:45 pierre
|
||||
+ added procedure directive parsing for procvars
|
||||
(accepted are popstack cdecl and pascal)
|
||||
+ added C vars with the following syntax
|
||||
|
@ -250,7 +250,7 @@ var
|
||||
{ Possiblities for first token in a statement: }
|
||||
{ Local Label, Label, Directive, Prefix or Opcode.... }
|
||||
tokenpos.line:=current_module^.current_inputfile^.line_no;
|
||||
tokenpos.column:=get_current_col;
|
||||
tokenpos.column:=get_file_col;
|
||||
tokenpos.fileindex:=current_module^.current_index;
|
||||
if firsttoken and not (c in [newline,#13,'{',';']) then
|
||||
begin
|
||||
@ -2172,7 +2172,11 @@ Begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.4 1998-06-04 23:51:56 peter
|
||||
Revision 1.5 1998-06-12 10:32:31 pierre
|
||||
* column problem hopefully solved
|
||||
+ C vars declaration changed
|
||||
|
||||
Revision 1.4 1998/06/04 23:51:56 peter
|
||||
* m68k compiles
|
||||
+ .def file creation moved to gendef.pas so it could also be used
|
||||
for win32
|
||||
|
@ -78,7 +78,7 @@ unit radi386;
|
||||
while not(ende) do
|
||||
begin
|
||||
tokenpos.line:=current_module^.current_inputfile^.line_no;
|
||||
tokenpos.column:=get_current_col;
|
||||
tokenpos.column:=get_file_col;
|
||||
tokenpos.fileindex:=current_module^.current_index;
|
||||
case c of
|
||||
'A'..'Z','a'..'z','_' : begin
|
||||
@ -239,7 +239,11 @@ unit radi386;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.4 1998-06-04 23:51:58 peter
|
||||
Revision 1.5 1998-06-12 10:32:32 pierre
|
||||
* column problem hopefully solved
|
||||
+ C vars declaration changed
|
||||
|
||||
Revision 1.4 1998/06/04 23:51:58 peter
|
||||
* m68k compiles
|
||||
+ .def file creation moved to gendef.pas so it could also be used
|
||||
for win32
|
||||
|
@ -351,7 +351,7 @@ var
|
||||
{ Possiblities for first token in a statement: }
|
||||
{ Local Label, Label, Directive, Prefix or Opcode.... }
|
||||
tokenpos.line:=current_module^.current_inputfile^.line_no;
|
||||
tokenpos.column:=get_current_col;
|
||||
tokenpos.column:=get_file_col;
|
||||
tokenpos.fileindex:=current_module^.current_index;
|
||||
if firsttoken and not (c in [newline,#13,'{',';']) then
|
||||
begin
|
||||
@ -3376,7 +3376,11 @@ Begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.9 1998-05-31 14:13:32 peter
|
||||
Revision 1.10 1998-06-12 10:32:33 pierre
|
||||
* column problem hopefully solved
|
||||
+ C vars declaration changed
|
||||
|
||||
Revision 1.9 1998/05/31 14:13:32 peter
|
||||
* fixed call bugs with assembler readers
|
||||
+ OPR_SYMBOL to hold a symbol in the asm parser
|
||||
* fixed staticsymtable vars which were acessed through %ebp instead of
|
||||
|
@ -328,7 +328,7 @@ const
|
||||
{ Possiblities for first token in a statement: }
|
||||
{ Local Label, Label, Directive, Prefix or Opcode.... }
|
||||
tokenpos.line:=current_module^.current_inputfile^.line_no;
|
||||
tokenpos.column:=get_current_col;
|
||||
tokenpos.column:=get_file_col;
|
||||
tokenpos.fileindex:=current_module^.current_index;
|
||||
if firsttoken and not (c in [newline,#13,'{',';']) then
|
||||
begin
|
||||
@ -3691,7 +3691,11 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.11 1998-05-31 14:13:35 peter
|
||||
Revision 1.12 1998-06-12 10:32:35 pierre
|
||||
* column problem hopefully solved
|
||||
+ C vars declaration changed
|
||||
|
||||
Revision 1.11 1998/05/31 14:13:35 peter
|
||||
* fixed call bugs with assembler readers
|
||||
+ OPR_SYMBOL to hold a symbol in the asm parser
|
||||
* fixed staticsymtable vars which were acessed through %ebp instead of
|
||||
|
@ -163,7 +163,10 @@ unit scanner;
|
||||
procedure syntaxerror(const s : string);
|
||||
function yylex : ttoken;
|
||||
function asmgetchar : char;
|
||||
{ column position of last token }
|
||||
function get_current_col : longint;
|
||||
{ column position of file }
|
||||
function get_file_col : longint;
|
||||
procedure get_cur_file_pos(var fileinfo : tfileposinfo);
|
||||
procedure set_cur_file_pos(const fileinfo : tfileposinfo);
|
||||
|
||||
@ -252,16 +255,27 @@ unit scanner;
|
||||
end;
|
||||
|
||||
|
||||
const
|
||||
current_column : longint = 1;
|
||||
|
||||
function get_current_col : longint;
|
||||
|
||||
begin
|
||||
get_current_col:=current_column;
|
||||
end;
|
||||
|
||||
function get_file_col : longint;
|
||||
begin
|
||||
(* how was expecting files larger than 2Go ???
|
||||
{$ifdef TP}
|
||||
if lastlinepos<=lasttokenpos then
|
||||
get_current_col:=longint(lasttokenpos)-longint(lastlinepos)
|
||||
get_file_col:=longint(lasttokenpos)-longint(lastlinepos)
|
||||
else
|
||||
get_current_col:=longint(lastlinepos)-longint(lasttokenpos);
|
||||
get_file_col:=longint(lastlinepos)-longint(lasttokenpos);
|
||||
{$else}
|
||||
get_current_col:=cardinal(lasttokenpos)-cardinal(lastlinepos);
|
||||
{$endif}
|
||||
get_file_col:=cardinal(lasttokenpos)-cardinal(lastlinepos);
|
||||
{$endif} *)
|
||||
get_file_col:=longint(lasttokenpos)-longint(lastlinepos);
|
||||
end;
|
||||
|
||||
|
||||
@ -308,7 +322,7 @@ unit scanner;
|
||||
if readsize > 0 then
|
||||
begin
|
||||
{ force proper line counting }
|
||||
saveline:=current_module^.current_inputfile^.line_no;
|
||||
saveline:=current_module^.current_inputfile^.true_line;
|
||||
i:=0;
|
||||
inputpointer:=inputbuffer;
|
||||
while i<readsize do
|
||||
@ -322,13 +336,13 @@ unit scanner;
|
||||
inc(longint(inputpointer));
|
||||
inc(i);
|
||||
end;
|
||||
inc(current_module^.current_inputfile^.line_no);
|
||||
inc(current_module^.current_inputfile^.true_line);
|
||||
end;
|
||||
end;
|
||||
inc(i);
|
||||
inc(longint(inputpointer));
|
||||
end;
|
||||
current_module^.current_inputfile^.line_no:=saveline;
|
||||
current_module^.current_inputfile^.true_line:=saveline;
|
||||
end;
|
||||
inputbuffer[readsize]:=#0;
|
||||
inputpointer:=inputbuffer;
|
||||
@ -378,8 +392,8 @@ unit scanner;
|
||||
{ show status }
|
||||
Comment(V_Status,'');
|
||||
{ increase line counters }
|
||||
inc(current_module^.current_inputfile^.line_no);
|
||||
status.currentline:=current_module^.current_inputfile^.line_no;
|
||||
inc(current_module^.current_inputfile^.true_line);
|
||||
status.currentline:=current_module^.current_inputfile^.true_line;
|
||||
inc(status.compiledlines);
|
||||
lastlinepos:=inputpointer;
|
||||
end;
|
||||
@ -684,8 +698,8 @@ unit scanner;
|
||||
{ this is a floating point number or range like 1..3 }
|
||||
if s_point then
|
||||
begin
|
||||
tokenpos.line:=current_module^.current_inputfile^.line_no;
|
||||
tokenpos.column:=get_current_col;
|
||||
tokenpos.line:=current_module^.current_inputfile^.true_line;
|
||||
tokenpos.column:=get_file_col;
|
||||
tokenpos.fileindex:=current_module^.current_index;
|
||||
s_point:=false;
|
||||
if c='.' then
|
||||
@ -710,8 +724,8 @@ unit scanner;
|
||||
|
||||
{ Save current token position }
|
||||
lasttokenpos:=inputpointer;
|
||||
tokenpos.line:=current_module^.current_inputfile^.line_no;
|
||||
tokenpos.column:=get_current_col;
|
||||
tokenpos.line:=current_module^.current_inputfile^.true_line;
|
||||
tokenpos.column:=get_file_col;
|
||||
tokenpos.fileindex:=current_module^.current_index;
|
||||
|
||||
|
||||
@ -1088,7 +1102,14 @@ unit scanner;
|
||||
end;
|
||||
end;
|
||||
|
||||
exit_label:
|
||||
exit_label:
|
||||
{ don't change the file : too risky !! }
|
||||
if current_module^.current_index=tokenpos.fileindex then
|
||||
begin
|
||||
current_module^.current_inputfile^.line_no:=tokenpos.line;
|
||||
current_module^.current_inputfile^.column:=tokenpos.column;
|
||||
current_column:=tokenpos.column;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@ -1101,13 +1122,13 @@ exit_label:
|
||||
end
|
||||
else
|
||||
readchar;
|
||||
with tokenpos do
|
||||
{ must be put in the assembler readers }
|
||||
(* with tokenpos do
|
||||
begin
|
||||
|
||||
line:=current_module^.current_inputfile^.line_no;
|
||||
column:=get_current_col;
|
||||
line:=current_module^.current_inputfile^.true_line;
|
||||
column:=get_file_col;
|
||||
fileindex:=current_module^.current_index;
|
||||
end;
|
||||
end; *)
|
||||
|
||||
case c of
|
||||
'{' : begin
|
||||
@ -1189,14 +1210,18 @@ exit_label:
|
||||
procedure set_cur_file_pos(const fileinfo : tfileposinfo);
|
||||
|
||||
begin
|
||||
current_module^.current_index:=fileinfo.fileindex;
|
||||
current_module^.current_inputfile:=
|
||||
pinputfile(current_module^.sourcefiles.get_file(fileinfo.fileindex));
|
||||
if current_module^.current_index<>fileinfo.fileindex then
|
||||
begin
|
||||
current_module^.current_index:=fileinfo.fileindex;
|
||||
current_module^.current_inputfile:=
|
||||
pinputfile(current_module^.sourcefiles.get_file(fileinfo.fileindex));
|
||||
end;
|
||||
if assigned(current_module^.current_inputfile) then
|
||||
current_module^.current_inputfile^.line_no:=fileinfo.line;
|
||||
{fileinfo.fileindex:=current_module^.current_inputfile^.ref_index;}
|
||||
{ should allways be the same !! }
|
||||
{ fileinfo.column:=get_current_col; }
|
||||
begin
|
||||
current_module^.current_inputfile^.line_no:=fileinfo.line;
|
||||
current_module^.current_inputfile^.column:=fileinfo.column;
|
||||
current_column:=fileinfo.column;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure DoneScanner(testendif:boolean);
|
||||
@ -1256,7 +1281,11 @@ exit_label:
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.23 1998-06-03 22:49:02 peter
|
||||
Revision 1.24 1998-06-12 10:32:36 pierre
|
||||
* column problem hopefully solved
|
||||
+ C vars declaration changed
|
||||
|
||||
Revision 1.23 1998/06/03 22:49:02 peter
|
||||
+ wordbool,longbool
|
||||
* rename bis,von -> high,low
|
||||
* moved some systemunit loading/creating to psystem.pas
|
||||
|
Loading…
Reference in New Issue
Block a user