Changeset 23 for branches/AS8051toC


Ignore:
Timestamp:
Jun 27, 2012, 11:46:20 AM (12 years ago)
Author:
chronos
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/AS8051toC/UMainForm.pas

    r22 r23  
    173173        Expect('fi');
    174174        Emit('#endif ');
    175       end else Error('Unknown token "' + GetNext + '"');
     175      end; // else Error('Unknown token "' + GetNext + '"');
    176176    end
    177177    else if ParseComment then
     
    181181    else if IsIdentificator(GetNext) then begin
    182182      Variable := ReadNext;
     183      if GetNext = '%' then begin
     184        Expect('%');
     185        Variable := Variable + '##' + ReadNext;
     186      end;
    183187      if GetNext = ':' then begin
    184188        Expect(':');
     
    232236        Expect('then');
    233237        Expect('(');
    234       end else Error('Unknown macro: ' + ReadNext);
     238      end else
     239      if GetNext = 'set' then begin
     240        Expect('set');
     241        Emit('#define ');
     242        Expect('(');
     243        Emit(ReadNext + ' ');
     244        Expect(',');
     245        ParseDbExpression;
     246        Expect(')');
     247        Emit(';');
     248      end else
     249      if GetNext = '*' then begin
     250        Expect('*');
     251        if GetNext = 'define' then begin
     252          Expect('define');
     253          Emit('#define ');
     254          Expect('(');
     255          Emit(ReadNext);
     256          Expect('(');
     257          Emit('(' + ReadNext);
     258          while GetNext = ',' do begin
     259            Expect(',');
     260            Emit(', ' + ReadNext);
     261          end;
     262          Expect(')');
     263          Emit(')');
     264          Expect(')');
     265          if GetNext = 'local' then begin
     266            Expect('local');
     267            ReadNext;
     268          end;
     269          Expect('(');
     270        end;
     271      end;// else Error('Unknown macro: ' + ReadNext);
    235272    end else Result := False;
    236273  end;
     
    259296      MacroName := ReadNext;
    260297      Emit(MacroName);
     298      if GetNext = '(' then begin
     299        Expect('(');
     300        Emit('(');
     301        if ParseMacroUsage then
     302          else Emit(ReadNext);
     303        while GetNext = ',' do begin
     304          Expect(',');
     305          Emit(',');
     306          if ParseMacroUsage then
     307            else Emit(ReadNext);
     308        end;
     309        Emit(')');
     310        Expect(')');
     311      end;
    261312    end else Result := False;
    262313  end;
     
    325376      end;
    326377    end else
     378    if GetNext = 'dw' then begin
     379      Result := True;
     380      Expect('dw');
     381      Emit('char ');
     382      ParseDbExpression;
     383      while GetNext = ',' do begin
     384        Expect(',');
     385        Emit(',');
     386        ParseDbExpression;
     387      end;
     388    end else
    327389    if GetNext = 'ds' then begin
    328390      Result := True;
     
    386448        Expect('le');
    387449        Emit('<= ');
     450      end else
     451      if GetNext = 'or' then begin
     452        Expect('or');
     453        Emit('|| ');
     454      end else
     455      if GetNext = 'and' then begin
     456        Expect('and');
     457        Emit('&& ');
    388458      end else
    389459      Error('Unknown operand "' + ReadNext + '"');
     
    435505      Emit('/');
    436506      ParseDbExpression;
     507    end else
     508    if GetNext = 'or' then begin
     509      Expect('or');
     510      Emit('|| ');
     511      ParseDbExpression;
     512    end else
     513    if GetNext = 'and' then begin
     514      Expect('and');
     515      Emit('&& ');
     516      ParseDbExpression;
    437517    end;
    438518  end;
Note: See TracChangeset for help on using the changeset viewer.