Make AM registers into an array
This commit is contained in:
@@ -23,10 +23,10 @@ static void test_integer_123(void)
|
||||
const parse_state_t state = parse_proc(&ctx, &token);
|
||||
TEST_ASSERT_EQUAL(PARSE_STATE_DONE, state);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr);
|
||||
TEST_ASSERT_TRUE(am.expr->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_INTEGER, am.expr->atom.type);
|
||||
TEST_ASSERT_EQUAL(123, am.expr->atom.integer);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_INTEGER, am.regs[EXPR]->atom.type);
|
||||
TEST_ASSERT_EQUAL(123, am.regs[EXPR]->atom.integer);
|
||||
}
|
||||
|
||||
static void test_integer_321(void)
|
||||
@@ -36,10 +36,10 @@ static void test_integer_321(void)
|
||||
const parse_state_t state = parse_proc(&ctx, &token);
|
||||
TEST_ASSERT_EQUAL(PARSE_STATE_DONE, state);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr);
|
||||
TEST_ASSERT_TRUE(am.expr->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_INTEGER, am.expr->atom.type);
|
||||
TEST_ASSERT_EQUAL(321, am.expr->atom.integer);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_INTEGER, am.regs[EXPR]->atom.type);
|
||||
TEST_ASSERT_EQUAL(321, am.regs[EXPR]->atom.integer);
|
||||
}
|
||||
|
||||
static void test_symbol_foo(void)
|
||||
@@ -52,11 +52,11 @@ static void test_symbol_foo(void)
|
||||
const parse_state_t state = parse_proc(&ctx, &token);
|
||||
TEST_ASSERT_EQUAL(PARSE_STATE_DONE, state);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr);
|
||||
TEST_ASSERT_TRUE(am.expr->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_SYMBOL, am.expr->atom.type);
|
||||
TEST_ASSERT_EQUAL(3, am.expr->atom.symbol.len);
|
||||
TEST_ASSERT_EQUAL_MEMORY("foo", am.expr->atom.symbol.buf, 3);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_SYMBOL, am.regs[EXPR]->atom.type);
|
||||
TEST_ASSERT_EQUAL(3, am.regs[EXPR]->atom.symbol.len);
|
||||
TEST_ASSERT_EQUAL_MEMORY("foo", am.regs[EXPR]->atom.symbol.buf, 3);
|
||||
}
|
||||
|
||||
static void test_symbol_quux(void)
|
||||
@@ -69,11 +69,11 @@ static void test_symbol_quux(void)
|
||||
const parse_state_t state = parse_proc(&ctx, &token);
|
||||
TEST_ASSERT_EQUAL(PARSE_STATE_DONE, state);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr);
|
||||
TEST_ASSERT_TRUE(am.expr->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_SYMBOL, am.expr->atom.type);
|
||||
TEST_ASSERT_EQUAL(4, am.expr->atom.symbol.len);
|
||||
TEST_ASSERT_EQUAL_MEMORY("quux", am.expr->atom.symbol.buf, 4);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_SYMBOL, am.regs[EXPR]->atom.type);
|
||||
TEST_ASSERT_EQUAL(4, am.regs[EXPR]->atom.symbol.len);
|
||||
TEST_ASSERT_EQUAL_MEMORY("quux", am.regs[EXPR]->atom.symbol.buf, 4);
|
||||
}
|
||||
|
||||
static void test_open_paren_close_paren(void)
|
||||
@@ -90,9 +90,9 @@ static void test_open_paren_close_paren(void)
|
||||
state = parse_proc(&ctx, tokens + 1);
|
||||
TEST_ASSERT_EQUAL(PARSE_STATE_DONE, state);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr);
|
||||
TEST_ASSERT_TRUE(am.expr->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_EMPTY_LIST, am.expr->atom.type);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_EMPTY_LIST, am.regs[EXPR]->atom.type);
|
||||
}
|
||||
|
||||
static void test_open_paren_foo_42_close_paren(void)
|
||||
@@ -116,28 +116,29 @@ static void test_open_paren_foo_42_close_paren(void)
|
||||
state = parse_proc(&ctx, tokens + NELEMS(tokens) - 1);
|
||||
TEST_ASSERT_EQUAL(PARSE_STATE_DONE, state);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr);
|
||||
TEST_ASSERT_FALSE(am.expr->is_atom);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]);
|
||||
TEST_ASSERT_FALSE(am.regs[EXPR]->is_atom);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr->pair.car);
|
||||
TEST_ASSERT_TRUE(am.expr->pair.car->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_SYMBOL, am.expr->pair.car->atom.type);
|
||||
TEST_ASSERT_EQUAL(3, am.expr->pair.car->atom.symbol.len);
|
||||
TEST_ASSERT_EQUAL_MEMORY("foo", am.expr->pair.car->atom.symbol.buf, 3);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]->pair.car);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->pair.car->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_SYMBOL, am.regs[EXPR]->pair.car->atom.type);
|
||||
TEST_ASSERT_EQUAL(3, am.regs[EXPR]->pair.car->atom.symbol.len);
|
||||
TEST_ASSERT_EQUAL_MEMORY(
|
||||
"foo", am.regs[EXPR]->pair.car->atom.symbol.buf, 3);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr->pair.cdr);
|
||||
TEST_ASSERT_FALSE(am.expr->pair.cdr->is_atom);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]->pair.cdr);
|
||||
TEST_ASSERT_FALSE(am.regs[EXPR]->pair.cdr->is_atom);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr->pair.cdr->pair.car);
|
||||
TEST_ASSERT_TRUE(am.expr->pair.cdr->pair.car->is_atom);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]->pair.cdr->pair.car);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->pair.cdr->pair.car->is_atom);
|
||||
TEST_ASSERT_EQUAL(
|
||||
ATOM_TYPE_INTEGER, am.expr->pair.cdr->pair.car->atom.type);
|
||||
TEST_ASSERT_EQUAL(42, am.expr->pair.cdr->pair.car->atom.integer);
|
||||
ATOM_TYPE_INTEGER, am.regs[EXPR]->pair.cdr->pair.car->atom.type);
|
||||
TEST_ASSERT_EQUAL(42, am.regs[EXPR]->pair.cdr->pair.car->atom.integer);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr->pair.cdr->pair.cdr);
|
||||
TEST_ASSERT_TRUE(am.expr->pair.cdr->pair.cdr->is_atom);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]->pair.cdr->pair.cdr);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->pair.cdr->pair.cdr->is_atom);
|
||||
TEST_ASSERT_EQUAL(
|
||||
ATOM_TYPE_EMPTY_LIST, am.expr->pair.cdr->pair.cdr->atom.type);
|
||||
ATOM_TYPE_EMPTY_LIST, am.regs[EXPR]->pair.cdr->pair.cdr->atom.type);
|
||||
}
|
||||
|
||||
static void test_open_paren_1_open_paren_2_close_paren_3_close_paren(void)
|
||||
@@ -161,48 +162,50 @@ static void test_open_paren_1_open_paren_2_close_paren_3_close_paren(void)
|
||||
state = parse_proc(&ctx, tokens + NELEMS(tokens) - 1);
|
||||
TEST_ASSERT_EQUAL(PARSE_STATE_DONE, state);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr);
|
||||
TEST_ASSERT_FALSE(am.expr->is_atom);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]);
|
||||
TEST_ASSERT_FALSE(am.regs[EXPR]->is_atom);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr->pair.car);
|
||||
TEST_ASSERT_TRUE(am.expr->pair.car->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_INTEGER, am.expr->pair.car->atom.type);
|
||||
TEST_ASSERT_EQUAL(1, am.expr->pair.car->atom.integer);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]->pair.car);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->pair.car->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_INTEGER, am.regs[EXPR]->pair.car->atom.type);
|
||||
TEST_ASSERT_EQUAL(1, am.regs[EXPR]->pair.car->atom.integer);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr->pair.cdr);
|
||||
TEST_ASSERT_FALSE(am.expr->pair.cdr->is_atom);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]->pair.cdr);
|
||||
TEST_ASSERT_FALSE(am.regs[EXPR]->pair.cdr->is_atom);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr->pair.cdr->pair.car);
|
||||
TEST_ASSERT_FALSE(am.expr->pair.cdr->pair.car->is_atom);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]->pair.cdr->pair.car);
|
||||
TEST_ASSERT_FALSE(am.regs[EXPR]->pair.cdr->pair.car->is_atom);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr->pair.cdr->pair.car->pair.car);
|
||||
TEST_ASSERT_TRUE(am.expr->pair.cdr->pair.car->pair.car->is_atom);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]->pair.cdr->pair.car->pair.car);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->pair.cdr->pair.car->pair.car->is_atom);
|
||||
TEST_ASSERT_EQUAL(
|
||||
ATOM_TYPE_INTEGER, am.expr->pair.cdr->pair.car->pair.car->atom.type);
|
||||
ATOM_TYPE_INTEGER,
|
||||
am.regs[EXPR]->pair.cdr->pair.car->pair.car->atom.type);
|
||||
TEST_ASSERT_EQUAL(
|
||||
2, am.expr->pair.cdr->pair.car->pair.car->atom.integer);
|
||||
2, am.regs[EXPR]->pair.cdr->pair.car->pair.car->atom.integer);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr->pair.cdr->pair.car->pair.cdr);
|
||||
TEST_ASSERT_TRUE(am.expr->pair.cdr->pair.car->pair.cdr->is_atom);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]->pair.cdr->pair.car->pair.cdr);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->pair.cdr->pair.car->pair.cdr->is_atom);
|
||||
TEST_ASSERT_EQUAL(
|
||||
ATOM_TYPE_EMPTY_LIST,
|
||||
am.expr->pair.cdr->pair.car->pair.cdr->atom.type);
|
||||
am.regs[EXPR]->pair.cdr->pair.car->pair.cdr->atom.type);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr->pair.cdr->pair.cdr);
|
||||
TEST_ASSERT_FALSE(am.expr->pair.cdr->pair.cdr->is_atom);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]->pair.cdr->pair.cdr);
|
||||
TEST_ASSERT_FALSE(am.regs[EXPR]->pair.cdr->pair.cdr->is_atom);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr->pair.cdr->pair.cdr->pair.car);
|
||||
TEST_ASSERT_TRUE(am.expr->pair.cdr->pair.cdr->pair.car->is_atom);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]->pair.cdr->pair.cdr->pair.car);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->pair.cdr->pair.cdr->pair.car->is_atom);
|
||||
TEST_ASSERT_EQUAL(
|
||||
ATOM_TYPE_INTEGER, am.expr->pair.cdr->pair.cdr->pair.car->atom.type);
|
||||
ATOM_TYPE_INTEGER,
|
||||
am.regs[EXPR]->pair.cdr->pair.cdr->pair.car->atom.type);
|
||||
TEST_ASSERT_EQUAL(
|
||||
3, am.expr->pair.cdr->pair.cdr->pair.car->atom.integer);
|
||||
3, am.regs[EXPR]->pair.cdr->pair.cdr->pair.car->atom.integer);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.expr->pair.cdr->pair.cdr->pair.cdr);
|
||||
TEST_ASSERT_TRUE(am.expr->pair.cdr->pair.cdr->pair.cdr->is_atom);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[EXPR]->pair.cdr->pair.cdr->pair.cdr);
|
||||
TEST_ASSERT_TRUE(am.regs[EXPR]->pair.cdr->pair.cdr->pair.cdr->is_atom);
|
||||
TEST_ASSERT_EQUAL(
|
||||
ATOM_TYPE_EMPTY_LIST,
|
||||
am.expr->pair.cdr->pair.cdr->pair.cdr->atom.type);
|
||||
am.regs[EXPR]->pair.cdr->pair.cdr->pair.cdr->atom.type);
|
||||
}
|
||||
|
||||
static void test_close_paren(void)
|
||||
|
||||
Reference in New Issue
Block a user