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