* lexer.l,config_gram.y,config.[hc]: changed reading of numbers to integers except of default_bitclock which is the only real number.
No signs are allowed as negative values do not make sense for current config values. * buspirate.c: include own header file buspirate.h * doc/.cvsignore: add programmers.texi to ignore list git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1105 81a1dc3b-b13d-400b-aceb-764788c761c2
This commit is contained in:
parent
dd3ce5f0e1
commit
673f43f37d
|
@ -1,3 +1,12 @@
|
||||||
|
2012-11-04 Rene Liebscher <R.Liebscher@gmx.de>
|
||||||
|
|
||||||
|
* lexer.l,config_gram.y,config.[hc]: changed reading of numbers to integers
|
||||||
|
except of default_bitclock which is the only real number.
|
||||||
|
No signs are allowed as negative values do not make sense for current
|
||||||
|
config values.
|
||||||
|
* buspirate.c: include own header file buspirate.h
|
||||||
|
* doc/.cvsignore: add programmers.texi to ignore list
|
||||||
|
|
||||||
2012-09-06 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
2012-09-06 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
||||||
|
|
||||||
* doc/Makefile.am: add EXTRA_DIST, replace $(srcdir) by
|
* doc/Makefile.am: add EXTRA_DIST, replace $(srcdir) by
|
||||||
|
|
|
@ -326,7 +326,7 @@
|
||||||
#
|
#
|
||||||
default_parallel = "@DEFAULT_PAR_PORT@";
|
default_parallel = "@DEFAULT_PAR_PORT@";
|
||||||
default_serial = "@DEFAULT_SER_PORT@";
|
default_serial = "@DEFAULT_SER_PORT@";
|
||||||
# default_bitclock = 2.5
|
# default_bitclock = 2.5;
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
#include "avr.h"
|
#include "avr.h"
|
||||||
#include "pgm.h"
|
#include "pgm.h"
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
|
#include "buspirate.h"
|
||||||
|
|
||||||
/* ====== Private data structure ====== */
|
/* ====== Private data structure ====== */
|
||||||
/* CS and AUX pin bitmasks in
|
/* CS and AUX pin bitmasks in
|
||||||
|
|
24
config.c
24
config.c
|
@ -149,15 +149,29 @@ TOKEN * number(char * text)
|
||||||
|
|
||||||
tkn = new_token(TKN_NUMBER);
|
tkn = new_token(TKN_NUMBER);
|
||||||
tkn->value.type = V_NUM;
|
tkn->value.type = V_NUM;
|
||||||
tkn->value.number = atof(text);
|
tkn->value.number = atoi(text);
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
fprintf(stderr, "NUMBER(%g)\n", tkn->value.number);
|
fprintf(stderr, "NUMBER(%d)\n", tkn->value.number);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return tkn;
|
return tkn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TOKEN * number_real(char * text)
|
||||||
|
{
|
||||||
|
struct token_t * tkn;
|
||||||
|
|
||||||
|
tkn = new_token(TKN_NUMBER);
|
||||||
|
tkn->value.type = V_NUM_REAL;
|
||||||
|
tkn->value.number_real = atof(text);
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
fprintf(stderr, "NUMBER(%g)\n", tkn->value.number_real);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return tkn;
|
||||||
|
}
|
||||||
|
|
||||||
TOKEN * hexnumber(char * text)
|
TOKEN * hexnumber(char * text)
|
||||||
{
|
{
|
||||||
|
@ -224,7 +238,11 @@ void print_token(TOKEN * tkn)
|
||||||
fprintf(stderr, "token = %d = ", tkn->primary);
|
fprintf(stderr, "token = %d = ", tkn->primary);
|
||||||
switch (tkn->value.type) {
|
switch (tkn->value.type) {
|
||||||
case V_NUM:
|
case V_NUM:
|
||||||
fprintf(stderr, "NUMBER, value=%g", tkn->value.number);
|
fprintf(stderr, "NUMBER, value=%d", tkn->value.number);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case V_NUM_REAL:
|
||||||
|
fprintf(stderr, "NUMBER, value=%g", tkn->value.number_real);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case V_STR:
|
case V_STR:
|
||||||
|
|
9
config.h
9
config.h
|
@ -29,11 +29,14 @@
|
||||||
|
|
||||||
#define MAX_STR_CONST 1024
|
#define MAX_STR_CONST 1024
|
||||||
|
|
||||||
enum { V_NONE, V_NUM, V_STR };
|
enum { V_NONE, V_NUM, V_NUM_REAL, V_STR };
|
||||||
typedef struct value_t {
|
typedef struct value_t {
|
||||||
int type;
|
int type;
|
||||||
double number;
|
/*union { TODO: use an anonymous union here ? */
|
||||||
|
int number;
|
||||||
|
double number_real;
|
||||||
char * string;
|
char * string;
|
||||||
|
/*};*/
|
||||||
} VALUE;
|
} VALUE;
|
||||||
|
|
||||||
|
|
||||||
|
@ -91,6 +94,8 @@ void free_tokens(int n, ...);
|
||||||
|
|
||||||
TOKEN * number(char * text);
|
TOKEN * number(char * text);
|
||||||
|
|
||||||
|
TOKEN * number_real(char * text);
|
||||||
|
|
||||||
TOKEN * hexnumber(char * text);
|
TOKEN * hexnumber(char * text);
|
||||||
|
|
||||||
TOKEN * string(char * text);
|
TOKEN * string(char * text);
|
||||||
|
|
|
@ -200,12 +200,24 @@ static int pin_name;
|
||||||
%token TKN_SEMI
|
%token TKN_SEMI
|
||||||
%token TKN_TILDE
|
%token TKN_TILDE
|
||||||
%token TKN_NUMBER
|
%token TKN_NUMBER
|
||||||
|
%token TKN_NUMBER_REAL
|
||||||
%token TKN_STRING
|
%token TKN_STRING
|
||||||
|
|
||||||
%start configuration
|
%start configuration
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
|
number_real :
|
||||||
|
TKN_NUMBER {
|
||||||
|
$$ = $1;
|
||||||
|
/* convert value to real */
|
||||||
|
$$->value.number_real = $$->value.number;
|
||||||
|
$$->value.type = V_NUM_REAL;
|
||||||
|
} |
|
||||||
|
TKN_NUMBER_REAL {
|
||||||
|
$$ = $1;
|
||||||
|
}
|
||||||
|
|
||||||
configuration :
|
configuration :
|
||||||
/* empty */ | config
|
/* empty */ | config
|
||||||
;
|
;
|
||||||
|
@ -239,8 +251,8 @@ def :
|
||||||
free_token($3);
|
free_token($3);
|
||||||
} |
|
} |
|
||||||
|
|
||||||
K_DEFAULT_BITCLOCK TKN_EQUAL TKN_NUMBER TKN_SEMI {
|
K_DEFAULT_BITCLOCK TKN_EQUAL number_real TKN_SEMI {
|
||||||
default_bitclock = $3->value.number;
|
default_bitclock = $3->value.number_real;
|
||||||
free_token($3);
|
free_token($3);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
|
@ -22,3 +22,4 @@ texinfo.tex
|
||||||
version.texi
|
version.texi
|
||||||
programmer_types.texi
|
programmer_types.texi
|
||||||
parts.texi
|
parts.texi
|
||||||
|
programmers.texi
|
||||||
|
|
9
lexer.l
9
lexer.l
|
@ -57,9 +57,12 @@ SIGN [+-]
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
{SIGN}*{DIGIT}+ { yylval = number(yytext); return TKN_NUMBER; }
|
#{SIGN}*{DIGIT}+ { yylval = number(yytext); return TKN_NUMBER; }
|
||||||
{SIGN}*{DIGIT}+"."{DIGIT}* { yylval = number(yytext); return TKN_NUMBER; }
|
#{SIGN}*{DIGIT}+"."{DIGIT}* { yylval = number_real(yytext); return TKN_NUMBER_REAL; }
|
||||||
{SIGN}*"."{DIGIT}* { yylval = number(yytext); return TKN_NUMBER; }
|
#{SIGN}*"."{DIGIT}* { yylval = number_real(yytext); return TKN_NUMBER_REAL; }
|
||||||
|
{DIGIT}+ { yylval = number(yytext); return TKN_NUMBER; }
|
||||||
|
{DIGIT}+"."{DIGIT}* { yylval = number_real(yytext); return TKN_NUMBER_REAL; }
|
||||||
|
"."{DIGIT}+ { yylval = number_real(yytext); return TKN_NUMBER_REAL; }
|
||||||
|
|
||||||
"\"" { string_buf_ptr = string_buf; BEGIN(strng); }
|
"\"" { string_buf_ptr = string_buf; BEGIN(strng); }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue