Parsing 什么是‘;消费’;在javacc中是什么意思?

Parsing 什么是‘;消费’;在javacc中是什么意思?,parsing,javacc,Parsing,Javacc,消费总是出现在以下位置:(在*.jj文件的生成的*Parser.java文件中) 在上面的代码中,0和-1是什么意思 private Token jj_consume_token(int kind) throws ParseException { Token oldToken; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.getNextToken()

消费总是出现在以下位置:(在*.jj文件的生成的*Parser.java文件中)

在上面的代码中,0和-1是什么意思

private Token jj_consume_token(int kind) throws ParseException {
Token oldToken;
if ((oldToken = token).next != null) token = token.next;
else token = token.next = token_source.getNextToken();
jj_ntk = -1;
if (token.kind == kind) {
  jj_gen++;
  if (++jj_gc > 100) {
    jj_gc = 0;
    for (int i = 0; i < jj_2_rtns.length; i++) {
      JJCalls c = jj_2_rtns[i];
      while (c != null) {
        if (c.gen < jj_gen) c.first = null;
        c = c.next;
      }
    }
  }
  trace_token(token, "");
  return token;
}
token = oldToken;
jj_kind = kind;
throw generateParseException();
}
private-Token jj_-consume_-Token(int-kind)抛出异常{
Token-oldToken;
if((oldToken=token.next!=null)token=token.next;
else token=token.next=token_source.getNextToken();
jj_ntk=-1;
if(token.kind==kind){
jj_gen++;
如果(++jj_gc>100){
jj_gc=0;
for(int i=0;i
函数的返回标记是什么意思


总之,“消费”在javacc中是什么意思?

概念上,输入流是一系列常规(即非特殊)令牌。其中一个令牌是“当前令牌”。当前令牌之前的令牌可能是垃圾——即生成的代码没有指向它们的指针——而当前令牌之后的令牌可能尚未构造。当前标记是解析器用来做出大部分决策的标记。例如,像这样的产品

void A() : {} {  <X>  <Y> <Z> | <Y> <Z> | <Z> }

kind
参数用于指示预期的令牌类型。

概念上,输入流是一系列常规(即非特殊)令牌。其中一个令牌是“当前令牌”。当前令牌之前的令牌可能是垃圾——即生成的代码没有指向它们的指针——而当前令牌之后的令牌可能尚未构造。当前标记是解析器用来做出大部分决策的标记。例如,像这样的产品

void A() : {} {  <X>  <Y> <Z> | <Y> <Z> | <Z> }
kind
参数用于指示所需的令牌类型

void A() {
    switch( <<the kind of the current token>> ) {
    case X: jj_consume_token(X) ; jj_consume_token(Y) ; jj_consume_token(Z) ; return ;
    case Y: jj_consume_token(Y) ; jj_consume_token(Z) ; return ;
    case Z: jj_consume_token(Z) ; return ; }
if( token.next == null ) token.next = <<construct the next token>> ;
token = token.next ;
if( token.kind != kind) <<throw an exception>> ;
else return token ;