mirror of
				https://github.com/janet-lang/janet
				synced 2025-10-31 07:33:01 +00:00 
			
		
		
		
	Rename bitwise operators.
This commit is contained in:
		| @@ -216,7 +216,7 @@ | ||||
| 		<key>corelib</key> | ||||
| 		<dict> | ||||
| 			<key>match</key> | ||||
| 			<string>(?<![\.:\w_\-=!@\$%^&?|\\/<>*])(def|do|fn|if|quasiquote|quote|set|splice|unquote|var|while|%|%=|&|&=|\*|\*=|\*doc\-width\*|\*env\*|\+|\+\+|\+=|\-|\-\-|\-=|\->|\->>|/|/=|<|<<|<<=|<=|=|==|>|>=|>>|>>=|>>>|>>>=|\^|\^=|_env|abstract\?|all|all\-symbols|and|apply|array|array/concat|array/ensure|array/insert|array/new|array/peek|array/pop|array/push|array/slice|array\?|asm|bnot|boolean\?|buffer|buffer/clear|buffer/new|buffer/popn|buffer/push\-byte|buffer/push\-integer|buffer/push\-string|buffer/slice|buffer\?|bytes\?|callable\?|case|cfunction\?|comment|comp|compile|complement|cond|coro|count|debug|debug/arg\-stack|debug/break|debug/fbreak|debug/lineage|debug/stack|debug/unbreak|debug/unfbreak|dec|deep\-not=|deep=|def\-|default|defglobal|defmacro|defmacro\-|defn|defn\-|describe|dictionary\?|disasm|distinct|doc|doc\*|doc\-format|drop\-until|drop\-while|each|empty\?|env\-lookup|error|eval|eval\-string|even\?|every\?|extreme|false\?|fiber/current|fiber/maxstack|fiber/new|fiber/setmaxstack|fiber/status|fiber\?|file/close|file/flush|file/open|file/popen|file/read|file/seek|file/write|filter|find|find\-index|first|flatten|flatten\-into|for|frequencies|function\?|gccollect|gcinterval|gcsetinterval|generate|gensym|get|getline|hash|idempotent\?|identity|if\-let|if\-not|import|import\*|inc|indexed\?|int|integer\?|interleave|interpose|invert|janet/build|janet/version|juxt|juxt\*|keep|keys|keyword\?|kvs|last|length|let|loop|macex|macex1|make\-env|map|mapcat|marshal|match|match\-1|math/acos|math/asin|math/atan|math/ceil|math/cos|math/e|math/exp|math/floor|math/inf|math/log|math/log10|math/pi|math/pow|math/random|math/seedrandom|math/sin|math/sqrt|math/tan|max|max\-order|merge|merge\-into|min|min\-order|module/find|module/native\-paths|module/paths|native|neg\?|next|nil\?|not|not=|not==|number\?|odd\?|one\?|or|order<|order<=|order>|order>=|os/clock|os/cwd|os/execute|os/exit|os/getenv|os/setenv|os/shell|os/sleep|os/time|os/which|pairs|parser/byte|parser/consume|parser/error|parser/flush|parser/new|parser/produce|parser/state|parser/status|parser/where|partial|pos\?|print|process/args|product|put|range|real|real\?|reduce|repl|require|resume|reverse|run\-context|scan\-integer|scan\-number|scan\-real|sentinel|seq|some|sort|sorted|status\-pp|stderr|stdin|stdout|string|string/ascii\-lower|string/ascii\-upper|string/bytes|string/check\-set|string/find|string/find\-all|string/from\-bytes|string/join|string/number|string/pretty|string/repeat|string/replace|string/replace\-all|string/reverse|string/slice|string/split|string\?|struct|struct\?|sum|symbol|symbol\?|table|table/getproto|table/new|table/rawget|table/setproto|table/to\-struct|table\?|take\-until|take\-while|true\?|tuple|tuple/append|tuple/prepend|tuple/slice|tuple\?|type|unless|unmarshal|update|values|varglobal|when|when\-let|with\-idemp|yield|zero\?|zipcoll|\||\|=)(?![\.:\w_\-=!@\$%^&?|\\/<>*])</string> | ||||
| 			<string>(?<![\.:\w_\-=!@\$%^&?|\\/<>*])(def|do|fn|if|quasiquote|quote|set|splice|unquote|var|while|%|%=|\*|\*=|\*doc\-width\*|\*env\*|\+|\+\+|\+=|\-|\-\-|\-=|\->|\->>|<|<=|=|==|>|>=|>>>|>>>=|\^|\^=|_env|abstract\?|all|all\-symbols|and|apply|array|array/concat|array/ensure|array/insert|array/new|array/peek|array/pop|array/push|array/slice|array\?|asm|bnot|boolean\?|buffer|buffer/clear|buffer/new|buffer/popn|buffer/push\-byte|buffer/push\-integer|buffer/push\-string|buffer/slice|buffer\?|bytes\?|callable\?|case|cfunction\?|comment|comp|compile|complement|cond|coro|count|debug|debug/arg\-stack|debug/break|debug/fbreak|debug/lineage|debug/stack|debug/unbreak|debug/unfbreak|dec|deep\-not=|deep=|def\-|default|defglobal|defmacro|defmacro\-|defn|defn\-|describe|dictionary\?|disasm|distinct|doc|doc\*|doc\-format|drop\-until|drop\-while|each|empty\?|env\-lookup|error|eval|eval\-string|even\?|every\?|extreme|false\?|fiber/current|fiber/maxstack|fiber/new|fiber/setmaxstack|fiber/status|fiber\?|file/close|file/flush|file/open|file/popen|file/read|file/seek|file/write|filter|find|find\-index|first|flatten|flatten\-into|for|frequencies|function\?|gccollect|gcinterval|gcsetinterval|generate|gensym|get|getline|hash|idempotent\?|identity|if\-let|if\-not|import|import\*|inc|indexed\?|int|integer\?|interleave|interpose|invert|janet/build|janet/version|juxt|juxt\*|keep|keys|keyword\?|kvs|last|length|let|loop|macex|macex1|make\-env|map|mapcat|marshal|match|match\-1|math/acos|math/asin|math/atan|math/ceil|math/cos|math/e|math/exp|math/floor|math/inf|math/log|math/log10|math/pi|math/pow|math/random|math/seedrandom|math/sin|math/sqrt|math/tan|max|max\-order|merge|merge\-into|min|min\-order|module/find|module/native\-paths|module/paths|native|neg\?|next|nil\?|not|not=|not==|number\?|odd\?|one\?|or|order<|order<=|order>|order>=|os/clock|os/cwd|os/execute|os/exit|os/getenv|os/setenv|os/shell|os/sleep|os/time|os/which|pairs|parser/byte|parser/consume|parser/error|parser/flush|parser/new|parser/produce|parser/state|parser/status|parser/where|partial|pos\?|print|process/args|product|put|range|real|real\?|reduce|repl|require|resume|reverse|run\-context|scan\-integer|scan\-number|scan\-real|sentinel|seq|some|sort|sorted|status\-pp|stderr|stdin|stdout|string|string/ascii\-lower|string/ascii\-upper|string/bytes|string/check\-set|string/find|string/find\-all|string/from\-bytes|string/join|string/number|string/pretty|string/repeat|string/replace|string/replace\-all|string/reverse|string/slice|string/split|string\?|struct|struct\?|sum|symbol|symbol\?|table|table/getproto|table/new|table/rawget|table/setproto|table/to\-struct|table\?|take\-until|take\-while|true\?|tuple|tuple/append|tuple/prepend|tuple/slice|tuple\?|type|unless|unmarshal|update|values|varglobal|when|when\-let|with\-idemp|yield|zero\?|zipcoll|\||\|=)(?![\.:\w_\-=!@\$%^&?|\\/<>*])</string> | ||||
| 			<key>name</key> | ||||
| 			<string>keyword.control.janet</string> | ||||
| 		</dict> | ||||
|   | ||||
| @@ -146,7 +146,7 @@ | ||||
|        ,$result | ||||
|        (tuple 'do (tuple 'def ,binding ,$form) ,$result)))) | ||||
|  | ||||
| # C style macros and functions for imperative sugar | ||||
| # C style macros and functions for imperative sugar. No bitwise though. | ||||
| (defn inc "Returns x + 1." [x] (+ x 1)) | ||||
| (defn dec "Returns x - 1." [x] (- x 1)) | ||||
| (defmacro ++ "Increments the var x by 1." [x] ~(set ,x (,+ ,x ,1))) | ||||
| @@ -156,12 +156,6 @@ | ||||
| (defmacro *= "Shorthand for (set x (* x n))." [x n] ~(set ,x (,* ,x ,n))) | ||||
| (defmacro /= "Shorthand for (set x (/ x n))." [x n] ~(set ,x (,/ ,x ,n))) | ||||
| (defmacro %= "Shorthand for (set x (% x n))." [x n] ~(set ,x (,% ,x ,n))) | ||||
| (defmacro &= "Shorthand for (set x (& x n))." [x n] ~(set ,x (,& ,x ,n))) | ||||
| (defmacro |= "Shorthand for (set x (| x n))." [x n] ~(set ,x (,| ,x ,n))) | ||||
| (defmacro ^= "Shorthand for (set x (^ x n))." [x n] ~(set ,x (,^ ,x ,n))) | ||||
| (defmacro >>= "Shorthand for (set x (>> x n))." [x n] ~(set ,x (,>> ,x ,n))) | ||||
| (defmacro <<= "Shorthand for (set x (<< x n))." [x n] ~(set ,x (,<< ,x ,n))) | ||||
| (defmacro >>>= "Shorthand for (set x (>>> x n))." [x n] ~(set ,x (,>>> ,x ,n))) | ||||
|  | ||||
| (defmacro default | ||||
|   "Define a default value for an optional argument. | ||||
|   | ||||
| @@ -711,25 +711,25 @@ JanetTable *janet_core_env(void) { | ||||
|             "Returns the quotient of xs. If xs is empty, returns 1. If xs has one value x, returns " | ||||
|             "the reciprocal of x. Otherwise return the first value of xs repeatedly divided by the remaining " | ||||
|             "values. Division by two integers uses truncating division."); | ||||
|     templatize_varop(env, JANET_FUN_BAND, "&", -1, -1, JOP_BAND, | ||||
|             "(& & xs)\n\n" | ||||
|     templatize_varop(env, JANET_FUN_BAND, "band", -1, -1, JOP_BAND, | ||||
|             "(band & xs)\n\n" | ||||
|             "Returns the bitwise and of all values in xs. Each x in xs must be an integer."); | ||||
|     templatize_varop(env, JANET_FUN_BOR, "|", 0, 0, JOP_BOR, | ||||
|             "(| & xs)\n\n" | ||||
|     templatize_varop(env, JANET_FUN_BOR, "bor", 0, 0, JOP_BOR, | ||||
|             "(bor & xs)\n\n" | ||||
|             "Returns the bitwise or of all values in xs. Each x in xs must be an integer."); | ||||
|     templatize_varop(env, JANET_FUN_BXOR, "^", 0, 0, JOP_BXOR, | ||||
|             "(^ & xs)\n\n" | ||||
|     templatize_varop(env, JANET_FUN_BXOR, "bxor", 0, 0, JOP_BXOR, | ||||
|             "(bxor & xs)\n\n" | ||||
|             "Returns the bitwise xor of all values in xs. Each in xs must be an integer."); | ||||
|     templatize_varop(env, JANET_FUN_LSHIFT, "<<", 1, 1, JOP_SHIFT_LEFT, | ||||
|             "(<< x & shifts)\n\n" | ||||
|     templatize_varop(env, JANET_FUN_LSHIFT, "blshift", 1, 1, JOP_SHIFT_LEFT, | ||||
|             "(blshift x & shifts)\n\n" | ||||
|             "Returns the value of x bit shifted left by the sum of all values in shifts. x " | ||||
|             "and each element in shift must be an integer."); | ||||
|     templatize_varop(env, JANET_FUN_RSHIFT, ">>", 1, 1, JOP_SHIFT_RIGHT, | ||||
|             "(>> x & shifts)\n\n" | ||||
|     templatize_varop(env, JANET_FUN_RSHIFT, "brshift", 1, 1, JOP_SHIFT_RIGHT, | ||||
|             "(brshift x & shifts)\n\n" | ||||
|             "Returns the value of x bit shifted right by the sum of all values in shifts. x " | ||||
|             "and each element in shift must be an integer."); | ||||
|     templatize_varop(env, JANET_FUN_RSHIFTU, ">>>", 1, 1, JOP_SHIFT_RIGHT_UNSIGNED, | ||||
|             "(>> x & shifts)\n\n" | ||||
|     templatize_varop(env, JANET_FUN_RSHIFTU, "brushift", 1, 1, JOP_SHIFT_RIGHT_UNSIGNED, | ||||
|             "(brushift x & shifts)\n\n" | ||||
|             "Returns the value of x bit shifted right by the sum of all values in shifts. x " | ||||
|             "and each element in shift must be an integer. The sign of x is not preserved, so " | ||||
|             "for positive shifts the return value will always be positive."); | ||||
|   | ||||
| @@ -24,8 +24,8 @@ | ||||
| (assert (= 10 (+ 1 2 3 4)) "addition") | ||||
| (assert (= -8 (- 1 2 3 4)) "subtraction") | ||||
| (assert (= 24 (* 1 2 3 4)) "multiplication") | ||||
| (assert (= 4 (<< 1 2)) "left shift") | ||||
| (assert (= 1 (>> 4 2)) "right shift") | ||||
| (assert (= 4 (blshift 1 2)) "left shift") | ||||
| (assert (= 1 (brshift 4 2)) "right shift") | ||||
| (assert (< 1 2 3 4 5 6) "less than integers") | ||||
| (assert (< 1.0 2.0 3.0 4.0 5.0 6.0) "less than reals") | ||||
| (assert (> 6 5 4 3 2 1) "greater than integers") | ||||
| @@ -60,10 +60,10 @@ | ||||
| (assert (not false) "false literal") | ||||
| (assert true "true literal") | ||||
| (assert (not nil) "nil literal") | ||||
| (assert (= 7 (| 3 4)) "bit or") | ||||
| (assert (= 0 (& 3 4)) "bit and") | ||||
| (assert (= 0xFF (^ 0x0F 0xF0)) "bit xor") | ||||
| (assert (= 0xF0 (^ 0xFF 0x0F)) "bit xor 2") | ||||
| (assert (= 7 (bor 3 4)) "bit or") | ||||
| (assert (= 0 (band 3 4)) "bit and") | ||||
| (assert (= 0xFF (bxor 0x0F 0xF0)) "bit xor") | ||||
| (assert (= 0xF0 (bxor 0xFF 0x0F)) "bit xor 2") | ||||
|  | ||||
| # Set global variables to prevent some possible compiler optimizations that defeat point of the test | ||||
| (var zero 0) | ||||
| @@ -127,14 +127,14 @@ | ||||
|    (var accum 1) | ||||
|    (var count 0) | ||||
|    (while (< count 16) | ||||
|      (set accum (<< accum 1)) | ||||
|      (set accum (blshift accum 1)) | ||||
|      (set count (+ 1 count))) | ||||
|    (assert (= accum 65536) "loop in closure"))) | ||||
|  | ||||
| (var accum 1) | ||||
| (var count 0) | ||||
| (while (< count 16) | ||||
|   (set accum (<< accum 1)) | ||||
|   (set accum (blshift accum 1)) | ||||
|   (set count (+ 1 count))) | ||||
| (assert (= accum 65536) "loop globally") | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Calvin Rose
					Calvin Rose