bitwise operations
This commit is contained in:
@@ -364,7 +364,7 @@ main func() void {
|
||||
(expression
|
||||
(sink))
|
||||
(expression
|
||||
(identifier))))))))))
|
||||
(identifier))))))))))
|
||||
|
||||
==================
|
||||
Native tests
|
||||
@@ -509,3 +509,137 @@ value uint :: 255
|
||||
(builtin_type))
|
||||
(expression
|
||||
(integer))))
|
||||
|
||||
==================
|
||||
Bitwise operations
|
||||
==================
|
||||
|
||||
ops func(value u8, count u8) u8 {
|
||||
value &= ~u8(1)
|
||||
value |= 2
|
||||
value xor= 3
|
||||
value <<= count
|
||||
value >>= count
|
||||
value <<|= count
|
||||
if (value | 1) |captured| { return captured }
|
||||
return (value & 15) xor (value << 1) | (value >> 1) | (value <<| 8)
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(source_file
|
||||
(function_declaration
|
||||
(identifier)
|
||||
(parameter_list
|
||||
(parameter
|
||||
(identifier)
|
||||
(type
|
||||
(builtin_type)))
|
||||
(parameter
|
||||
(identifier)
|
||||
(type
|
||||
(builtin_type))))
|
||||
(type
|
||||
(builtin_type))
|
||||
(block
|
||||
(statement
|
||||
(assignment_statement
|
||||
(expression
|
||||
(identifier))
|
||||
(expression
|
||||
(unary_expression
|
||||
(expression
|
||||
(call_expression
|
||||
(expression
|
||||
(builtin_type))
|
||||
(argument_list
|
||||
(expression
|
||||
(integer)))))))))
|
||||
(statement
|
||||
(assignment_statement
|
||||
(expression
|
||||
(identifier))
|
||||
(expression
|
||||
(integer))))
|
||||
(statement
|
||||
(assignment_statement
|
||||
(expression
|
||||
(identifier))
|
||||
(expression
|
||||
(integer))))
|
||||
(statement
|
||||
(assignment_statement
|
||||
(expression
|
||||
(identifier))
|
||||
(expression
|
||||
(identifier))))
|
||||
(statement
|
||||
(assignment_statement
|
||||
(expression
|
||||
(identifier))
|
||||
(expression
|
||||
(identifier))))
|
||||
(statement
|
||||
(assignment_statement
|
||||
(expression
|
||||
(identifier))
|
||||
(expression
|
||||
(identifier))))
|
||||
(statement
|
||||
(if_statement
|
||||
(expression
|
||||
(parenthesized_expression
|
||||
(expression
|
||||
(binary_expression
|
||||
(expression
|
||||
(identifier))
|
||||
(expression
|
||||
(integer))))))
|
||||
(capture_list
|
||||
(identifier))
|
||||
(statement
|
||||
(block
|
||||
(statement
|
||||
(return_statement
|
||||
(expression
|
||||
(identifier))))))))
|
||||
(statement
|
||||
(return_statement
|
||||
(expression
|
||||
(binary_expression
|
||||
(expression
|
||||
(binary_expression
|
||||
(expression
|
||||
(binary_expression
|
||||
(expression
|
||||
(parenthesized_expression
|
||||
(expression
|
||||
(binary_expression
|
||||
(expression
|
||||
(identifier))
|
||||
(expression
|
||||
(integer))))))
|
||||
(expression
|
||||
(parenthesized_expression
|
||||
(expression
|
||||
(binary_expression
|
||||
(expression
|
||||
(identifier))
|
||||
(expression
|
||||
(integer))))))))
|
||||
(expression
|
||||
(parenthesized_expression
|
||||
(expression
|
||||
(binary_expression
|
||||
(expression
|
||||
(identifier))
|
||||
(expression
|
||||
(integer))))))))
|
||||
(expression
|
||||
(parenthesized_expression
|
||||
(expression
|
||||
(binary_expression
|
||||
(expression
|
||||
(identifier))
|
||||
(expression
|
||||
(integer)))))))))))))
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
value u8 = 1
|
||||
|
||||
value xor= 2
|
||||
# ^^^^ operator
|
||||
|
||||
value <<|= 3
|
||||
# ^^^^ operator
|
||||
|
||||
masked :: ~value & 15
|
||||
# ^ operator
|
||||
# ^ operator
|
||||
|
||||
shifted :: value <<| 8
|
||||
# ^^^ operator
|
||||
Reference in New Issue
Block a user