Skip to content

Commit 1387841

Browse files
fix: dot (.) in MR var name (#330)
1 parent a000e9c commit 1387841

File tree

2 files changed

+28
-27
lines changed

2 files changed

+28
-27
lines changed

src/spss/readstat_sav_parse_mr_name.c

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,24 @@ static const char _mr_extractor_actions[] = {
1414
};
1515

1616
static const char _mr_extractor_key_offsets[] = {
17-
0, 0, 7, 15, 17, 20, 22, 25,
18-
33, 44
17+
0, 0, 8, 17, 19, 22, 24, 27,
18+
36, 48
1919
};
2020

2121
static const char _mr_extractor_trans_keys[] = {
22-
95, 48, 57, 65, 90, 97, 122, 61,
23-
95, 48, 57, 65, 90, 97, 122, 67,
24-
68, 32, 48, 57, 48, 57, 32, 48,
25-
57, 32, 95, 48, 57, 65, 90, 97,
26-
122, 0, 32, 95, 9, 13, 48, 57,
27-
65, 90, 97, 122, 95, 48, 57, 65,
28-
90, 97, 122, 0
22+
46, 95, 48, 57, 65, 90, 97, 122,
23+
46, 61, 95, 48, 57, 65, 90, 97,
24+
122, 67, 68, 32, 48, 57, 48, 57,
25+
32, 48, 57, 32, 46, 95, 48, 57,
26+
65, 90, 97, 122, 0, 32, 46, 95,
27+
9, 13, 48, 57, 65, 90, 97, 122,
28+
46, 95, 48, 57, 65, 90, 97, 122,
29+
0
2930
};
3031

3132
static const char _mr_extractor_single_lengths[] = {
32-
0, 1, 2, 0, 1, 0, 1, 2,
33-
3, 1
33+
0, 2, 3, 0, 1, 0, 1, 3,
34+
4, 2
3435
};
3536

3637
static const char _mr_extractor_range_lengths[] = {
@@ -39,17 +40,17 @@ static const char _mr_extractor_range_lengths[] = {
3940
};
4041

4142
static const char _mr_extractor_index_offsets[] = {
42-
0, 0, 5, 11, 13, 16, 18, 21,
43-
27, 35
43+
0, 0, 6, 13, 15, 18, 20, 23,
44+
30, 39
4445
};
4546

4647
static const char _mr_extractor_indicies[] = {
47-
0, 0, 0, 0, 1, 2, 0, 0,
48-
0, 0, 1, 3, 1, 4, 5, 1,
49-
6, 1, 7, 6, 1, 8, 9, 9,
50-
9, 9, 1, 10, 10, 9, 10, 9,
51-
9, 9, 1, 9, 9, 9, 9, 1,
52-
0
48+
0, 0, 0, 0, 0, 1, 0, 2,
49+
0, 0, 0, 0, 1, 3, 1, 4,
50+
5, 1, 6, 1, 7, 6, 1, 8,
51+
9, 9, 9, 9, 9, 1, 10, 10,
52+
9, 9, 10, 9, 9, 9, 1, 9,
53+
9, 9, 9, 9, 1, 0
5354
};
5455

5556
static const char _mr_extractor_trans_targs[] = {
@@ -89,14 +90,14 @@ readstat_error_t extract_mr_data(const char *line, mr_set_t *result) {
8990

9091
// Execute Ragel finite state machine (FSM)
9192

92-
#line 93 "src/spss/readstat_sav_parse_mr_name.c"
93+
#line 94 "src/spss/readstat_sav_parse_mr_name.c"
9394
{
9495
cs = mr_extractor_start;
9596
}
9697

9798
#line 96 "src/spss/readstat_sav_parse_mr_name.rl"
9899

99-
#line 100 "src/spss/readstat_sav_parse_mr_name.c"
100+
#line 101 "src/spss/readstat_sav_parse_mr_name.c"
100101
{
101102
int _klen;
102103
unsigned int _trans;
@@ -233,7 +234,7 @@ readstat_error_t extract_mr_data(const char *line, mr_set_t *result) {
233234
mr_subvariables[mr_subvar_count++] = subvar;
234235
}
235236
break;
236-
#line 237 "src/spss/readstat_sav_parse_mr_name.c"
237+
#line 238 "src/spss/readstat_sav_parse_mr_name.c"
237238
}
238239
}
239240

@@ -288,7 +289,7 @@ readstat_error_t parse_mr_line(const char *line, mr_set_t *result) {
288289
}
289290

290291

291-
#line 292 "src/spss/readstat_sav_parse_mr_name.c"
292+
#line 293 "src/spss/readstat_sav_parse_mr_name.c"
292293
static const char _mr_parser_actions[] = {
293294
0, 1, 0
294295
};
@@ -344,14 +345,14 @@ readstat_error_t parse_mr_string(const char *line, mr_set_t **mr_sets, size_t *n
344345
*n_mr_lines = 0;
345346

346347

347-
#line 348 "src/spss/readstat_sav_parse_mr_name.c"
348+
#line 349 "src/spss/readstat_sav_parse_mr_name.c"
348349
{
349350
cs = mr_parser_start;
350351
}
351352

352353
#line 172 "src/spss/readstat_sav_parse_mr_name.rl"
353354

354-
#line 355 "src/spss/readstat_sav_parse_mr_name.c"
355+
#line 356 "src/spss/readstat_sav_parse_mr_name.c"
355356
{
356357
int _klen;
357358
unsigned int _trans;
@@ -441,7 +442,7 @@ readstat_error_t parse_mr_string(const char *line, mr_set_t **mr_sets, size_t *n
441442
start = p + 1;
442443
}
443444
break;
444-
#line 445 "src/spss/readstat_sav_parse_mr_name.c"
445+
#line 446 "src/spss/readstat_sav_parse_mr_name.c"
445446
}
446447
}
447448

src/spss/readstat_sav_parse_mr_name.rl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
mr_subvariables[mr_subvar_count++] = subvar;
6161
}
6262

63-
nc = (alnum | '_'); # name character
63+
nc = (alnum | '_' | '.'); # name character (including dots)
6464
name = nc+ '=' > extract_mr_name;
6565
type = ('C' | 'D'){1} > extract_mr_type;
6666
counted_value = digit* ' ' > extract_counted_value;

0 commit comments

Comments
 (0)