MCPcopy Create free account
hub / github.com/Smorodov/Multitarget-tracker / GML_parser

Function GML_parser

src/Tracker/graph/GTL/src/gml_parser.cpp:18–202  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

16#include <string.h>
17
18__GTL_BEGIN_NAMESPACE
19
20struct GML_pair* GML_parser (FILE* source, struct GML_stat* stat, int open) {
21
22 struct GML_token token;
23 struct GML_pair* pair;
24 struct GML_pair* list;
25 struct GML_pair* tmp = NULL;
26 struct GML_list_elem* tmp_elem;
27
28 assert (stat);
29
30 pair = (struct GML_pair*) malloc (sizeof (struct GML_pair));
31 pair->next = NULL;
32 list = pair;
33
34 for (;;) {
35 token = GML_scanner (source);
36
37 if (token.kind == GML_END) {
38 if (open) {
39 stat->err.err_num = GML_OPEN_BRACKET;
40 stat->err.line = GML_line;
41 stat->err.column = GML_column;
42 free (pair);
43
44 if (tmp == NULL) {
45 return NULL;
46 } else {
47 tmp->next = NULL;
48 return list;
49 }
50 }
51
52 break;
53
54 } else if (token.kind == GML_R_BRACKET) {
55 if (!open) {
56 stat->err.err_num = GML_TOO_MANY_BRACKETS;
57 stat->err.line = GML_line;
58 stat->err.column = GML_column;
59 free (pair);
60
61 if (tmp == NULL) {
62 return NULL;
63 } else {
64 tmp->next = NULL;
65 return list;
66 }
67 }
68
69 break;
70
71 } else if (token.kind == GML_ERROR) {
72 stat->err.err_num = token.value.err.err_num;
73 stat->err.line = token.value.err.line;
74 stat->err.column = token.value.err.column;
75 free (pair);

Callers 1

loadMethod · 0.85

Calls 1

GML_scannerFunction · 0.85

Tested by

no test coverage detected