Posts by R3nwo!

    LeBurger Gutscheine

    20171120_173451.jpg


    Die Weihnachtszeit steht vor der Tür und ich habe LeBurger Gutscheine zu verkaufen.
    30€ = 6x5€ LeBurger Gutscheine um 29.90€ , die in jedem LeBurger Restaurant einlösbar sind - unbegrenzte Gültigkeitsdauer.
    Abholort können wir uns ganz individuell ausmachen - einfach eine private Nachricht schreiben und schon gehören sie dir!


    Liebe Grüße,
    R3nwo

    Hi, ich habe gesehen, dass sich knapp 30 Leute für die Prüfung am 4.07 angemeldet haben.
    Gibts Interesse, sich zusammenzusetzen und alte Prüfungsangaben zu lösen? Bin halt mit den Übungen fertig und würd eben alte Bsp jetzt rechnen.


    lg


    Sollte man die Termine schon sehen können (vorallem Prüfungstermine)? Wenn ich auf dem Link klicke so steht: Der Kurs steht aktuell für Teilnehmer/innen nicht zur Verfügung.
    Kann man vielleicht schon sagen wann die Prüfungstermine sein werden - da Juni/Juli Prüfungsmonate sind, wärs sehr hilfreich wenn man etwas vorausplanen kann (:
    Danke :engel:


    d.h. seh ich es richtig, dass z.B. dieses Input die maximale Tiefe überschreitet?
    arr2(x,y)
    return x[y]+x[y+1]+x[y+2]+x[y+3];
    end;

    Hey ich hab da eine Frage, wenn wir z.B. return x[5]; haben dann sollte sowas erzeugt werden oder?
    x in rax
    movq (%rax,$5,8),...


    EDIT: siehe unten, es muss movq 40(%rax),... generiert werden, meine Variante wäre fehlerhaft (man darf nur 1,2,4,8 als Skalierung haben)


    Vielen Dank für die Hilfe, das war eine gute Idee und habs mal ausprobiert und hab gemerkt, dass ich bei meinem enum bei 0 beginne zu zählen und bei %term beginn ich bei 1 -.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.:mad:

    Hallo,
    ich habe das Problem, dass ich diese Fehlermeldung erhalte und ich hab wieder herumprobiert und leider erfolgslos.


    "tree cannot be derived from start symbol"


    das steht in meiner codea.y Datei:
    ...
    Stats: ...
    | Stats Labeldef Stat ';'
    @{
    ...
    @g burm_label(@Stat.node@); burm_reduce(@Stat.node@,1);
    @}
    ;


    Stat: RETURN Expr
    @{
    ...
    @i @Stat.node@ = newNode(OP_Return, @Expr.node@, NULL);
    @}


    Expr: ...
    | Term
    @{
    @i @Expr.node@ = @Term.node@;

    @}
    ;


    Term:...
    | NUM @{ @i @Term.node@ = newNUMLeaf(@NUM.ival@);@}


    und sowas habe ich dann in der codea.bfe:
    ...
    %start beg
    %term OP_Add=1 OP_Mul=2 OP_Min=3 OP_Adr=4 OP_Id=5 OP_Num=6 OP_Return=7


    %%
    beg: ret # 0 # printf("hallo\n");


    ret: OP_Return(expr) # 2 # move(bnode->kids[0]->reg,"rax"); rtrn();
    ...
    expr: imm # 1 #
    ...
    imm: OP_Num # 0 #


    Es wird nicht mal "hallo" ausgegeben ))):

    Ich habe leider beim AG Beispiel 80% der Punkte erhalten weil zwei Testcases nicht durchrennen. Ich habe jetzt ein paar Wege versucht aber leider bringt alles nichts und dachte ich frag mal nach. Es geht um
    f()
    y = 1;
    var y=2;
    end;


    und


    f()
    var y=y;
    end;


    Erwartet wird STatus 3 und ich erhalte 0.
    Meine lookup Funktion ist void und als postorder traversal gekennzeichnet. Was ich glaube bzw vermute ist, dass durch diesen postorder natürlich auch die Zweige angeschaut werden und somit die Variable dann später existiert und dadurch auch das Programm korrekt beendet wird. Irgendwie steh ich an und weiß nicht, wie ichs sonst machen könnte (hab eben versucht Kleinigkeiten zu ändern aber es hat nichts gebracht). Wenn ich diesen Fehler nicht behebe dann werde ich ja bei den kommenden Abgaben auch "bestraft" und wäre dankbar, wenn mir jmd weiterhelfen könnte.

    Hi,
    ich hab bei diesem Beispiel große Schwierigkeiten und hab die letzten Tage versucht immer ein wenig mehr von dem Ganzen zu checken.
    In der Angabe steht:
    Verwenden Sie keine globalen Variablen oder Funktionen mit Seiteneffekten (z.B. Funktionen, die übergebene Datenstrukturen ändern) bei der Attributberechnung!


    Wie ist das genau zuverstehen, ich brauch doch Listen wo ich Variablen hinzufüge und so, und da muss ich ja eine Funktion aufrufen, wo dann ein Element hinzugefügt wird und somit die DS verändert wird.!?! :confused:


    lg

    Hii,
    ich hab mir mal das hier (http://dinosaur.compilertools.net/yacc/index.html) durchgelesen bzw. das meiste und irgendwie weiß ich noch immer nicht wie ich Parser Konflikte lösen kann.
    Es geht um Konflikte wie "expr != expr != expr" , es macht ja einen Unterschied ob man (e != e) != e hat oder e != (e != e). Ok das kommt nicht bei uns vor aber ja..


    Edit: hat sich erledigt, zumindest fürs Beispiel hat mir folgendes Video (https://www.youtube.com/watch?v=mp_FBzauo-w) weitergeholfen (die ersten 2-3min) und am Ende die letzten Mins um den Debugmode einzuschalten.

    In der Angabe zum Parser Beispiel werden in der Grammatik (Abbildung 2) geschwungene und eckige Klammern verwendet.
    Wie genau sind diese zu interpretieren?
    z.B.:


    Code
    1. Pars: { id ',' } [ id ]
    2. ;
    3. Stats: { { Labeldef } Stat ';' }
    4. ;


    Bedeutet das, dass Pars aus "id," beliebig oft geschrieben und gefolgt von id ist? Wozu wird dann die Eckige Klammer in diesem Fall verwendet?


    Hii, ich glaube das hier wird dir weiterhelfen (:
    https://www.complang.tuwien.ac.at/ubvl/FAQ.html#parser

    Irgendwie krieg ich die Kommentare nicht hin. Ein Kommentar ist: "(*", nun kann "(*" belieb oft wiederholt werden und es dürfen nun alle Zeichen außer * gefolgt von ) vorkommen und Leerzeichen, Tabs und Newline sind auch erlaubt (dürfen auch mehrmals vorkommen) und am Schluss muss "*)" folgen. Stimmt die Überlegung, falls ja.. wieso funkt dann das ganze net ))))))))):. Für die restlichen rules etc. habe ich vielleicht 30min gebraucht und für die Kommentare sitz ich schon seit Stunden -.-

    Da in der Angabe keine Mindestziffernzahl verlangt ist, ist _ und ___ eine Schreibweise fuer 0.


    Bekommt man auch die vollen Punkte wenn man nichts ausgibt, denn _ ist keine Ziffer (ich meine jetzt außerhalb des Beispiels) und wenn wir in diesem Bsp annehmen, dass 0123456789_ gültige Eingaben (bzw. Ziffern) sind , dann besteht die Möglichkeit _ entweder auszugeben oder wie in unserem Bsp _ zu igorieren. Aber irgendwie find ich persönlich _ mit 0 zu "mappen" (wenn keine anderen Ziffern vorhanden sind) etwas komisch, weil es dann nicht wirklich "ignorieren" ist.

    Tutoren haben wir dieses Jahr keine, aber die Frage hier zu stellen, ist schon ganz gut.


    Ein off-by-one-Fehler bei diesem Beispiel koennte z.B. vom Carry-flag herruehren, das vom Mul-Befehl ueberschrieben wird.


    vielen Dank, ja die Annahme hatte ich auch und nun hab ich endlich das Problem lösen können. Jede Rechenoperation (außer inc/dec) verändert das CF, d.h. aber auch, dass cmp das CF verändert (steht zwar in der Doku aber ich habe nicht genau verstanden gehabt wann cmp das CF verändert).

    versteh ich es richtig. D.h. wenn davor das cf gesetzt ist und man mul ausführt und die high bits 0 sind dann wird das cf mit 0 überschrieben!?