handle decimals
This commit is contained in:
parent
5bed7b557a
commit
dbd3ff2acd
3 changed files with 17 additions and 2 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,3 +1,4 @@
|
||||||
.direnv/
|
.direnv/
|
||||||
bin/
|
bin/
|
||||||
outputs/
|
outputs/
|
||||||
|
*.swp
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
pname = "qc";
|
pname = "qc";
|
||||||
version = "1.0";
|
version = "1.0";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
nativeBuildInputs = with pkgs; [ gcc gnumake readline.dev gmp.dev ];
|
nativeBuildInputs = with pkgs; [ gcc gnumake ];
|
||||||
buildInputs = with pkgs; [ readline.dev gmp.dev ];
|
buildInputs = with pkgs; [ readline.dev gmp.dev ];
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
||||||
16
main.c
16
main.c
|
|
@ -377,7 +377,20 @@ struct value* scan(const char* text)
|
||||||
{
|
{
|
||||||
mpq_t factor; mpq_init(factor);
|
mpq_t factor; mpq_init(factor);
|
||||||
|
|
||||||
TODO;
|
moving++;
|
||||||
|
|
||||||
|
mpq_set_si(factor, 1, 10);
|
||||||
|
|
||||||
|
while ('0' <= *moving && *moving <= '9')
|
||||||
|
{
|
||||||
|
mpq_set_si(tmp, *moving++ - '0', 1);
|
||||||
|
|
||||||
|
mpq_mul(tmp, factor, tmp);
|
||||||
|
|
||||||
|
mpq_add(value, value, tmp);
|
||||||
|
|
||||||
|
mpq_div(factor, factor, base);
|
||||||
|
}
|
||||||
|
|
||||||
mpq_clear(factor);
|
mpq_clear(factor);
|
||||||
}
|
}
|
||||||
|
|
@ -570,6 +583,7 @@ struct expression* parse(const char* text)
|
||||||
|
|
||||||
while (false
|
while (false
|
||||||
|| *moving == '_'
|
|| *moving == '_'
|
||||||
|
|| *moving == '.'
|
||||||
|| ('0' <= *moving && *moving <= '9'))
|
|| ('0' <= *moving && *moving <= '9'))
|
||||||
{
|
{
|
||||||
append(*moving++);
|
append(*moving++);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue