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]