GNU Flex und ein Rückgabewert



  • Hallo,

    ich schreibe gerade Mit Flex einen Scanner.

    Nun bin ich noch anfänger und möchte gerne dieses Problem lösen:
    Bei Erkennung eines regulären Ausdrucks soll das Programm den ASCII Wert zurückgeben.

    Nun weis ich nicht, wie der befehl dazu aussieht.

    Also z.B.

    "-" {return <ASCII>}

    (wobei oben <ASCII> für den unbekannten text stehen soll)
    gibt es eine Funktion oder so etwas, was mir den zugehörigen Wert gibt?

    Vielen Dank

    ps: In den englischen Texten steht immer "match". Wie ist die korrekte deutsche Übersetzung dafür?



  • also ich habe jetzt herausgefunden, dass ich durch den Befehl
    {return *yytext;} durch den Pointer yytext auf den "Inhalt" der Speicherzelle zugreifen kann, in welcher unser Zeichen "-" gespeichert ist.

    Nur ist der Inhalt doch dann "-". Oder wird hier automatisch schon der ASCII Wert zurückgegeben.??

    Würde mich echt über eure Hilfe freuen.



  • Du solltest den zurückgegebenen Zeiger dereferenzieren, wenn du das dahinterliegende Zeichen (bzw. seinen ASCII-Wert) benötigst.



  • Hallo,

    danke erstmal für deine Hilfe. Also bei Wikipedia steht, dass dereferenzieren grob gesagt bedeutet: Zugreifen auf das Objekt, welches in der Speicheradresse gespeichert wird.

    Aber das wird doch genau durch *yytext gemacht oder verstehe ich da was falsch?

    Was ich nicht so ganz verstehe ist glaube ich folgendes:

    Wenn sich ein Charakter, z.B. "-" in einer Speicherzelle befindet, und ich einen Pointer namens ptr darauf habe.
    Welchen Wert hat dann *ptr? Ist das der ASCII Wert oder tatsächlich der character?



  • *ptr hat den Wert '-' bzw. 45 (laut ASCII-Tabelle), das ist in C das selbe 😉



  • *ptr ist das selbe wie ptr[0]


Anmelden zum Antworten