⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config_gram.c

📁 AVR的USB文件
💻 C
📖 第 1 页 / 共 4 页
字号:
	YYSTACK_RELOCATE (yyvs);#  undef YYSTACK_RELOCATE	if (yyss1 != yyssa)	  YYSTACK_FREE (yyss1);      }# endif#endif /* no yyoverflow */      yyssp = yyss + yysize - 1;      yyvsp = yyvs + yysize - 1;      YYDPRINTF ((stderr, "Stack size increased to %lu\n",		  (unsigned long int) yystacksize));      if (yyssp >= yyss + yystacksize - 1)	YYABORT;    }  YYDPRINTF ((stderr, "Entering state %d\n", yystate));  goto yybackup;/*-----------.| yybackup.  |`-----------*/yybackup:/* Do appropriate processing given the current state.  *//* Read a lookahead token if we need one and don't already have one.  *//* yyresume: */  /* First try to decide what to do without reference to lookahead token.  */  yyn = yypact[yystate];  if (yyn == YYPACT_NINF)    goto yydefault;  /* Not known => get a lookahead token if don't already have one.  */  /* yychar is either YYEMPTY or YYEOF     or a valid token in external form.  */  if (yychar == YYEMPTY)    {      YYDPRINTF ((stderr, "Reading a token: "));      yychar = YYLEX;    }  /* Convert token to internal form (in yychar1) for indexing tables with.  */  if (yychar <= 0)		/* This means end of input.  */    {      yychar1 = 0;      yychar = YYEOF;		/* Don't call YYLEX any more.  */      YYDPRINTF ((stderr, "Now at end of input.\n"));    }  else    {      yychar1 = YYTRANSLATE (yychar);      /* We have to keep this `#if YYDEBUG', since we use variables	 which are defined only if `YYDEBUG' is set.  */      YYDPRINTF ((stderr, "Next token is "));      YYDSYMPRINT ((stderr, yychar1, yylval));      YYDPRINTF ((stderr, "\n"));    }  /* If the proper action on seeing token YYCHAR1 is to reduce or to     detect an error, take that action.  */  yyn += yychar1;  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1)    goto yydefault;  yyn = yytable[yyn];  if (yyn <= 0)    {      if (yyn == 0 || yyn == YYTABLE_NINF)	goto yyerrlab;      yyn = -yyn;      goto yyreduce;    }  if (yyn == YYFINAL)    YYACCEPT;  /* Shift the lookahead token.  */  YYDPRINTF ((stderr, "Shifting token %d (%s), ",	      yychar, yytname[yychar1]));  /* Discard the token being shifted unless it is eof.  */  if (yychar != YYEOF)    yychar = YYEMPTY;  *++yyvsp = yylval;  /* Count tokens shifted since error; after three, turn off error     status.  */  if (yyerrstatus)    yyerrstatus--;  yystate = yyn;  goto yynewstate;/*-----------------------------------------------------------.| yydefault -- do the default action for the current state.  |`-----------------------------------------------------------*/yydefault:  yyn = yydefact[yystate];  if (yyn == 0)    goto yyerrlab;  goto yyreduce;/*-----------------------------.| yyreduce -- Do a reduction.  |`-----------------------------*/yyreduce:  /* yyn is the number of a rule to reduce with.  */  yylen = yyr2[yyn];  /* If YYLEN is nonzero, implement the default value of the action:     `$$ = $1'.     Otherwise, the following line sets YYVAL to garbage.     This behavior is undocumented and Bison     users should not rely upon it.  Assigning to YYVAL     unconditionally makes the parser a bit smaller, and it avoids a     GCC warning that YYVAL may be used uninitialized.  */  yyval = yyvsp[1-yylen];#if YYDEBUG  /* We have to keep this `#if YYDEBUG', since we use variables which     are defined only if `YYDEBUG' is set.  */  if (yydebug)    {      int yyi;      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",		 yyn - 1, yyrline[yyn]);      /* Print the symbols being reduced, and their result.  */      for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)	YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);      YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);    }#endif  switch (yyn)    {        case 8:#line 138 "../config_gram.y"    {    strncpy(default_programmer, yyvsp[-1]->value.string, MAX_STR_CONST);    default_programmer[MAX_STR_CONST-1] = 0;    free_token(yyvsp[-1]);  }    break;  case 9:#line 144 "../config_gram.y"    {    strncpy(default_parallel, yyvsp[-1]->value.string, PATH_MAX);    default_parallel[PATH_MAX-1] = 0;    free_token(yyvsp[-1]);  }    break;  case 10:#line 150 "../config_gram.y"    {    strncpy(default_serial, yyvsp[-1]->value.string, PATH_MAX);    default_serial[PATH_MAX-1] = 0;    free_token(yyvsp[-1]);  }    break;  case 11:#line 160 "../config_gram.y"    { current_prog = pgm_new();      strcpy(current_prog->config_file, infile);      current_prog->lineno = lineno;    }    break;  case 12:#line 165 "../config_gram.y"    {       if (lsize(current_prog->id) == 0) {        fprintf(stderr,                "%s: error at %s:%d: required parameter id not specified\n",                progname, infile, lineno);        exit(1);      }      if (current_prog->type[0] == 0) {        fprintf(stderr, "%s: error at %s:%d: programmer type not specified\n",                progname, infile, lineno);        exit(1);      }      PUSH(programmers, current_prog);       current_prog = NULL;     }    break;  case 13:#line 185 "../config_gram.y"    {      current_part = avr_new_part();      strcpy(current_part->config_file, infile);      current_part->lineno = lineno;    }    break;  case 14:#line 191 "../config_gram.y"    {       LNODEID ln;      AVRMEM * m;      if (current_part->id[0] == 0) {        fprintf(stderr,                "%s: error at %s:%d: required parameter id not specified\n",                progname, infile, lineno);        exit(1);      }      /*       * perform some sanity checking, and compute the number of bits       * to shift a page for constructing the page address for       * page-addressed memories.       */      for (ln=lfirst(current_part->mem); ln; ln=lnext(ln)) {        m = ldata(ln);        if (m->paged) {          if (m->page_size == 0) {            fprintf(stderr,                     "%s: error at %s:%d: must specify page_size for paged "                    "memory\n",                    progname, infile, lineno);            exit(1);          }          if (m->num_pages == 0) {            fprintf(stderr,                     "%s: error at %s:%d: must specify num_pages for paged "                    "memory\n",                    progname, infile, lineno);            exit(1);          }          if (m->size != m->page_size * m->num_pages) {            fprintf(stderr,                     "%s: error at %s:%d: page size (%u) * num_pages (%u) = "                    "%u does not match memory size (%u)\n",                    progname, infile, lineno,                    m->page_size,                     m->num_pages,                     m->page_size * m->num_pages,                    m->size);            exit(1);          }        }      }      PUSH(part_list, current_part);       current_part = NULL;     }    break;  case 15:#line 246 "../config_gram.y"    { ladd(string_list, yyvsp[0]); }    break;  case 16:#line 247 "../config_gram.y"    { ladd(string_list, yyvsp[0]); }    break;  case 17:#line 252 "../config_gram.y"    { ladd(number_list, yyvsp[0]); }    break;  case 18:#line 253 "../config_gram.y"    { ladd(number_list, yyvsp[0]); }    break;  case 21:#line 264 "../config_gram.y"    {    {       TOKEN * t;      while (lsize(string_list)) {        t = lrmv_n(string_list, 1);        ladd(current_prog->id, dup_string(t->value.string));        free_token(t);      }    }  }    break;  case 22:#line 275 "../config_gram.y"    {    {       par_initpgm(current_prog);    }  }    break;  case 23:#line 281 "../config_gram.y"    {    {       stk500_initpgm(current_prog);    }  }    break;  case 24:#line 287 "../config_gram.y"    {    strncpy(current_prog->desc, yyvsp[0]->value.string, PGM_DESCLEN);    current_prog->desc[PGM_DESCLEN-1] = 0;    free_token(yyvsp[0]);  }    break;  case 25:#line 293 "../config_gram.y"    {    {       TOKEN * t;      int pin;      current_prog->pinno[PPI_AVR_VCC] = 0;      while (lsize(number_list)) {        t = lrmv_n(number_list, 1);        pin = t->value.number;        if ((pin < 2) || (pin > 9)) {          fprintf(stderr,                   "%s: error at line %d of %s: VCC must be one or more "                  "pins from the range 2-9\n",                  progname, lineno, infile);          exit(1);        }        current_prog->pinno[PPI_AVR_VCC] |= (1 << (pin-2));        free_token(t);      }    }  }    break;  case 26:#line 318 "../config_gram.y"    {    {       TOKEN * t;      int pin;      current_prog->pinno[PPI_AVR_BUFF] = 0;      while (lsize(number_list)) {        t = lrmv_n(number_list, 1);        pin = t->value.number;        if ((pin < 2) || (pin > 9)) {          fprintf(stderr,                   "%s: error at line %d of %s: BUFF must be one or more "                  "pins from the range 2-9\n",                  progname, lineno, infile);          exit(1);        }        current_prog->pinno[PPI_AVR_BUFF] |= (1 << (pin-2));        free_token(t);      }    }  }    break;  case 27:#line 343 "../config_gram.y"    { free_token(yyvsp[-2]);                                   assign_pin(PIN_AVR_RESET, yyvsp[0]); }    break;  case 28:#line 345 "../config_gram.y"    { free_token(yyvsp[-2]);                                   assign_pin(PIN_AVR_SCK, yyvsp[0]); }    break;  case 29:#line 347 "../config_gram.y"    { assign_pin(PIN_AVR_MOSI, yyvsp[0]); }    break;  case 30:#line 348 "../config_gram.y"    { assign_pin(PIN_AVR_MISO, yyvsp[0]); }    break;  case 31:#line 349 "../config_gram.y"    { assign_pin(PIN_LED_ERR, yyvsp[0]); }    break;  case 32:#line 350 "../config_gram.y"    { assign_pin(PIN_LED_RDY, yyvsp[0]); }    break;  case 33:#line 351 "../config_gram.y"    { assign_pin(PIN_LED_PGM, yyvsp[0]); }    break;  case 34:#line 352 "../config_gram.y"    { assign_pin(PIN_LED_VFY, yyvsp[0]); }    break;  case 54:#line 391 "../config_gram.y"    {      strncpy(current_part->id, yyvsp[0]->value.string, AVR_IDLEN);      current_part->id[AVR_IDLEN-1] = 0;      free_token(yyvsp[0]);    }    break;  case 55:#line 398 "../config_gram.y"    {      strncpy(current_part->desc, yyvsp[0]->value.string, AVR_DESCLEN);      current_part->desc[AVR_DESCLEN-1] = 0;      free_token(yyvsp[0]);    }    break;  case 56:#line 404 "../config_gram.y"    {    {      current_part->devicecode = yyvsp[0]->value.number;      free_token(yyvsp[0]);    }  }    break;  case 57:#line 412 "../config_gram.y"    {      current_part->chip_erase_delay = yyvsp[0]->value.number;      free_token(yyvsp[0]);    }    break;  case 58:#line 418 "../config_gram.y"    {      current_part->pagel = yyvsp[0]->value.number;      free_token(yyvsp[0]);    }    break;  case 59:#line 424 "../config_gram.y"    {      current_part->bs2 = yyvsp[0]->value.number;      free_token(yyvsp[0]);    }    break;  case 60:#line 430 "../config_gram.y"    {      if (yyvsp[0]->primary == K_DEDICATED)        current_part->reset_disposition = RESET_DEDICATED;      else if (yyvsp[0]->primary == K_IO)        current_part->reset_disposition = RESET_IO;      free_tokens(2, yyvsp[-2], yyvsp[0]);    }    break;  case 61:#line 440 "../config_gram.y"    {      if (yyvsp[0]->primary == K_YES)        current_part->flags |= AVRPART_SERIALOK;      else if (yyvsp[0]->primary == K_NO)        current_part->flags &= ~AVRPART_SERIALOK;      free_token(yyvsp[0]);    }    break;  case 62:#line 450 "../config_gram.y"    {      if (yyvsp[0]->primary == K_YES) {        current_part->flags |= AVRPART_PARALLELOK;        current_part->flags &= ~AVRPART_PSEUDOPARALLEL;      }      else if (yyvsp[0]->primary == K_NO) {        current_part->flags &= ~AVRPART_PARALLELOK;        current_part->flags &= ~AVRPART_PSEUDOPARALLEL;      }      else if (yyvsp[0]->primary == K_PSEUDO) {        current_part->flags |= AVRPART_PARALLELOK;        current_part->flags |= AVRPART_PSEUDOPARALLEL;      }      free_token(yyvsp[0]);    }    break;  case 63:#line 469 "../config_gram.y"    {      switch (yyvsp[0]->primary) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -