steve-chavez
b866236aad
fix: mpc_sepby1 not applying fold correctly
...
`mpc_sepby1` takes a single fold function but this doesn't apply to the
whole list of entries. Instead it applies the fold twice,
one for `mpc_and` and another for `mpc_many`.
Introduce a new repeat repeat parser type MPC_TYPE_SEPBY1 that combines
the results and applies the fold once for all entries.
2023-08-20 21:12:50 -05:00
steve-chavez
b7ee5df355
refactor: rename grow_results to mpc_grow_results
...
To not cause naming conflicts as mentioned on
https://github.com/orangeduck/mpc/pull/166#issuecomment-1685146508
2023-08-20 21:05:46 -05:00
steve-chavez
21286d5915
refactor: deduplicate repeat parsers alloc logic
...
Deduplicates the results allocation logic used in MPC_TYPE_MANY
and MPC_TYPE_MANY1 on a `grow_results` function.
This will aid in implementing new repeat parser types. A new one is
neeeded for `sepby1` as discussed on
https://github.com/orangeduck/mpc/pull/165#discussion_r1292878771 .
2023-08-19 20:08:01 -05:00
steve-chavez
c24e27f0b8
feat: add sepby1 combinator
...
`sepby1` is a common reusable combinator in Haskell Parsec.
This adds `mpc_sepby1(mpc_fold_t f, mpc_parser_t *sep, mpc_parser_t *a)` according to Haskell's implementation:
https://hackage.haskell.org/package/parsec-3.1.16.1/docs/src/Text.Parsec.Combinator.html#sepBy1
Reuses existing `mpc_and`, `mpc_many`, and `mpcf_snd_free`.
2023-08-08 14:25:18 -05:00
Carlos Rueda
d33037b532
fix #155 - char_unescape_buffer not as shared space
2023-01-08 18:50:09 -08:00
Carlos Rueda
afbaab89fe
remove mpcf_maths from mpc.c and adjust maths test
2023-01-05 15:51:14 -08:00
Khairul Azhar Kasmiran
6e3d2d54aa
Fix -Wformat-overflow
warnings due to gcc 12 + ASAN + -O2
2022-10-11 13:17:47 +00:00
Daniel Holden
e507d34428
Merge github.com:orangeduck/mpc
2020-07-19 08:54:16 -04:00
Daniel Holden
41aecb485e
fixed renaming of mpcf_freefold to mpcf_all_free
2020-07-19 08:53:43 -04:00
Liumeo
248540274d
Fix long format
2020-04-07 22:30:34 -04:00
Joshua Crowgey
0edd06ec44
Removed trailing whitespace
2020-01-08 22:07:32 -08:00
Daniel Holden
5120609e6e
fixed bug with trimming string with all space characters
2019-09-01 16:21:11 -04:00
Daniel Holden
e1038bc376
Merge pull request #110 from nmeum/fix-109
...
Fix backtracing bug with mpc_parse_pipe
2019-09-01 13:58:53 -04:00
Daniel Holden
ea778d1b8d
added maximum recursion depth
2019-09-01 13:32:36 -04:00
Fotis Georgatos
f323a89923
typo: recieved -> received
2019-06-24 22:44:58 +02:00
Sören Tempel
6f5e8f0f39
Fix backtracing bug with mpc_parse_pipe
...
Before we free our buffer we need to reset the underlying stream to its
original state by pushing the buffer contents back onto the input
stream.
Fixes #109
2019-06-17 17:29:22 +02:00
Daniel Holden
dbe7308b9c
Added destructor to check combinators
2019-06-15 14:30:41 -04:00
Daniel Holden
060bf54a01
merge
2018-12-15 16:13:51 -05:00
Daniel Holden
37c4de35a3
Fixed bug with end of file and parsing from a file
2018-12-15 16:11:39 -05:00
Lzu Tao
6c03383cd1
Cast argument to unsigned char before feeding to ctype.h functions
...
The behavior of the `<ctype.h>` functions is undefined for negative
arguments (other than `EOF`). In such a situation, the argument should
be cast to `unsiged char` for safety.
References:
- C Programming: A Modern Approach, 2nd Edition: page 612, chapter 23.5
2018-11-06 14:40:04 +00:00
Daniel Holden
4a992d91ab
Added mode option to regex and also changed example from a line reader to a tokenizer.
2018-10-14 17:20:11 -04:00
Daniel Holden
fbc5d8f9ae
Added line-reader example. Changed behaviour of eof on regex to parse either eof or a newline followed be eof (better matchers other regex engines).
2018-10-13 18:27:42 -04:00
Daniel Holden
65060137b1
Adjust the behaviour of mpc_eoi so that it only is successful in matching the end of input once.
2018-10-13 17:35:21 -04:00
Richard James Howe
d3ea59b5e2
Back to -ansi, removed trailing comma
2018-05-11 00:01:41 +01:00
Richard James Howe
aa3af70ae5
Fix minor memory leak, changed standard ansi->c99
2018-05-09 19:36:00 +01:00
Jerome M. BERGER
a63bedc74a
Add mpc_checkf
and mpc_check_withf
combinators.
2018-04-03 14:53:13 +02:00
Jerome M. BERGER
6ac5594c4f
Add mpc_check
and mpc_check_with
combinators.
2018-03-23 10:50:09 +01:00
Jerome M. BERGER
1ac37a9eba
Fix a buffer overflow when optimizing or
nodes. Fixes #78 .
2018-03-20 09:35:44 +01:00
Jerome M. BERGER
9623500d0d
Fix stats for or
and and
nodes. Fixes #79 .
2018-03-20 09:34:03 +01:00
mingodad
0f7d816e80
Some small performance enhancements, reorder struct members of mpc_parser_t and remove unnecessary calls to strcmp
2017-10-10 14:29:28 +02:00
chary
6fce66bf29
fix build error with gcc 5.4
2017-03-14 15:20:09 +08:00
Sean Usher
71af0741db
Handle the case where the language definition references a non-existant rule, and ensure it fails with 'Unknown Parser'
2016-11-07 19:28:52 -08:00
Sean Anderson
43b3fdbd8a
Fixed uninitialized terminator
2016-07-04 13:33:23 -04:00
Sean Anderson
570ba8907a
Updated mpc_input_new_string to reflect changes in mpc
2016-06-29 17:31:31 -04:00
Sean Anderson
f87ce67e70
Merge branch 'master' of https://github.com/orangeduck/mpc into nparse
2016-06-29 16:23:31 -04:00
Sean Anderson
4156d72642
Added function to only parse n bytes from input
2016-06-29 14:17:46 -04:00
Daniel Holden
2a19e4c451
Fixed folding of single child asts with tags
2016-06-11 14:11:19 +01:00
Daniel Holden
14001ad332
Added test for partial grammar definition
2016-06-11 12:59:55 +01:00
petermlm
913cc58824
Made traversal free
2016-05-31 22:32:24 +01:00
petermlm
0037648c49
Identation
2016-04-19 23:26:20 +01:00
petermlm
e99b35796c
Made example for tree traversal
2016-04-19 23:21:39 +01:00
petermlm
719ca68b6c
Implemented pre order ast traversal
2016-04-19 23:14:00 +01:00
petermlm
9ac854ad5a
Made post order tree traversal
2016-04-19 22:27:32 +01:00
petermlm
aa17e0723e
2 space indentation
2016-04-17 18:51:04 +01:00
petermlm
97d634a708
Added const to declarations
2016-04-17 18:43:10 +01:00
petermlm
2b643c729b
Made functions to get child nodes of AST by tag
2016-04-17 00:17:45 +01:00
Daniel Holden
4da2ae5feb
Updated copy function to work properly with larger parsers
2016-03-03 10:34:52 +00:00
Daniel Holden
c2908c37bb
Added copy function
2016-02-20 14:44:08 +00:00
Daniel Holden
d9c3a453f2
State needs to be invalid to avoid input being expected
2015-12-13 13:22:01 +00:00
Daniel Holden
3ead545ed8
Fixed bug in error reporting
2015-12-13 13:15:10 +00:00