Constants
CMASK_NULL
ASCII null
uint128 constant CMASK_NULL = uint128(1) << uint128(uint8(bytes1("\x00")));
CMASK_START_OF_HEADING
ASCII start of heading
uint128 constant CMASK_START_OF_HEADING = uint128(1) << uint128(uint8(bytes1("\x01")));
CMASK_START_OF_TEXT
ASCII start of text
uint128 constant CMASK_START_OF_TEXT = uint128(1) << uint128(uint8(bytes1("\x02")));
CMASK_END_OF_TEXT
ASCII end of text
uint128 constant CMASK_END_OF_TEXT = uint128(1) << uint128(uint8(bytes1("\x03")));
CMASK_END_OF_TRANSMISSION
ASCII end of transmission
uint128 constant CMASK_END_OF_TRANSMISSION = uint128(1) << uint128(uint8(bytes1("\x04")));
CMASK_ENQUIRY
ASCII enquiry
uint128 constant CMASK_ENQUIRY = uint128(1) << uint128(uint8(bytes1("\x05")));
CMASK_ACKNOWLEDGE
ASCII acknowledge
uint128 constant CMASK_ACKNOWLEDGE = uint128(1) << uint128(uint8(bytes1("\x06")));
CMASK_BELL
ASCII bell
uint128 constant CMASK_BELL = uint128(1) << uint128(uint8(bytes1("\x07")));
CMASK_BACKSPACE
ASCII backspace
uint128 constant CMASK_BACKSPACE = uint128(1) << uint128(uint8(bytes1("\x08")));
CMASK_HORIZONTAL_TAB
ASCII horizontal tab
uint128 constant CMASK_HORIZONTAL_TAB = uint128(1) << uint128(uint8(bytes1("\t")));
CMASK_LINE_FEED
ASCII line feed
uint128 constant CMASK_LINE_FEED = uint128(1) << uint128(uint8(bytes1("\n")));
CMASK_VERTICAL_TAB
ASCII vertical tab
uint128 constant CMASK_VERTICAL_TAB = uint128(1) << uint128(uint8(bytes1("\x0B")));
CMASK_FORM_FEED
ASCII form feed
uint128 constant CMASK_FORM_FEED = uint128(1) << uint128(uint8(bytes1("\x0C")));
CMASK_CARRIAGE_RETURN
ASCII carriage return
uint128 constant CMASK_CARRIAGE_RETURN = uint128(1) << uint128(uint8(bytes1("\r")));
CMASK_SHIFT_OUT
ASCII shift out
uint128 constant CMASK_SHIFT_OUT = uint128(1) << uint128(uint8(bytes1("\x0E")));
CMASK_SHIFT_IN
ASCII shift in
uint128 constant CMASK_SHIFT_IN = uint128(1) << uint128(uint8(bytes1("\x0F")));
CMASK_DATA_LINK_ESCAPE
ASCII data link escape
uint128 constant CMASK_DATA_LINK_ESCAPE = uint128(1) << uint128(uint8(bytes1("\x10")));
CMASK_DEVICE_CONTROL_1
ASCII device control 1
uint128 constant CMASK_DEVICE_CONTROL_1 = uint128(1) << uint128(uint8(bytes1("\x11")));
CMASK_DEVICE_CONTROL_2
ASCII device control 2
uint128 constant CMASK_DEVICE_CONTROL_2 = uint128(1) << uint128(uint8(bytes1("\x12")));
CMASK_DEVICE_CONTROL_3
ASCII device control 3
uint128 constant CMASK_DEVICE_CONTROL_3 = uint128(1) << uint128(uint8(bytes1("\x13")));
CMASK_DEVICE_CONTROL_4
ASCII device control 4
uint128 constant CMASK_DEVICE_CONTROL_4 = uint128(1) << uint128(uint8(bytes1("\x14")));
CMASK_NEGATIVE_ACKNOWLEDGE
ASCII negative acknowledge
uint128 constant CMASK_NEGATIVE_ACKNOWLEDGE = uint128(1) << uint128(uint8(bytes1("\x15")));
CMASK_SYNCHRONOUS_IDLE
ASCII synchronous idle
uint128 constant CMASK_SYNCHRONOUS_IDLE = uint128(1) << uint128(uint8(bytes1("\x16")));
CMASK_END_OF_TRANSMISSION_BLOCK
ASCII end of transmission block
uint128 constant CMASK_END_OF_TRANSMISSION_BLOCK = uint128(1) << uint128(uint8(bytes1("\x17")));
CMASK_CANCEL
ASCII cancel
uint128 constant CMASK_CANCEL = uint128(1) << uint128(uint8(bytes1("\x18")));
CMASK_END_OF_MEDIUM
ASCII end of medium
uint128 constant CMASK_END_OF_MEDIUM = uint128(1) << uint128(uint8(bytes1("\x19")));
CMASK_SUBSTITUTE
ASCII substitute
uint128 constant CMASK_SUBSTITUTE = uint128(1) << uint128(uint8(bytes1("\x1A")));
CMASK_ESCAPE
ASCII escape
uint128 constant CMASK_ESCAPE = uint128(1) << uint128(uint8(bytes1("\x1B")));
CMASK_FILE_SEPARATOR
ASCII file separator
uint128 constant CMASK_FILE_SEPARATOR = uint128(1) << uint128(uint8(bytes1("\x1C")));
CMASK_GROUP_SEPARATOR
ASCII group separator
uint128 constant CMASK_GROUP_SEPARATOR = uint128(1) << uint128(uint8(bytes1("\x1D")));
CMASK_RECORD_SEPARATOR
ASCII record separator
uint128 constant CMASK_RECORD_SEPARATOR = uint128(1) << uint128(uint8(bytes1("\x1E")));
CMASK_UNIT_SEPARATOR
ASCII unit separator
uint128 constant CMASK_UNIT_SEPARATOR = uint128(1) << uint128(uint8(bytes1("\x1F")));
CMASK_SPACE
ASCII space
uint128 constant CMASK_SPACE = uint128(1) << uint128(uint8(bytes1(" ")));
CMASK_EXCLAMATION_MARK
ASCII !
uint128 constant CMASK_EXCLAMATION_MARK = uint128(1) << uint128(uint8(bytes1("!")));
CMASK_QUOTATION_MARK
ASCII "
uint128 constant CMASK_QUOTATION_MARK = uint128(1) << uint128(uint8(bytes1("\"")));
CMASK_NUMBER_SIGN
ASCII #
uint128 constant CMASK_NUMBER_SIGN = uint128(1) << uint128(uint8(bytes1("#")));
CMASK_DOLLAR_SIGN
ASCII $
uint128 constant CMASK_DOLLAR_SIGN = uint128(1) << uint128(uint8(bytes1("$")));
CMASK_PERCENT_SIGN
ASCII %
uint128 constant CMASK_PERCENT_SIGN = uint128(1) << uint128(uint8(bytes1("%")));
CMASK_AMPERSAND
ASCII &
uint128 constant CMASK_AMPERSAND = uint128(1) << uint128(uint8(bytes1("&")));
CMASK_APOSTROPHE
ASCII '
uint128 constant CMASK_APOSTROPHE = uint128(1) << uint128(uint8(bytes1("'")));
CMASK_LEFT_PAREN
ASCII (
uint128 constant CMASK_LEFT_PAREN = uint128(1) << uint128(uint8(bytes1("(")));
CMASK_RIGHT_PAREN
ASCII )
uint128 constant CMASK_RIGHT_PAREN = uint128(1) << uint128(uint8(bytes1(")")));
CMASK_ASTERISK
*ASCII **
uint128 constant CMASK_ASTERISK = uint128(1) << uint128(uint8(bytes1("*")));
CMASK_PLUS_SIGN
ASCII +
uint128 constant CMASK_PLUS_SIGN = uint128(1) << uint128(uint8(bytes1("+")));
CMASK_COMMA
ASCII ,
uint128 constant CMASK_COMMA = uint128(1) << uint128(uint8(bytes1(",")));
CMASK_DASH
ASCII -
uint128 constant CMASK_DASH = uint128(1) << uint128(uint8(bytes1("-")));
CMASK_FULL_STOP
ASCII .
uint128 constant CMASK_FULL_STOP = uint128(1) << uint128(uint8(bytes1(".")));
CMASK_SLASH
ASCII /
uint128 constant CMASK_SLASH = uint128(1) << uint128(uint8(bytes1("/")));
CMASK_ZERO
ASCII 0
uint128 constant CMASK_ZERO = uint128(1) << uint128(uint8(bytes1("0")));
CMASK_ONE
ASCII 1
uint128 constant CMASK_ONE = uint128(1) << uint128(uint8(bytes1("1")));
CMASK_TWO
ASCII 2
uint128 constant CMASK_TWO = uint128(1) << uint128(uint8(bytes1("2")));
CMASK_THREE
ASCII 3
uint128 constant CMASK_THREE = uint128(1) << uint128(uint8(bytes1("3")));
CMASK_FOUR
ASCII 4
uint128 constant CMASK_FOUR = uint128(1) << uint128(uint8(bytes1("4")));
CMASK_FIVE
ASCII 5
uint128 constant CMASK_FIVE = uint128(1) << uint128(uint8(bytes1("5")));
CMASK_SIX
ASCII 6
uint128 constant CMASK_SIX = uint128(1) << uint128(uint8(bytes1("6")));
CMASK_SEVEN
ASCII 7
uint128 constant CMASK_SEVEN = uint128(1) << uint128(uint8(bytes1("7")));
CMASK_EIGHT
ASCII 8
uint128 constant CMASK_EIGHT = uint128(1) << uint128(uint8(bytes1("8")));
CMASK_NINE
ASCII 9
uint128 constant CMASK_NINE = uint128(1) << uint128(uint8(bytes1("9")));
CMASK_COLON
ASCII :
uint128 constant CMASK_COLON = uint128(1) << uint128(uint8(bytes1(":")));
CMASK_SEMICOLON
ASCII ;
uint128 constant CMASK_SEMICOLON = uint128(1) << uint128(uint8(bytes1(";")));
CMASK_LESS_THAN_SIGN
ASCII <
uint128 constant CMASK_LESS_THAN_SIGN = uint128(1) << uint128(uint8(bytes1("<")));
CMASK_EQUALS_SIGN
ASCII =
uint128 constant CMASK_EQUALS_SIGN = uint128(1) << uint128(uint8(bytes1("=")));
CMASK_GREATER_THAN_SIGN
ASCII >
uint128 constant CMASK_GREATER_THAN_SIGN = uint128(1) << uint128(uint8(bytes1(">")));
CMASK_QUESTION_MARK
ASCII ?
uint128 constant CMASK_QUESTION_MARK = uint128(1) << uint128(uint8(bytes1("?")));
CMASK_AT_SIGN
ASCII @
uint128 constant CMASK_AT_SIGN = uint128(1) << uint128(uint8(bytes1("@")));
CMASK_UPPER_A
ASCII A
uint128 constant CMASK_UPPER_A = uint128(1) << uint128(uint8(bytes1("A")));
CMASK_UPPER_B
ASCII B
uint128 constant CMASK_UPPER_B = uint128(1) << uint128(uint8(bytes1("B")));
CMASK_UPPER_C
ASCII C
uint128 constant CMASK_UPPER_C = uint128(1) << uint128(uint8(bytes1("C")));
CMASK_UPPER_D
ASCII D
uint128 constant CMASK_UPPER_D = uint128(1) << uint128(uint8(bytes1("D")));
CMASK_UPPER_E
ASCII E
uint128 constant CMASK_UPPER_E = uint128(1) << uint128(uint8(bytes1("E")));
CMASK_UPPER_F
ASCII F
uint128 constant CMASK_UPPER_F = uint128(1) << uint128(uint8(bytes1("F")));
CMASK_UPPER_G
ASCII G
uint128 constant CMASK_UPPER_G = uint128(1) << uint128(uint8(bytes1("G")));
CMASK_UPPER_H
ASCII H
uint128 constant CMASK_UPPER_H = uint128(1) << uint128(uint8(bytes1("H")));
CMASK_UPPER_I
ASCII I
uint128 constant CMASK_UPPER_I = uint128(1) << uint128(uint8(bytes1("I")));
CMASK_UPPER_J
ASCII J
uint128 constant CMASK_UPPER_J = uint128(1) << uint128(uint8(bytes1("J")));
CMASK_UPPER_K
ASCII K
uint128 constant CMASK_UPPER_K = uint128(1) << uint128(uint8(bytes1("K")));
CMASK_UPPER_L
ASCII L
uint128 constant CMASK_UPPER_L = uint128(1) << uint128(uint8(bytes1("L")));
CMASK_UPPER_M
ASCII M
uint128 constant CMASK_UPPER_M = uint128(1) << uint128(uint8(bytes1("M")));
CMASK_UPPER_N
ASCII N
uint128 constant CMASK_UPPER_N = uint128(1) << uint128(uint8(bytes1("N")));
CMASK_UPPER_O
ASCII O
uint128 constant CMASK_UPPER_O = uint128(1) << uint128(uint8(bytes1("O")));
CMASK_UPPER_P
ASCII P
uint128 constant CMASK_UPPER_P = uint128(1) << uint128(uint8(bytes1("P")));
CMASK_UPPER_Q
ASCII Q
uint128 constant CMASK_UPPER_Q = uint128(1) << uint128(uint8(bytes1("Q")));
CMASK_UPPER_R
ASCII R
uint128 constant CMASK_UPPER_R = uint128(1) << uint128(uint8(bytes1("R")));
CMASK_UPPER_S
ASCII S
uint128 constant CMASK_UPPER_S = uint128(1) << uint128(uint8(bytes1("S")));
CMASK_UPPER_T
ASCII T
uint128 constant CMASK_UPPER_T = uint128(1) << uint128(uint8(bytes1("T")));
CMASK_UPPER_U
ASCII U
uint128 constant CMASK_UPPER_U = uint128(1) << uint128(uint8(bytes1("U")));
CMASK_UPPER_V
ASCII V
uint128 constant CMASK_UPPER_V = uint128(1) << uint128(uint8(bytes1("V")));
CMASK_UPPER_W
ASCII W
uint128 constant CMASK_UPPER_W = uint128(1) << uint128(uint8(bytes1("W")));
CMASK_UPPER_X
ASCII X
uint128 constant CMASK_UPPER_X = uint128(1) << uint128(uint8(bytes1("X")));
CMASK_UPPER_Y
ASCII Y
uint128 constant CMASK_UPPER_Y = uint128(1) << uint128(uint8(bytes1("Y")));
CMASK_UPPER_Z
ASCII Z
uint128 constant CMASK_UPPER_Z = uint128(1) << uint128(uint8(bytes1("Z")));
CMASK_LEFT_SQUARE_BRACKET
ASCII [
uint128 constant CMASK_LEFT_SQUARE_BRACKET = uint128(1) << uint128(uint8(bytes1("[")));
CMASK_BACKSLASH
*ASCII *
uint128 constant CMASK_BACKSLASH = uint128(1) << uint128(uint8(bytes1("\\")));
CMASK_RIGHT_SQUARE_BRACKET
ASCII ]
uint128 constant CMASK_RIGHT_SQUARE_BRACKET = uint128(1) << uint128(uint8(bytes1("]")));
CMASK_CIRCUMFLEX_ACCENT
ASCII ^
uint128 constant CMASK_CIRCUMFLEX_ACCENT = uint128(1) << uint128(uint8(bytes1("^")));
CMASK_UNDERSCORE
ASCII _
uint128 constant CMASK_UNDERSCORE = uint128(1) << uint128(uint8(bytes1("_")));
CMASK_GRAVE_ACCENT
ASCII `
uint128 constant CMASK_GRAVE_ACCENT = uint128(1) << uint128(uint8(bytes1("`")));
CMASK_LOWER_A
ASCII a
uint128 constant CMASK_LOWER_A = uint128(1) << uint128(uint8(bytes1("a")));
CMASK_LOWER_B
ASCII b
uint128 constant CMASK_LOWER_B = uint128(1) << uint128(uint8(bytes1("b")));
CMASK_LOWER_C
ASCII c
uint128 constant CMASK_LOWER_C = uint128(1) << uint128(uint8(bytes1("c")));
CMASK_LOWER_D
ASCII d
uint128 constant CMASK_LOWER_D = uint128(1) << uint128(uint8(bytes1("d")));
CMASK_LOWER_E
ASCII e
uint128 constant CMASK_LOWER_E = uint128(1) << uint128(uint8(bytes1("e")));
CMASK_LOWER_F
ASCII f
uint128 constant CMASK_LOWER_F = uint128(1) << uint128(uint8(bytes1("f")));
CMASK_LOWER_G
ASCII g
uint128 constant CMASK_LOWER_G = uint128(1) << uint128(uint8(bytes1("g")));
CMASK_LOWER_H
ASCII h
uint128 constant CMASK_LOWER_H = uint128(1) << uint128(uint8(bytes1("h")));
CMASK_LOWER_I
ASCII i
uint128 constant CMASK_LOWER_I = uint128(1) << uint128(uint8(bytes1("i")));
CMASK_LOWER_J
ASCII j
uint128 constant CMASK_LOWER_J = uint128(1) << uint128(uint8(bytes1("j")));
CMASK_LOWER_K
ASCII k
uint128 constant CMASK_LOWER_K = uint128(1) << uint128(uint8(bytes1("k")));
CMASK_LOWER_L
ASCII l
uint128 constant CMASK_LOWER_L = uint128(1) << uint128(uint8(bytes1("l")));
CMASK_LOWER_M
ASCII m
uint128 constant CMASK_LOWER_M = uint128(1) << uint128(uint8(bytes1("m")));
CMASK_LOWER_N
ASCII n
uint128 constant CMASK_LOWER_N = uint128(1) << uint128(uint8(bytes1("n")));
CMASK_LOWER_O
ASCII o
uint128 constant CMASK_LOWER_O = uint128(1) << uint128(uint8(bytes1("o")));
CMASK_LOWER_P
ASCII p
uint128 constant CMASK_LOWER_P = uint128(1) << uint128(uint8(bytes1("p")));
CMASK_LOWER_Q
ASCII q
uint128 constant CMASK_LOWER_Q = uint128(1) << uint128(uint8(bytes1("q")));
CMASK_LOWER_R
ASCII r
uint128 constant CMASK_LOWER_R = uint128(1) << uint128(uint8(bytes1("r")));
CMASK_LOWER_S
ASCII s
uint128 constant CMASK_LOWER_S = uint128(1) << uint128(uint8(bytes1("s")));
CMASK_LOWER_T
ASCII t
uint128 constant CMASK_LOWER_T = uint128(1) << uint128(uint8(bytes1("t")));
CMASK_LOWER_U
ASCII u
uint128 constant CMASK_LOWER_U = uint128(1) << uint128(uint8(bytes1("u")));
CMASK_LOWER_V
ASCII v
uint128 constant CMASK_LOWER_V = uint128(1) << uint128(uint8(bytes1("v")));
CMASK_LOWER_W
ASCII w
uint128 constant CMASK_LOWER_W = uint128(1) << uint128(uint8(bytes1("w")));
CMASK_LOWER_X
ASCII x
uint128 constant CMASK_LOWER_X = uint128(1) << uint128(uint8(bytes1("x")));
CMASK_LOWER_Y
ASCII y
uint128 constant CMASK_LOWER_Y = uint128(1) << uint128(uint8(bytes1("y")));
CMASK_LOWER_Z
ASCII z
uint128 constant CMASK_LOWER_Z = uint128(1) << uint128(uint8(bytes1("z")));
CMASK_LEFT_CURLY_BRACKET
ASCII {
uint128 constant CMASK_LEFT_CURLY_BRACKET = uint128(1) << uint128(uint8(bytes1("{")));
CMASK_VERTICAL_BAR
ASCII |
uint128 constant CMASK_VERTICAL_BAR = uint128(1) << uint128(uint8(bytes1("|")));
CMASK_RIGHT_CURLY_BRACKET
ASCII }
uint128 constant CMASK_RIGHT_CURLY_BRACKET = uint128(1) << uint128(uint8(bytes1("}")));
CMASK_TILDE
ASCII ~
uint128 constant CMASK_TILDE = uint128(1) << uint128(uint8(bytes1("~")));
CMASK_DELETE
ASCII delete
uint128 constant CMASK_DELETE = uint128(1) << uint128(uint8(bytes1("\x7F")));
CMASK_PRINTABLE
ASCII printable characters is everything 0x20 and above, except 0x7F
uint128 constant CMASK_PRINTABLE = ~(
CMASK_NULL | CMASK_START_OF_HEADING | CMASK_START_OF_TEXT | CMASK_END_OF_TEXT | CMASK_END_OF_TRANSMISSION
| CMASK_ENQUIRY | CMASK_ACKNOWLEDGE | CMASK_BELL | CMASK_BACKSPACE | CMASK_HORIZONTAL_TAB | CMASK_LINE_FEED
| CMASK_VERTICAL_TAB | CMASK_FORM_FEED | CMASK_CARRIAGE_RETURN | CMASK_SHIFT_OUT | CMASK_SHIFT_IN
| CMASK_DATA_LINK_ESCAPE | CMASK_DEVICE_CONTROL_1 | CMASK_DEVICE_CONTROL_2 | CMASK_DEVICE_CONTROL_3
| CMASK_DEVICE_CONTROL_4 | CMASK_NEGATIVE_ACKNOWLEDGE | CMASK_SYNCHRONOUS_IDLE | CMASK_END_OF_TRANSMISSION_BLOCK
| CMASK_CANCEL | CMASK_END_OF_MEDIUM | CMASK_SUBSTITUTE | CMASK_ESCAPE | CMASK_FILE_SEPARATOR
| CMASK_GROUP_SEPARATOR | CMASK_RECORD_SEPARATOR | CMASK_UNIT_SEPARATOR | CMASK_DELETE
);
CMASK_NUMERIC_0_9
numeric 0-9
uint128 constant CMASK_NUMERIC_0_9 = CMASK_ZERO | CMASK_ONE | CMASK_TWO | CMASK_THREE | CMASK_FOUR | CMASK_FIVE
| CMASK_SIX | CMASK_SEVEN | CMASK_EIGHT | CMASK_NINE;
CMASK_E_NOTATION
e notation eE
uint128 constant CMASK_E_NOTATION = CMASK_LOWER_E | CMASK_UPPER_E;
CMASK_LOWER_ALPHA_A_Z
lower alpha a-z
uint128 constant CMASK_LOWER_ALPHA_A_Z = CMASK_LOWER_A | CMASK_LOWER_B | CMASK_LOWER_C | CMASK_LOWER_D | CMASK_LOWER_E
| CMASK_LOWER_F | CMASK_LOWER_G | CMASK_LOWER_H | CMASK_LOWER_I | CMASK_LOWER_J | CMASK_LOWER_K | CMASK_LOWER_L
| CMASK_LOWER_M | CMASK_LOWER_N | CMASK_LOWER_O | CMASK_LOWER_P | CMASK_LOWER_Q | CMASK_LOWER_R | CMASK_LOWER_S
| CMASK_LOWER_T | CMASK_LOWER_U | CMASK_LOWER_V | CMASK_LOWER_W | CMASK_LOWER_X | CMASK_LOWER_Y | CMASK_LOWER_Z;
CMASK_UPPER_ALPHA_A_Z
upper alpha A-Z
uint128 constant CMASK_UPPER_ALPHA_A_Z = CMASK_UPPER_A | CMASK_UPPER_B | CMASK_UPPER_C | CMASK_UPPER_D | CMASK_UPPER_E
| CMASK_UPPER_F | CMASK_UPPER_G | CMASK_UPPER_H | CMASK_UPPER_I | CMASK_UPPER_J | CMASK_UPPER_K | CMASK_UPPER_L
| CMASK_UPPER_M | CMASK_UPPER_N | CMASK_UPPER_O | CMASK_UPPER_P | CMASK_UPPER_Q | CMASK_UPPER_R | CMASK_UPPER_S
| CMASK_UPPER_T | CMASK_UPPER_U | CMASK_UPPER_V | CMASK_UPPER_W | CMASK_UPPER_X | CMASK_UPPER_Y | CMASK_UPPER_Z;
CMASK_LOWER_ALPHA_A_F
lower alpha a-f (hex)
uint128 constant CMASK_LOWER_ALPHA_A_F =
CMASK_LOWER_A | CMASK_LOWER_B | CMASK_LOWER_C | CMASK_LOWER_D | CMASK_LOWER_E | CMASK_LOWER_F;
CMASK_UPPER_ALPHA_A_F
upper alpha A-F (hex)
uint128 constant CMASK_UPPER_ALPHA_A_F =
CMASK_UPPER_A | CMASK_UPPER_B | CMASK_UPPER_C | CMASK_UPPER_D | CMASK_UPPER_E | CMASK_UPPER_F;
CMASK_HEX
hex 0-9 a-f A-F
uint128 constant CMASK_HEX = CMASK_NUMERIC_0_9 | CMASK_LOWER_ALPHA_A_F | CMASK_UPPER_ALPHA_A_F;
CMASK_EOL
Rainlang end of line is ,
uint128 constant CMASK_EOL = CMASK_COMMA;
CMASK_LHS_RHS_DELIMITER
Rainlang LHS/RHS delimiter is :
uint128 constant CMASK_LHS_RHS_DELIMITER = CMASK_COLON;
CMASK_EOS
Rainlang end of source is ;
uint128 constant CMASK_EOS = CMASK_SEMICOLON;
CMASK_LHS_STACK_HEAD
Rainlang stack head is lower alpha and underscore a-z _
uint128 constant CMASK_LHS_STACK_HEAD = CMASK_LOWER_ALPHA_A_Z | CMASK_UNDERSCORE;
CMASK_IDENTIFIER_HEAD
Rainlang identifier head is lower alpha a-z
uint128 constant CMASK_IDENTIFIER_HEAD = CMASK_LOWER_ALPHA_A_Z;
CMASK_RHS_WORD_HEAD
uint128 constant CMASK_RHS_WORD_HEAD = CMASK_IDENTIFIER_HEAD;
CMASK_IDENTIFIER_TAIL
Rainlang stack/identifier tail is lower alphanumeric kebab a-z 0-9 -
uint128 constant CMASK_IDENTIFIER_TAIL = CMASK_IDENTIFIER_HEAD | CMASK_NUMERIC_0_9 | CMASK_DASH;
CMASK_LHS_STACK_TAIL
uint128 constant CMASK_LHS_STACK_TAIL = CMASK_IDENTIFIER_TAIL;
CMASK_RHS_WORD_TAIL
uint128 constant CMASK_RHS_WORD_TAIL = CMASK_IDENTIFIER_TAIL;
CMASK_OPERAND_START
Rainlang operand start is <
uint128 constant CMASK_OPERAND_START = CMASK_LESS_THAN_SIGN;
CMASK_OPERAND_END
Rainlang operand end is >
uint128 constant CMASK_OPERAND_END = CMASK_GREATER_THAN_SIGN;
CMASK_NOT_IDENTIFIER_TAIL
NOT lower alphanumeric kebab
uint128 constant CMASK_NOT_IDENTIFIER_TAIL = ~CMASK_IDENTIFIER_TAIL;
CMASK_WHITESPACE
Rainlang whitespace is \n \r \t space
uint128 constant CMASK_WHITESPACE = CMASK_LINE_FEED | CMASK_CARRIAGE_RETURN | CMASK_HORIZONTAL_TAB | CMASK_SPACE;
CMASK_LHS_STACK_DELIMITER
Rainlang stack item delimiter is whitespace
uint128 constant CMASK_LHS_STACK_DELIMITER = CMASK_WHITESPACE;
CMASK_NUMERIC_LITERAL_HEAD
Rainlang supports numeric literals as anything starting with 0-9
uint128 constant CMASK_NUMERIC_LITERAL_HEAD = CMASK_NUMERIC_0_9;
CMASK_STRING_LITERAL_HEAD
Rainlang supports string literals as anything starting with "
uint128 constant CMASK_STRING_LITERAL_HEAD = CMASK_QUOTATION_MARK;
CMASK_STRING_LITERAL_END
Rainlang string end is "
uint128 constant CMASK_STRING_LITERAL_END = CMASK_QUOTATION_MARK;
CMASK_STRING_LITERAL_TAIL
Rainlang string tail is any printable ASCII except " which ends it.
uint128 constant CMASK_STRING_LITERAL_TAIL = ~CMASK_STRING_LITERAL_END & CMASK_PRINTABLE;
CMASK_LITERAL_HEAD
Rainlang literal head
uint128 constant CMASK_LITERAL_HEAD = CMASK_NUMERIC_LITERAL_HEAD | CMASK_STRING_LITERAL_HEAD;
CMASK_COMMENT_HEAD
Rainlang comment head is /
uint128 constant CMASK_COMMENT_HEAD = CMASK_SLASH;
CMASK_INTERSTITIAL_HEAD
Rainlang interstitial head could be some whitespace or a comment head.
uint128 constant CMASK_INTERSTITIAL_HEAD = CMASK_WHITESPACE | CMASK_COMMENT_HEAD;
COMMENT_START_SEQUENCE
Rainlang comment starting sequence is /*
uint256 constant COMMENT_START_SEQUENCE = uint256(uint16(bytes2("/*")));
COMMENT_END_SEQUENCE
*Rainlang comment ending sequence is /
uint256 constant COMMENT_END_SEQUENCE = uint256(uint16(bytes2("*/")));
CMASK_COMMENT_END_SEQUENCE_END
*Rainlang comment end sequence end byte is / /
uint256 constant CMASK_COMMENT_END_SEQUENCE_END = COMMENT_END_SEQUENCE & 0xFF;
CMASK_LITERAL_HEX_DISPATCH
Rainlang literal hexadecimal dispatch is 0x We compare the head and dispatch together to avoid a second comparison. This is safe because the head is prefiltered to be 0-9 due to the numeric literal head, therefore the only possible match is 0x (not x0).
uint128 constant CMASK_LITERAL_HEX_DISPATCH = CMASK_ZERO | CMASK_LOWER_X;
CMASK_LITERAL_HEX_DISPATCH_START
We may want to match the exact start of a hex literal.
uint256 constant CMASK_LITERAL_HEX_DISPATCH_START = uint256(uint16(bytes2("0x")));