Ignore:
Timestamp:
Nov 10, 2009, 7:14:14 AM (15 years ago)
Author:
george
Message:
  • Přidáno: Odsazování řádků při generování výstupu.
  • Přidáno: Definování a modelování definic datových typů.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/Void/UCompilator.pas

    r12 r13  
    7676  VariableType: string;
    7777  Variable: TVariable;
     78  VarType: TType;
    7879begin
    7980  Parser.ParseNextToken;
     
    8384  repeat
    8485    VariableName := Parser.TokenValue;
    85     Parser.ParseNextToken;
    86     if Parser.TokenType = ttWhiteSpace then Parser.ParseNextToken;
    87     if (Parser.TokenType <> ttSymbol) and (Parser.TokenValue = ':') then
    88       DoError('Expected :');
    89     Parser.ParseNextToken;
    90     if Parser.TokenType = ttWhiteSpace then Parser.ParseNextToken;
    91     if Parser.TokenType <> ttIdentifier then DoError('Expected identifier');
    92     VariableType := Parser.TokenValue;
    93 
    9486    with Model.Module do begin
    95     Variable := FindVariableByName(VariableName);
    96     if Assigned(Variable) then DoError('Variable ' + VariableName + ' redefined')
    97     else begin
    98       Variable := TVariable.Create;
    99       with Variable do begin
    100         Name := VariableName;
    101         VarType := VariableType;
     87      Variable := FindVariableByName(VariableName);
     88      if Assigned(Variable) then DoError('Variable ' + VariableName + ' redefined')
     89      else begin
     90        Parser.ParseNextToken;
     91        if Parser.TokenType = ttWhiteSpace then Parser.ParseNextToken;
     92        if (Parser.TokenType <> ttSymbol) and (Parser.TokenValue = ':') then
     93          DoError('Expected :');
     94        Parser.ParseNextToken;
     95        if Parser.TokenType = ttWhiteSpace then Parser.ParseNextToken;
     96        if Parser.TokenType <> ttIdentifier then DoError('Expected identifier');
     97        VariableType := Parser.TokenValue;
     98        VarType := FindTypeByName(VariableType);
     99        if not Assigned(VarType) then DoError('Undefined type ' + VariableType)
     100        else begin
     101          Variable := TVariable.Create;
     102          with Variable do begin
     103            Name := VariableName;
     104          end;
     105          Variable.VarType := VarType;
     106          Variables.Add(Variable);
     107        end;
    102108      end;
    103       Variables.Add(Variable);
    104     end;
    105109    end;
    106110
Note: See TracChangeset for help on using the changeset viewer.