return c == '1' || c == '0';
}
+lrts_bool l_lsl_isoct(char c) {
+ return c >= '0' && c <= '7';
+}
+
/* peeks current token */
#define l_lsl_lex_peek(v, code) \
(code)[v->lex_pos]
if (l_lsl_isnum(c)) {
/* octal */
+ while (l_lsl_isoct(c)) {
+ l_lsl_lex_write_token(tokbuf, token_len, c);
+ c = l_lsl_lex_advance(v, code);
+ }
c = l_lsl_lex_advance(v, code);
l_lsl_lex_term_token(tokbuf, token_len);
+ value->data.int_val = u_strtol(tokbuf, LRTS_NULL, 8);
} else if (c == 'x') {
/* hex */
c = l_lsl_lex_advance(v, code);
} else if (c == 'b') {
/* bin */
c = l_lsl_lex_advance(v, code);
+ while (l_lsl_isbin(c)) {
+ l_lsl_lex_write_token(tokbuf, token_len, c);
+ c = l_lsl_lex_advance(v, code);
+ }
+ c = l_lsl_lex_advance(v, code);
l_lsl_lex_term_token(tokbuf, token_len);
+ value->data.int_val = u_strtol(tokbuf, LRTS_NULL, 2);
} else {
l_lsl_err(v, L_LSL_ERR_INVALID_NUMBER_BASE,
"unknown number base: 0%c\n", c);
v.data.int_val = 0xabc123;
T_LSL_ASSERT(v, L_LSL_ERR_OK, "./src/tests/lsl/hexliteral.lsl",
t_lsl_vlue_assert_int);
+
+ /* simple bin value */
+ v.type = L_LSL_TYPE_INT;
+ v.data.int_val = 0x5;
+ T_LSL_ASSERT(v, L_LSL_ERR_OK, "./src/tests/lsl/binliteral.lsl",
+ t_lsl_vlue_assert_int);
+
+ /* simple oct value */
+ v.type = L_LSL_TYPE_INT;
+ v.data.int_val = 0123;
+ T_LSL_ASSERT(v, L_LSL_ERR_OK, "./src/tests/lsl/octliteral.lsl",
+ t_lsl_vlue_assert_int);
return 0;
}