3 Stimmen

Was bewirkt dieser Teil des Ragel-Codes?

    %%{
  machine microscript;

  action ClearNumber {
    currentNumber = 0;
  }

  action RecordDigit {
    uint8_t digit = (*p) - '0';
    currentNumber = (currentNumber * 10) + digit;
  }

  number = ((digit @RecordDigit)+) >ClearNumber;
  whitespace = space+;

  main := number (whitespace number)*;
}%% 

EDIT。 Erläutern Sie mir die Bedeutung dieses ">"-Operators. Ich habe seine Beschreibung aus dem Ragel-Leitfaden in einem Kommentar an @jcomeu zitiert

Soweit ich weiß, wird die Aktion ClearNumber vor RecordDigit aufgerufen, und wenn dies der Fall ist, wird currentNumber mit Null initialisiert; wozu dann die Multiplikation mit 10?

Und schließlich die Definition der Zahl. Was bedeutet number=((digit @RecordDigit)+) >ClearNumber bedeuten?

Dies ist die Quelle des Codes: aquí

EDIT : *Wie funktioniert RecordDigit im Einzelnen? Was ist p? Ein Zeiger? Wenn ja, worauf zeigt er? Was ist digit =(*p)- '0'; bedeuten? [gelöst]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X