dune icon indicating copy to clipboard operation
dune copied to clipboard

allow nonspace operators. sys command args. dict use:

Open superiums opened this issue 9 months ago • 4 comments

this branch fix symbols:

  • allow nonspace operators. such as let a=2+3; a>3 let add=x->x+1

but space is needed when you need to differ negtive numbers with operator: such as let a=2+ -3

  • allow args in command. such as ls -l --color=auto /tmp

    • short args: -c
    • long args: --chars
    • paths: ./dir or /dir or ..

    but unfortunlately, single / is not added currently, as this may be used as operator someday.

    single . was ignored and default to cwd.

  • allow : to define dict. let dict={x:1,y:2} as well as the old one : let dict={x=1,y=2}

superiums avatar Mar 30 '25 12:03 superiums

tested with the following cases:

echo allow whitespace be skipped on operator;
echo

echo 0 testing negtive number ;
echo -1 ;
echo 3 + -1 ;
5 * -1 ;

echo;
echo 1 testing operator;
let a=10;
echo a+1 a-1 a*3 a//2 ;
let b=a+3-4*5//2 ;
echo b;
echo a%2 ;

echo;
echo 2 tesing lambda;
let add=x->x+100;
echo add a;

echo;
echo 3 testing overload;
let ++ =x->x+1;
++ a;

echo;
echo 4 testing command;
ls -l --color=auto ;
ls -l --color=auto /tmp ;


echo  "--testing dict with : " ;
let z = {x:1,y:3} ;
echo z;
echo z@x;

let z = {x=11,y=13} ;
echo z;
echo z@y;
echo finished.

superiums avatar Mar 30 '25 12:03 superiums

Wow, thank you so so much!! I really appreciate the effort!! I'll take a look in the morning and merge if everything is in order!

adam-mcdaniel avatar Apr 01 '25 04:04 adam-mcdaniel

Hmm the one issue I see with this is the // operator changing to /. The reason is, / as a symbol should mean the root path, which should not evaluate to a function -- that's the reason why I chose // as the operator instead of the /

adam-mcdaniel avatar Apr 01 '25 15:04 adam-mcdaniel

paths was recognized when : / folling a space and followed by some latter. (see parse_argument).

operator / was recognized when: / with space surround. or letters surround.

eg:

ls /bin , /bin as path

ls /local/bin , /local/bin as path

cd ./local , ./local as path

cd ../bin , ../bin as path.

a/b, / as operator

a / b , / as operator.

superiums avatar Apr 02 '25 00:04 superiums