Pointer p
p in RecordDigit - , Ragel. . ( Java Ruby , data). , (*p) - '0' (, '7' s 55 ASCII), '0' (48 ASCII), , : 55 - 48 = 7.
> @
> . @ .
, :
((digit @RecordDigit)+) >ClearNumber
ClearNumber RecordDigit , digit . , :
action ClearNumber {
printf("ClearNumber\n");
currentNumber = 0;
}
action RecordDigit {
printf("RecordDigit\n");
uint8_t digit = (*p) - '0';
currentNumber = (currentNumber * 10) + digit;
}
:
ClearNumber
RecordDigit
RecordDigit
RecordDigit
3- .
currentNumber 0. uint8_t (*p) - '0' currentNumber. , currentNumber, 10 .. , Ragel , , , .
Ragel . Ragel .