Track start and end position of rules in AST nodes - #27
This commit is contained in:
1 parent
f4ae1b8601
commit
e647248e34
5 files changed
+143
-14
No files matched your search
@@ -10,35 +10,75 @@ int main()
|
||||
p_context_init(&context, (uint8_t const *)input, strlen(input));
|
||||
assert(p_parse(&context) == P_SUCCESS);
|
||||
Start * start = p_result(&context);
|
||||
|
||||
assert_eq(0, start->pT1->pToken->position.row);
|
||||
assert_eq(0, start->pT1->pToken->position.col);
|
||||
assert_eq(0, start->pT1->pToken->end_position.row);
|
||||
assert_eq(0, start->pT1->pToken->end_position.col);
|
||||
assert_eq(0, start->pT1->position.row);
|
||||
assert_eq(0, start->pT1->position.col);
|
||||
assert_eq(0, start->pT1->end_position.row);
|
||||
assert_eq(0, start->pT1->end_position.col);
|
||||
|
||||
assert_eq(0, start->pT2->pToken->position.row);
|
||||
assert_eq(1, start->pT2->pToken->position.col);
|
||||
assert_eq(0, start->pT2->pToken->end_position.row);
|
||||
assert_eq(2, start->pT2->pToken->end_position.col);
|
||||
assert_eq(0, start->pT2->position.row);
|
||||
assert_eq(1, start->pT2->position.col);
|
||||
assert_eq(0, start->pT2->end_position.row);
|
||||
assert_eq(2, start->pT2->end_position.col);
|
||||
|
||||
assert_eq(0, start->pT3->pToken->position.row);
|
||||
assert_eq(3, start->pT3->pToken->position.col);
|
||||
assert_eq(0, start->pT3->pToken->end_position.row);
|
||||
assert_eq(5, start->pT3->pToken->end_position.col);
|
||||
assert_eq(0, start->pT3->position.row);
|
||||
assert_eq(3, start->pT3->position.col);
|
||||
assert_eq(0, start->pT3->end_position.row);
|
||||
assert_eq(5, start->pT3->end_position.col);
|
||||
|
||||
assert_eq(0, start->position.row);
|
||||
assert_eq(0, start->position.col);
|
||||
assert_eq(0, start->end_position.row);
|
||||
assert_eq(5, start->end_position.col);
|
||||
|
||||
input = "\n\n bb\nc\ncc\n\n a";
|
||||
p_context_init(&context, (uint8_t const *)input, strlen(input));
|
||||
assert(p_parse(&context) == P_SUCCESS);
|
||||
start = p_result(&context);
|
||||
|
||||
assert_eq(2, start->pT1->pToken->position.row);
|
||||
assert_eq(2, start->pT1->pToken->position.col);
|
||||
assert_eq(2, start->pT1->pToken->end_position.row);
|
||||
assert_eq(3, start->pT1->pToken->end_position.col);
|
||||
assert_eq(2, start->pT1->position.row);
|
||||
assert_eq(2, start->pT1->position.col);
|
||||
assert_eq(2, start->pT1->end_position.row);
|
||||
assert_eq(3, start->pT1->end_position.col);
|
||||
|
||||
assert_eq(3, start->pT2->pToken->position.row);
|
||||
assert_eq(0, start->pT2->pToken->position.col);
|
||||
assert_eq(4, start->pT2->pToken->end_position.row);
|
||||
assert_eq(1, start->pT2->pToken->end_position.col);
|
||||
assert_eq(3, start->pT2->position.row);
|
||||
assert_eq(0, start->pT2->position.col);
|
||||
assert_eq(4, start->pT2->end_position.row);
|
||||
assert_eq(1, start->pT2->end_position.col);
|
||||
|
||||
assert_eq(6, start->pT3->pToken->position.row);
|
||||
assert_eq(5, start->pT3->pToken->position.col);
|
||||
assert_eq(6, start->pT3->pToken->end_position.row);
|
||||
assert_eq(5, start->pT3->pToken->end_position.col);
|
||||
assert_eq(6, start->pT3->position.row);
|
||||
assert_eq(5, start->pT3->position.col);
|
||||
assert_eq(6, start->pT3->end_position.row);
|
||||
assert_eq(5, start->pT3->end_position.col);
|
||||
|
||||
assert_eq(2, start->position.row);
|
||||
assert_eq(2, start->position.col);
|
||||
assert_eq(6, start->end_position.row);
|
||||
assert_eq(5, start->end_position.col);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -14,33 +14,73 @@ unittest
|
||||
p_context_init(&context, input);
|
||||
assert(p_parse(&context) == P_SUCCESS);
|
||||
Start * start = p_result(&context);
|
||||
|
||||
assert_eq(0, start.pT1.pToken.position.row);
|
||||
assert_eq(0, start.pT1.pToken.position.col);
|
||||
assert_eq(0, start.pT1.pToken.end_position.row);
|
||||
assert_eq(0, start.pT1.pToken.end_position.col);
|
||||
assert_eq(0, start.pT1.position.row);
|
||||
assert_eq(0, start.pT1.position.col);
|
||||
assert_eq(0, start.pT1.end_position.row);
|
||||
assert_eq(0, start.pT1.end_position.col);
|
||||
|
||||
assert_eq(0, start.pT2.pToken.position.row);
|
||||
assert_eq(1, start.pT2.pToken.position.col);
|
||||
assert_eq(0, start.pT2.pToken.end_position.row);
|
||||
assert_eq(2, start.pT2.pToken.end_position.col);
|
||||
assert_eq(0, start.pT2.position.row);
|
||||
assert_eq(1, start.pT2.position.col);
|
||||
assert_eq(0, start.pT2.end_position.row);
|
||||
assert_eq(2, start.pT2.end_position.col);
|
||||
|
||||
assert_eq(0, start.pT3.pToken.position.row);
|
||||
assert_eq(3, start.pT3.pToken.position.col);
|
||||
assert_eq(0, start.pT3.pToken.end_position.row);
|
||||
assert_eq(5, start.pT3.pToken.end_position.col);
|
||||
assert_eq(0, start.pT3.position.row);
|
||||
assert_eq(3, start.pT3.position.col);
|
||||
assert_eq(0, start.pT3.end_position.row);
|
||||
assert_eq(5, start.pT3.end_position.col);
|
||||
|
||||
assert_eq(0, start.position.row);
|
||||
assert_eq(0, start.position.col);
|
||||
assert_eq(0, start.end_position.row);
|
||||
assert_eq(5, start.end_position.col);
|
||||
|
||||
input = "\n\n bb\nc\ncc\n\n a";
|
||||
p_context_init(&context, input);
|
||||
assert(p_parse(&context) == P_SUCCESS);
|
||||
start = p_result(&context);
|
||||
|
||||
assert_eq(2, start.pT1.pToken.position.row);
|
||||
assert_eq(2, start.pT1.pToken.position.col);
|
||||
assert_eq(2, start.pT1.pToken.end_position.row);
|
||||
assert_eq(3, start.pT1.pToken.end_position.col);
|
||||
assert_eq(2, start.pT1.position.row);
|
||||
assert_eq(2, start.pT1.position.col);
|
||||
assert_eq(2, start.pT1.end_position.row);
|
||||
assert_eq(3, start.pT1.end_position.col);
|
||||
|
||||
assert_eq(3, start.pT2.pToken.position.row);
|
||||
assert_eq(0, start.pT2.pToken.position.col);
|
||||
assert_eq(4, start.pT2.pToken.end_position.row);
|
||||
assert_eq(1, start.pT2.pToken.end_position.col);
|
||||
assert_eq(3, start.pT2.position.row);
|
||||
assert_eq(0, start.pT2.position.col);
|
||||
assert_eq(4, start.pT2.end_position.row);
|
||||
assert_eq(1, start.pT2.end_position.col);
|
||||
|
||||
assert_eq(6, start.pT3.pToken.position.row);
|
||||
assert_eq(5, start.pT3.pToken.position.col);
|
||||
assert_eq(6, start.pT3.pToken.end_position.row);
|
||||
assert_eq(5, start.pT3.pToken.end_position.col);
|
||||
assert_eq(6, start.pT3.position.row);
|
||||
assert_eq(5, start.pT3.position.col);
|
||||
assert_eq(6, start.pT3.end_position.row);
|
||||
assert_eq(5, start.pT3.end_position.col);
|
||||
|
||||
assert_eq(2, start.position.row);
|
||||
assert_eq(2, start.position.col);
|
||||
assert_eq(6, start.end_position.row);
|
||||
assert_eq(5, start.end_position.col);
|
||||
}
|
||||
Reference in new issue
Block a user