%%{
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)*;
}%%
编辑:让我理解这个“>”运算符的含义。我在对@jcomeu 的评论中引用了 ragel 指南中的描述
我知道在 RecordDigit 之前调用了 ClearNumber 动作,如果是这样,currentNumber 被初始化为零,将它乘以 10 有什么用。
最后,数字的定义。是什么number=((digit @RecordDigit)+) >ClearNumber
意思?
这是代码的来源:这里
编辑:* RecordDigit 具体是如何工作的?pdigit =(*p)- '0';
是什么指针?如果是这样,它指向什么?什么意思?[解决了]