Comments (7)
Hi @jeffrom! The idea is to do something more efficient, where we read the size and then we perform <<x::size(y)-binary>>
.
from nimble_parsec.
Just curious: I've implemented something that i think achieves this, which basically does a traverse
to get the length from the input and adds it to the context, and then a repeat_while
to increment a counter, also in the context, and repeats ascii_char([0..255])
until the counter has reached the input size. Would what you have in mind be more efficient than this approach?
from nimble_parsec.
definitely looking forward to that!
from nimble_parsec.
@josevalim is this still wanted and has no one working on it? I could give it a try.
from nimble_parsec.
Still wanted, yes. :)
from nimble_parsec.
I stumbled upon a similar (I think) case: parsing <N><...something...><N times X>
In theory, it could be represented as (name pretty random):
def times_from_count(count_combinator, next_combinator, repeated_combinator)
and used like this:
times_from_prefix(integer(), string("---"), ascii_char(?a..?c))
and it would parse the following examples:
"2---a" -> error, expected 2 chars after "---", got 1
"2---ab" -> ok("ab"), "" left
"2---abc" -> ok("ab"), "c" left
"10---abcabcabca" -> ok("abcabcabca"), "" left
Is this anyhow similar to what sized_binary
would do?
Is there any way to implement it with current nimble_parsec?
I could try to implement it with a bit of guidance of how it all works inside 🙃
from nimble_parsec.
I have just pushed the ability to return rest
from post_traverse
which would allow someone to implement this by hand, so this is no longer relevant. :)
from nimble_parsec.
Related Issues (20)
- Can't use remote combinators defined with defparsec HOT 7
- Library Abuse or Slow Compilation Times HOT 1
- `repeat_while` passing the wrong `context` in nested context
- Warning emitted by integer combinator HOT 3
- Add a default value to `optional` combinator HOT 2
- "Combinators are built during runtime" HOT 1
- When choice after repeat, not work HOT 2
- Fail to create combinator of consecutive repeats HOT 2
- No combinator for the beginning of a string
- MatchError from choice with integer and string. HOT 1
- Accept atoms as labels HOT 2
- Documentation: Error in second example under `repeat_while/4`
- NimbleParsec does not respect clauses order with OTP 26.0 (Elixir 1.14.4) HOT 3
- Potential "The pattern can never match the type." issue found by dialyxir HOT 3
- [proposal] Improve integer parsing HOT 2
- Add missing git tag for 1.3.1 HOT 1
- Nested parsec() call seems to consume error HOT 3
- takeP equivalent HOT 3
- Parse any character until HOT 3
- Add cheatsheet to documentation HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nimble_parsec.