Foliensatz 5, Folie 22, 37

grek40
Windoof-User
Windoof-User
Beiträge: 37
Registriert: 1. Dez 2008 09:25

Foliensatz 5, Folie 22, 37

Beitrag von grek40 » 3. Feb 2012 13:55

Kann es sein, dass die Regel

evaluate[IL] = LOADL v ; ...

eigentlich nicht die Regel des IntegerLiterals sondern der IntegerExpression ist? Ansonsten wäre die Folie soweit ich das sehen kann nicht konsistent zu Folie 37, wo die Evaluation des Integer Wertes direkt in IntegerExpression.visit erfolgt.

Mit (Simple)Vname und VnameExpression scheint es ein ähnliches Problem zu geben...

Jens Huthmann
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 192
Registriert: 10. Nov 2011 19:42

Re: Foliensatz 5, Folie 22, 37

Beitrag von Jens Huthmann » 3. Feb 2012 16:32

Bei (Simple)Vname und VnameExpression sehe ich das Problem nicht. Könnten Sie das nochmal beschreiben was Sie hier meinen?

Für den Schritt von IntegerExpression zu IntegerLiteral wurde ein implizites evaluate[IE] = evaluate[IL] angenommen, da eine IntegerExpression immer nur ein IntegerLiteral enthalten kann.

grek40
Windoof-User
Windoof-User
Beiträge: 37
Registriert: 1. Dez 2008 09:25

Re: Foliensatz 5, Folie 22, 37

Beitrag von grek40 » 4. Feb 2012 11:50

Wie man im Code von encoder sehen kann, wird eben die Auswertung nicht in IntegerLiteral vorgenommen

Code: Alles auswählen

  public Object visitIntegerExpression(IntegerExpression ast, Object o) {
    Frame frame = (Frame) o;
    Integer valSize = (Integer) ast.type.visit(this, null);
    emit(Machine.LOADLop, 0, 0, Integer.parseInt(ast.IL.spelling));
    return valSize;
  }

//...

  public Object visitIntegerLiteral(IntegerLiteral ast, Object o) {
    return null;
  }
Somit gibt es meiner Meinung nach auch keine implizite Regel von IE nach IL, sondern es müsste einfach in der Folie erkennbar sein, dass die Auswertungsregel
evaluate[IL] = LOADL v
die Regel zu IntegerExpression ist.

Gleiches gilt dann analog für VnameExpression, da encodeFetch dort und nicht in SimpleVname ausgeführt wird.

Antworten

Zurück zu „Archiv“