mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 12:39:09 +02:00
* scanner object to class
This commit is contained in:
parent
fdeadeed22
commit
f0a0c63c77
@ -277,10 +277,10 @@ begin
|
|||||||
actasmpattern:='';
|
actasmpattern:='';
|
||||||
{ while space and tab , continue scan... }
|
{ while space and tab , continue scan... }
|
||||||
while c in [' ',#9] do
|
while c in [' ',#9] do
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
{ get token pos }
|
{ get token pos }
|
||||||
if not (c in [newline,#13,'{',';']) then
|
if not (c in [newline,#13,'{',';']) then
|
||||||
current_scanner^.gettokenpos;
|
current_scanner.gettokenpos;
|
||||||
{ Local Label, Label, Directive, Prefix or Opcode }
|
{ Local Label, Label, Directive, Prefix or Opcode }
|
||||||
if firsttoken and not(c in [newline,#13,'{',';']) then
|
if firsttoken and not(c in [newline,#13,'{',';']) then
|
||||||
begin
|
begin
|
||||||
@ -292,12 +292,12 @@ begin
|
|||||||
inc(len);
|
inc(len);
|
||||||
actasmpattern[len]:=c;
|
actasmpattern[len]:=c;
|
||||||
{ Let us point to the next character }
|
{ Let us point to the next character }
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
while c in ['A'..'Z','a'..'z','0'..'9','_','$'] do
|
while c in ['A'..'Z','a'..'z','0'..'9','_','$'] do
|
||||||
begin
|
begin
|
||||||
inc(len);
|
inc(len);
|
||||||
actasmpattern[len]:=c;
|
actasmpattern[len]:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
actasmpattern[0]:=chr(len);
|
actasmpattern[0]:=chr(len);
|
||||||
{ this is a local label... }
|
{ this is a local label... }
|
||||||
@ -305,7 +305,7 @@ begin
|
|||||||
Begin
|
Begin
|
||||||
{ local variables are case sensitive }
|
{ local variables are case sensitive }
|
||||||
actasmtoken:=AS_LLABEL;
|
actasmtoken:=AS_LLABEL;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
firsttoken:=true;
|
firsttoken:=true;
|
||||||
exit;
|
exit;
|
||||||
end
|
end
|
||||||
@ -323,7 +323,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
inc(len);
|
inc(len);
|
||||||
actasmpattern[len]:=c;
|
actasmpattern[len]:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
actasmpattern[0]:=chr(len);
|
actasmpattern[0]:=chr(len);
|
||||||
{ Label ? }
|
{ Label ? }
|
||||||
@ -331,7 +331,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
actasmtoken:=AS_LABEL;
|
actasmtoken:=AS_LABEL;
|
||||||
{ let us point to the next character }
|
{ let us point to the next character }
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
firsttoken:=true;
|
firsttoken:=true;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
@ -360,16 +360,16 @@ begin
|
|||||||
begin
|
begin
|
||||||
if (prevasmtoken in [AS_ID,AS_RPAREN]) then
|
if (prevasmtoken in [AS_ID,AS_RPAREN]) then
|
||||||
begin
|
begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
actasmtoken:=AS_DOT;
|
actasmtoken:=AS_DOT;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
actasmpattern:=c;
|
actasmpattern:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
while c in ['A'..'Z','a'..'z','0'..'9','_','$'] do
|
while c in ['A'..'Z','a'..'z','0'..'9','_','$'] do
|
||||||
begin
|
begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
if is_asmdirective(actasmpattern) then
|
if is_asmdirective(actasmpattern) then
|
||||||
exit;
|
exit;
|
||||||
@ -387,7 +387,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
inc(len);
|
inc(len);
|
||||||
actasmpattern[len]:=c;
|
actasmpattern[len]:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
actasmpattern[0]:=chr(len);
|
actasmpattern[0]:=chr(len);
|
||||||
uppervar(actasmpattern);
|
uppervar(actasmpattern);
|
||||||
@ -416,7 +416,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
len:=1;
|
len:=1;
|
||||||
actasmpattern[len]:='%';
|
actasmpattern[len]:='%';
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
{ to be a register there must be a letter and not a number }
|
{ to be a register there must be a letter and not a number }
|
||||||
if c in ['0'..'9'] then
|
if c in ['0'..'9'] then
|
||||||
begin
|
begin
|
||||||
@ -429,25 +429,25 @@ begin
|
|||||||
Begin
|
Begin
|
||||||
inc(len);
|
inc(len);
|
||||||
actasmpattern[len]:=c;
|
actasmpattern[len]:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
actasmpattern[0]:=chr(len);
|
actasmpattern[0]:=chr(len);
|
||||||
uppervar(actasmpattern);
|
uppervar(actasmpattern);
|
||||||
if (actasmpattern = '%ST') and (c='(') then
|
if (actasmpattern = '%ST') and (c='(') then
|
||||||
Begin
|
Begin
|
||||||
actasmpattern:=actasmpattern+c;
|
actasmpattern:=actasmpattern+c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c in ['0'..'9'] then
|
if c in ['0'..'9'] then
|
||||||
actasmpattern:=actasmpattern + c
|
actasmpattern:=actasmpattern + c
|
||||||
else
|
else
|
||||||
Message(asmr_e_invalid_fpu_register);
|
Message(asmr_e_invalid_fpu_register);
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c <> ')' then
|
if c <> ')' then
|
||||||
Message(asmr_e_invalid_fpu_register)
|
Message(asmr_e_invalid_fpu_register)
|
||||||
else
|
else
|
||||||
Begin
|
Begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar; { let us point to next character. }
|
c:=current_scanner.asmgetchar; { let us point to next character. }
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
if is_register(actasmpattern) then
|
if is_register(actasmpattern) then
|
||||||
@ -464,7 +464,7 @@ begin
|
|||||||
Begin
|
Begin
|
||||||
inc(len);
|
inc(len);
|
||||||
actasmpattern[len]:=c;
|
actasmpattern[len]:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
actasmpattern[0]:=chr(len);
|
actasmpattern[0]:=chr(len);
|
||||||
actasmpattern:=tostr(ValDecimal(actasmpattern));
|
actasmpattern:=tostr(ValDecimal(actasmpattern));
|
||||||
@ -474,15 +474,15 @@ begin
|
|||||||
'0' : { octal,hexa,real or binary number. }
|
'0' : { octal,hexa,real or binary number. }
|
||||||
begin
|
begin
|
||||||
actasmpattern:=c;
|
actasmpattern:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
case upcase(c) of
|
case upcase(c) of
|
||||||
'B': { binary }
|
'B': { binary }
|
||||||
Begin
|
Begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
while c in ['0','1'] do
|
while c in ['0','1'] do
|
||||||
Begin
|
Begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
actasmpattern:=tostr(ValBinary(actasmpattern));
|
actasmpattern:=tostr(ValBinary(actasmpattern));
|
||||||
actasmtoken:=AS_INTNUM;
|
actasmtoken:=AS_INTNUM;
|
||||||
@ -490,42 +490,42 @@ begin
|
|||||||
end;
|
end;
|
||||||
'D': { real }
|
'D': { real }
|
||||||
Begin
|
Begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
{ get ridd of the 0d }
|
{ get ridd of the 0d }
|
||||||
if (c in ['+','-']) then
|
if (c in ['+','-']) then
|
||||||
begin
|
begin
|
||||||
actasmpattern:=c;
|
actasmpattern:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
actasmpattern:='';
|
actasmpattern:='';
|
||||||
while c in ['0'..'9'] do
|
while c in ['0'..'9'] do
|
||||||
Begin
|
Begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
if c='.' then
|
if c='.' then
|
||||||
begin
|
begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
while c in ['0'..'9'] do
|
while c in ['0'..'9'] do
|
||||||
Begin
|
Begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
if upcase(c) = 'E' then
|
if upcase(c) = 'E' then
|
||||||
begin
|
begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if (c in ['+','-']) then
|
if (c in ['+','-']) then
|
||||||
begin
|
begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
while c in ['0'..'9'] do
|
while c in ['0'..'9'] do
|
||||||
Begin
|
Begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
actasmtoken:=AS_REALNUM;
|
actasmtoken:=AS_REALNUM;
|
||||||
@ -539,11 +539,11 @@ begin
|
|||||||
end;
|
end;
|
||||||
'X': { hexadecimal }
|
'X': { hexadecimal }
|
||||||
Begin
|
Begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
while c in ['0'..'9','a'..'f','A'..'F'] do
|
while c in ['0'..'9','a'..'f','A'..'F'] do
|
||||||
Begin
|
Begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
actasmpattern:=tostr(ValHexaDecimal(actasmpattern));
|
actasmpattern:=tostr(ValHexaDecimal(actasmpattern));
|
||||||
actasmtoken:=AS_INTNUM;
|
actasmtoken:=AS_INTNUM;
|
||||||
@ -555,7 +555,7 @@ begin
|
|||||||
while c in ['0'..'7'] do
|
while c in ['0'..'7'] do
|
||||||
Begin
|
Begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
actasmpattern:=tostr(ValOctal(actasmpattern));
|
actasmpattern:=tostr(ValOctal(actasmpattern));
|
||||||
actasmtoken:=AS_INTNUM;
|
actasmtoken:=AS_INTNUM;
|
||||||
@ -572,27 +572,27 @@ begin
|
|||||||
|
|
||||||
'&' :
|
'&' :
|
||||||
begin
|
begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
actasmtoken:=AS_AND;
|
actasmtoken:=AS_AND;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'''' : { char }
|
'''' : { char }
|
||||||
begin
|
begin
|
||||||
current_scanner^.in_asm_string:=true;
|
current_scanner.in_asm_string:=true;
|
||||||
actasmpattern:='';
|
actasmpattern:='';
|
||||||
repeat
|
repeat
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
case c of
|
case c of
|
||||||
'\' :
|
'\' :
|
||||||
begin
|
begin
|
||||||
{ copy also the next char so \" is parsed correctly }
|
{ copy also the next char so \" is parsed correctly }
|
||||||
actasmpattern:=actasmpattern+c;
|
actasmpattern:=actasmpattern+c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
actasmpattern:=actasmpattern+c;
|
actasmpattern:=actasmpattern+c;
|
||||||
end;
|
end;
|
||||||
'''' :
|
'''' :
|
||||||
begin
|
begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
newline:
|
newline:
|
||||||
@ -603,27 +603,27 @@ begin
|
|||||||
until false;
|
until false;
|
||||||
actasmpattern:=EscapeToPascal(actasmpattern);
|
actasmpattern:=EscapeToPascal(actasmpattern);
|
||||||
actasmtoken:=AS_STRING;
|
actasmtoken:=AS_STRING;
|
||||||
current_scanner^.in_asm_string:=false;
|
current_scanner.in_asm_string:=false;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'"' : { string }
|
'"' : { string }
|
||||||
begin
|
begin
|
||||||
current_scanner^.in_asm_string:=true;
|
current_scanner.in_asm_string:=true;
|
||||||
actasmpattern:='';
|
actasmpattern:='';
|
||||||
repeat
|
repeat
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
case c of
|
case c of
|
||||||
'\' :
|
'\' :
|
||||||
begin
|
begin
|
||||||
{ copy also the next char so \" is parsed correctly }
|
{ copy also the next char so \" is parsed correctly }
|
||||||
actasmpattern:=actasmpattern+c;
|
actasmpattern:=actasmpattern+c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
actasmpattern:=actasmpattern+c;
|
actasmpattern:=actasmpattern+c;
|
||||||
end;
|
end;
|
||||||
'"' :
|
'"' :
|
||||||
begin
|
begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
newline:
|
newline:
|
||||||
@ -634,60 +634,60 @@ begin
|
|||||||
until false;
|
until false;
|
||||||
actasmpattern:=EscapeToPascal(actasmpattern);
|
actasmpattern:=EscapeToPascal(actasmpattern);
|
||||||
actasmtoken:=AS_STRING;
|
actasmtoken:=AS_STRING;
|
||||||
current_scanner^.in_asm_string:=false;
|
current_scanner.in_asm_string:=false;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'$' :
|
'$' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_DOLLAR;
|
actasmtoken:=AS_DOLLAR;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
',' :
|
',' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_COMMA;
|
actasmtoken:=AS_COMMA;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'<' :
|
'<' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_SHL;
|
actasmtoken:=AS_SHL;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c = '<' then
|
if c = '<' then
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'>' :
|
'>' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_SHL;
|
actasmtoken:=AS_SHL;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c = '>' then
|
if c = '>' then
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'|' :
|
'|' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_OR;
|
actasmtoken:=AS_OR;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'^' :
|
'^' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_XOR;
|
actasmtoken:=AS_XOR;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'!' :
|
'!' :
|
||||||
begin
|
begin
|
||||||
Message(asmr_e_nor_not_supported);
|
Message(asmr_e_nor_not_supported);
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
actasmtoken:=AS_NONE;
|
actasmtoken:=AS_NONE;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
@ -695,48 +695,48 @@ begin
|
|||||||
'(' :
|
'(' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_LPAREN;
|
actasmtoken:=AS_LPAREN;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
')' :
|
')' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_RPAREN;
|
actasmtoken:=AS_RPAREN;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
':' :
|
':' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_COLON;
|
actasmtoken:=AS_COLON;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'+' :
|
'+' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_PLUS;
|
actasmtoken:=AS_PLUS;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'-' :
|
'-' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_MINUS;
|
actasmtoken:=AS_MINUS;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'*' :
|
'*' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_STAR;
|
actasmtoken:=AS_STAR;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'/' :
|
'/' :
|
||||||
begin
|
begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
actasmtoken:=AS_SLASH;
|
actasmtoken:=AS_SLASH;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
@ -744,14 +744,14 @@ begin
|
|||||||
'{',#13,newline,';' :
|
'{',#13,newline,';' :
|
||||||
begin
|
begin
|
||||||
{ the comment is read by asmgetchar }
|
{ the comment is read by asmgetchar }
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
firsttoken:=TRUE;
|
firsttoken:=TRUE;
|
||||||
actasmtoken:=AS_SEPARATOR;
|
actasmtoken:=AS_SEPARATOR;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
else
|
else
|
||||||
current_scanner^.illegal_char(c);
|
current_scanner.illegal_char(c);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -1887,7 +1887,7 @@ Begin
|
|||||||
{ setup label linked list }
|
{ setup label linked list }
|
||||||
LocalLabelList:=TLocalLabelList.Create;
|
LocalLabelList:=TLocalLabelList.Create;
|
||||||
{ start tokenizer }
|
{ start tokenizer }
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
gettoken;
|
gettoken;
|
||||||
{ main loop }
|
{ main loop }
|
||||||
repeat
|
repeat
|
||||||
@ -2119,7 +2119,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.9 2001-04-13 01:22:21 peter
|
Revision 1.10 2001-04-13 18:20:21 peter
|
||||||
|
* scanner object to class
|
||||||
|
|
||||||
|
Revision 1.9 2001/04/13 01:22:21 peter
|
||||||
* symtable change to classes
|
* symtable change to classes
|
||||||
* range check generation and errors fixed, make cycle DEBUG=1 works
|
* range check generation and errors fixed, make cycle DEBUG=1 works
|
||||||
* memory leaks fixed
|
* memory leaks fixed
|
||||||
|
@ -95,15 +95,15 @@ interface
|
|||||||
retstr:=upper(tostr(procinfo^.return_offset)+'('+att_reg2str[procinfo^.framepointer]+')')
|
retstr:=upper(tostr(procinfo^.return_offset)+'('+att_reg2str[procinfo^.framepointer]+')')
|
||||||
else
|
else
|
||||||
retstr:='';
|
retstr:='';
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
code:=TAAsmoutput.Create;
|
code:=TAAsmoutput.Create;
|
||||||
while not(ende) do
|
while not(ende) do
|
||||||
begin
|
begin
|
||||||
{ wrong placement
|
{ wrong placement
|
||||||
current_scanner^.gettokenpos; }
|
current_scanner.gettokenpos; }
|
||||||
case c of
|
case c of
|
||||||
'A'..'Z','a'..'z','_' : begin
|
'A'..'Z','a'..'z','_' : begin
|
||||||
current_scanner^.gettokenpos;
|
current_scanner.gettokenpos;
|
||||||
i:=0;
|
i:=0;
|
||||||
hs:='';
|
hs:='';
|
||||||
while ((ord(c)>=ord('A')) and (ord(c)<=ord('Z')))
|
while ((ord(c)>=ord('A')) and (ord(c)<=ord('Z')))
|
||||||
@ -113,7 +113,7 @@ interface
|
|||||||
begin
|
begin
|
||||||
inc(i);
|
inc(i);
|
||||||
hs[i]:=c;
|
hs[i]:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
hs[0]:=chr(i);
|
hs[0]:=chr(i);
|
||||||
if upper(hs)='END' then
|
if upper(hs)='END' then
|
||||||
@ -268,15 +268,15 @@ interface
|
|||||||
if pos(retstr,s) > 0 then
|
if pos(retstr,s) > 0 then
|
||||||
procinfo^.funcret_state:=vs_assigned;
|
procinfo^.funcret_state:=vs_assigned;
|
||||||
writeasmline;
|
writeasmline;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
#26 : Message(scan_f_end_of_file);
|
#26 : Message(scan_f_end_of_file);
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
current_scanner^.gettokenpos;
|
current_scanner.gettokenpos;
|
||||||
inc(byte(s[0]));
|
inc(byte(s[0]));
|
||||||
s[length(s)]:=c;
|
s[length(s)]:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -287,7 +287,10 @@ interface
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.7 2001-04-13 01:22:21 peter
|
Revision 1.8 2001-04-13 18:20:21 peter
|
||||||
|
* scanner object to class
|
||||||
|
|
||||||
|
Revision 1.7 2001/04/13 01:22:21 peter
|
||||||
* symtable change to classes
|
* symtable change to classes
|
||||||
* range check generation and errors fixed, make cycle DEBUG=1 works
|
* range check generation and errors fixed, make cycle DEBUG=1 works
|
||||||
* memory leaks fixed
|
* memory leaks fixed
|
||||||
|
@ -267,10 +267,10 @@ begin
|
|||||||
actasmpattern:='';
|
actasmpattern:='';
|
||||||
{ while space and tab , continue scan... }
|
{ while space and tab , continue scan... }
|
||||||
while (c in [' ',#9]) do
|
while (c in [' ',#9]) do
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
{ get token pos }
|
{ get token pos }
|
||||||
if not (c in [newline,#13,'{',';']) then
|
if not (c in [newline,#13,'{',';']) then
|
||||||
current_scanner^.gettokenpos;
|
current_scanner.gettokenpos;
|
||||||
{ Local Label, Label, Directive, Prefix or Opcode }
|
{ Local Label, Label, Directive, Prefix or Opcode }
|
||||||
if firsttoken and not (c in [newline,#13,'{',';']) then
|
if firsttoken and not (c in [newline,#13,'{',';']) then
|
||||||
begin
|
begin
|
||||||
@ -283,7 +283,7 @@ begin
|
|||||||
forcelabel:=TRUE;
|
forcelabel:=TRUE;
|
||||||
inc(len);
|
inc(len);
|
||||||
actasmpattern[len]:=c;
|
actasmpattern[len]:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
actasmpattern[0]:=chr(len);
|
actasmpattern[0]:=chr(len);
|
||||||
uppervar(actasmpattern);
|
uppervar(actasmpattern);
|
||||||
@ -295,7 +295,7 @@ begin
|
|||||||
else
|
else
|
||||||
actasmtoken:=AS_LABEL;
|
actasmtoken:=AS_LABEL;
|
||||||
{ let us point to the next character }
|
{ let us point to the next character }
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
firsttoken:=true;
|
firsttoken:=true;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
@ -324,11 +324,11 @@ begin
|
|||||||
{ - @Result, @Code or @Data special variables. }
|
{ - @Result, @Code or @Data special variables. }
|
||||||
begin
|
begin
|
||||||
actasmpattern:=c;
|
actasmpattern:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
while c in ['A'..'Z','a'..'z','0'..'9','_','@'] do
|
while c in ['A'..'Z','a'..'z','0'..'9','_','@'] do
|
||||||
begin
|
begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
uppervar(actasmpattern);
|
uppervar(actasmpattern);
|
||||||
actasmtoken:=AS_ID;
|
actasmtoken:=AS_ID;
|
||||||
@ -338,11 +338,11 @@ begin
|
|||||||
'A'..'Z','a'..'z','_': { identifier, register, opcode, prefix or directive }
|
'A'..'Z','a'..'z','_': { identifier, register, opcode, prefix or directive }
|
||||||
begin
|
begin
|
||||||
actasmpattern:=c;
|
actasmpattern:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
while c in ['A'..'Z','a'..'z','0'..'9','_'] do
|
while c in ['A'..'Z','a'..'z','0'..'9','_'] do
|
||||||
begin
|
begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
uppervar(actasmpattern);
|
uppervar(actasmpattern);
|
||||||
{ after prefix we allow also a new opcode }
|
{ after prefix we allow also a new opcode }
|
||||||
@ -358,18 +358,18 @@ begin
|
|||||||
if (actasmpattern = 'ST') and (c='(') then
|
if (actasmpattern = 'ST') and (c='(') then
|
||||||
Begin
|
Begin
|
||||||
actasmpattern:=actasmpattern+c;
|
actasmpattern:=actasmpattern+c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c in ['0'..'7'] then
|
if c in ['0'..'7'] then
|
||||||
actasmpattern:=actasmpattern + c
|
actasmpattern:=actasmpattern + c
|
||||||
else
|
else
|
||||||
Message(asmr_e_invalid_fpu_register);
|
Message(asmr_e_invalid_fpu_register);
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c <> ')' then
|
if c <> ')' then
|
||||||
Message(asmr_e_invalid_fpu_register)
|
Message(asmr_e_invalid_fpu_register)
|
||||||
else
|
else
|
||||||
Begin
|
Begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
if is_register(actasmpattern) then
|
if is_register(actasmpattern) then
|
||||||
@ -385,18 +385,18 @@ begin
|
|||||||
'&' : { override operator... not supported }
|
'&' : { override operator... not supported }
|
||||||
begin
|
begin
|
||||||
Message(asmr_w_override_op_not_supported);
|
Message(asmr_w_override_op_not_supported);
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
actasmtoken:=AS_NONE;
|
actasmtoken:=AS_NONE;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'''' : { string or character }
|
'''' : { string or character }
|
||||||
begin
|
begin
|
||||||
actasmpattern:='';
|
actasmpattern:='';
|
||||||
current_scanner^.in_asm_string:=true;
|
current_scanner.in_asm_string:=true;
|
||||||
repeat
|
repeat
|
||||||
if c = '''' then
|
if c = '''' then
|
||||||
begin
|
begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c=newline then
|
if c=newline then
|
||||||
begin
|
begin
|
||||||
Message(scan_f_string_exceeds_line);
|
Message(scan_f_string_exceeds_line);
|
||||||
@ -405,11 +405,11 @@ begin
|
|||||||
repeat
|
repeat
|
||||||
if c='''' then
|
if c='''' then
|
||||||
begin
|
begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c='''' then
|
if c='''' then
|
||||||
begin
|
begin
|
||||||
actasmpattern:=actasmpattern+'''';
|
actasmpattern:=actasmpattern+'''';
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c=newline then
|
if c=newline then
|
||||||
begin
|
begin
|
||||||
Message(scan_f_string_exceeds_line);
|
Message(scan_f_string_exceeds_line);
|
||||||
@ -422,7 +422,7 @@ begin
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
actasmpattern:=actasmpattern+c;
|
actasmpattern:=actasmpattern+c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c=newline then
|
if c=newline then
|
||||||
begin
|
begin
|
||||||
Message(scan_f_string_exceeds_line);
|
Message(scan_f_string_exceeds_line);
|
||||||
@ -434,19 +434,19 @@ begin
|
|||||||
else
|
else
|
||||||
break; { end if }
|
break; { end if }
|
||||||
until false;
|
until false;
|
||||||
current_scanner^.in_asm_string:=false;
|
current_scanner.in_asm_string:=false;
|
||||||
actasmtoken:=AS_STRING;
|
actasmtoken:=AS_STRING;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'"' : { string or character }
|
'"' : { string or character }
|
||||||
begin
|
begin
|
||||||
current_scanner^.in_asm_string:=true;
|
current_scanner.in_asm_string:=true;
|
||||||
actasmpattern:='';
|
actasmpattern:='';
|
||||||
repeat
|
repeat
|
||||||
if c = '"' then
|
if c = '"' then
|
||||||
begin
|
begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c=newline then
|
if c=newline then
|
||||||
begin
|
begin
|
||||||
Message(scan_f_string_exceeds_line);
|
Message(scan_f_string_exceeds_line);
|
||||||
@ -455,11 +455,11 @@ begin
|
|||||||
repeat
|
repeat
|
||||||
if c='"' then
|
if c='"' then
|
||||||
begin
|
begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c='"' then
|
if c='"' then
|
||||||
begin
|
begin
|
||||||
actasmpattern:=actasmpattern+'"';
|
actasmpattern:=actasmpattern+'"';
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c=newline then
|
if c=newline then
|
||||||
begin
|
begin
|
||||||
Message(scan_f_string_exceeds_line);
|
Message(scan_f_string_exceeds_line);
|
||||||
@ -472,7 +472,7 @@ begin
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
actasmpattern:=actasmpattern+c;
|
actasmpattern:=actasmpattern+c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
if c=newline then
|
if c=newline then
|
||||||
begin
|
begin
|
||||||
Message(scan_f_string_exceeds_line);
|
Message(scan_f_string_exceeds_line);
|
||||||
@ -484,18 +484,18 @@ begin
|
|||||||
else
|
else
|
||||||
break; { end if }
|
break; { end if }
|
||||||
until false;
|
until false;
|
||||||
current_scanner^.in_asm_string:=false;
|
current_scanner.in_asm_string:=false;
|
||||||
actasmtoken:=AS_STRING;
|
actasmtoken:=AS_STRING;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'$' :
|
'$' :
|
||||||
begin
|
begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
while c in ['0'..'9','A'..'F','a'..'f'] do
|
while c in ['0'..'9','A'..'F','a'..'f'] do
|
||||||
begin
|
begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
actasmpattern:=tostr(ValHexaDecimal(actasmpattern));
|
actasmpattern:=tostr(ValHexaDecimal(actasmpattern));
|
||||||
actasmtoken:=AS_INTNUM;
|
actasmtoken:=AS_INTNUM;
|
||||||
@ -505,89 +505,89 @@ begin
|
|||||||
',' :
|
',' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_COMMA;
|
actasmtoken:=AS_COMMA;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'[' :
|
'[' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_LBRACKET;
|
actasmtoken:=AS_LBRACKET;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
']' :
|
']' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_RBRACKET;
|
actasmtoken:=AS_RBRACKET;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'(' :
|
'(' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_LPAREN;
|
actasmtoken:=AS_LPAREN;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
')' :
|
')' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_RPAREN;
|
actasmtoken:=AS_RPAREN;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
':' :
|
':' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_COLON;
|
actasmtoken:=AS_COLON;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'.' :
|
'.' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_DOT;
|
actasmtoken:=AS_DOT;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'+' :
|
'+' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_PLUS;
|
actasmtoken:=AS_PLUS;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'-' :
|
'-' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_MINUS;
|
actasmtoken:=AS_MINUS;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'*' :
|
'*' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_STAR;
|
actasmtoken:=AS_STAR;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'/' :
|
'/' :
|
||||||
begin
|
begin
|
||||||
actasmtoken:=AS_SLASH;
|
actasmtoken:=AS_SLASH;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
'0'..'9':
|
'0'..'9':
|
||||||
begin
|
begin
|
||||||
actasmpattern:=c;
|
actasmpattern:=c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
{ Get the possible characters }
|
{ Get the possible characters }
|
||||||
while c in ['0'..'9','A'..'F','a'..'f'] do
|
while c in ['0'..'9','A'..'F','a'..'f'] do
|
||||||
begin
|
begin
|
||||||
actasmpattern:=actasmpattern + c;
|
actasmpattern:=actasmpattern + c;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
end;
|
end;
|
||||||
{ Get ending character }
|
{ Get ending character }
|
||||||
uppervar(actasmpattern);
|
uppervar(actasmpattern);
|
||||||
@ -608,14 +608,14 @@ begin
|
|||||||
Begin
|
Begin
|
||||||
actasmpattern:=tostr(ValOctal(actasmpattern));
|
actasmpattern:=tostr(ValOctal(actasmpattern));
|
||||||
actasmtoken:=AS_INTNUM;
|
actasmtoken:=AS_INTNUM;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
'H' :
|
'H' :
|
||||||
Begin
|
Begin
|
||||||
actasmpattern:=tostr(ValHexaDecimal(actasmpattern));
|
actasmpattern:=tostr(ValHexaDecimal(actasmpattern));
|
||||||
actasmtoken:=AS_INTNUM;
|
actasmtoken:=AS_INTNUM;
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
else { must be an integer number }
|
else { must be an integer number }
|
||||||
@ -630,14 +630,14 @@ begin
|
|||||||
|
|
||||||
';','{',#13,newline :
|
';','{',#13,newline :
|
||||||
begin
|
begin
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
firsttoken:=TRUE;
|
firsttoken:=TRUE;
|
||||||
actasmtoken:=AS_SEPARATOR;
|
actasmtoken:=AS_SEPARATOR;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
else
|
else
|
||||||
current_scanner^.illegal_char(c);
|
current_scanner.illegal_char(c);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -1841,7 +1841,7 @@ Begin
|
|||||||
{ setup label linked list }
|
{ setup label linked list }
|
||||||
LocalLabelList:=TLocalLabelList.Create;
|
LocalLabelList:=TLocalLabelList.Create;
|
||||||
{ start tokenizer }
|
{ start tokenizer }
|
||||||
c:=current_scanner^.asmgetchar;
|
c:=current_scanner.asmgetchar;
|
||||||
gettoken;
|
gettoken;
|
||||||
{ main loop }
|
{ main loop }
|
||||||
repeat
|
repeat
|
||||||
@ -1948,7 +1948,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.12 2001-04-13 01:22:21 peter
|
Revision 1.13 2001-04-13 18:20:21 peter
|
||||||
|
* scanner object to class
|
||||||
|
|
||||||
|
Revision 1.12 2001/04/13 01:22:21 peter
|
||||||
* symtable change to classes
|
* symtable change to classes
|
||||||
* range check generation and errors fixed, make cycle DEBUG=1 works
|
* range check generation and errors fixed, make cycle DEBUG=1 works
|
||||||
* memory leaks fixed
|
* memory leaks fixed
|
||||||
|
Loading…
Reference in New Issue
Block a user