diff options
Diffstat (limited to 'vendor/nom-6.1.2')
61 files changed, 27434 insertions, 0 deletions
diff --git a/vendor/nom-6.1.2/.cargo-checksum.json b/vendor/nom-6.1.2/.cargo-checksum.json new file mode 100644 index 00000000..3e2fe34c --- /dev/null +++ b/vendor/nom-6.1.2/.cargo-checksum.json @@ -0,0 +1 @@ +{"files":{".travis.yml":"d42be3314463c8292b8007849abbcfa7eb2859d725208bab29f8e6f5b4350d9b","CHANGELOG.md":"b394a89cd25428f9e50b38d37568bf21308c64f8584f6f4bf57daafb7678da22","Cargo.lock":"73ee56320ac53ea573c0b5c9c439c70eef4d4ca198e175b780465a1d40f60353","Cargo.toml":"a85416a91ebdb8cebae50d31c1ce77517de2bcaac6ad9561b3e54a2902315990","LICENSE":"4dbda04344456f09a7a588140455413a9ac59b6b26a1ef7cdf9c800c012d87f0","README.md":"1877d3bf37aa2ad1cbb7126d125a3d05dddc5845b68395a39014020b864fe2fe","build.rs":"a5af84de9e65e08b88127f99f6cb5ed9a84506b115f60be4a59c918471cc8c48","doc/nom_recipes.md":"9e0313c79b97fe9678b0d13bb666793170dcdffb9257a2d597a4a733c0551d4d","src/bits/complete.rs":"f5e35d32c3c370510445c7708ec5ff55ce3387aaf8a147b73b26b1bc5a5e171c","src/bits/macros.rs":"82896ae14c47735b906b81517cd49eb87423a5b874dff5a685383fb80427a3aa","src/bits/mod.rs":"490a8595bec6ad0c64ba088452f6a7ebd8846e7d3d48d61432af651e912d186c","src/bits/streaming.rs":"de63b314a893e414b61ba989bfc368136ea2759556d676cb2caad492c3ab7a34","src/branch/macros.rs":"2575b30b2b4a280014cce9b150b25180129ca3df22eb108a59fc4e6e840aeb2e","src/branch/mod.rs":"f2ff0eb5118ea3ecfc64cd522d6c25fabfc3ad4ce5c3ec66b24b80df116e951a","src/bytes/complete.rs":"7a8262ecd25cb4de5c4633681ad2d6e8953fd30545bafd5fc08ba175e8fe7160","src/bytes/macros.rs":"45e2d5c34daff2b1cc667a7908412f5ce05168fb3921e803f6464b49c03f916d","src/bytes/mod.rs":"2eea884d8b95f7caa831f29e918a1cfba112ca22fb842d1999e53aecacc8f6b7","src/bytes/streaming.rs":"7518cbd11f74f392dca9a707196618a909bc9ac6858a78f1efbb0c2ab4f96a2e","src/character/complete.rs":"61a35ab0ba05c2d230bfb4ee580dd44c352cbe3e00c10cddac59867dc835a619","src/character/macros.rs":"46f520da5d8c9443ed0a7e6f7f887729add4f444625727cf4931425c0e1b3afa","src/character/mod.rs":"4758410eb87ec505e616109f8b4bab0c28ce0cec6dd0f200c712d19e0d64f159","src/character/streaming.rs":"011edf543463456e808a7bdd07da2b97ba189270cddad57eb0965ed63987a6af","src/combinator/macros.rs":"67c598cb9568724b9701c4b400314f06faf81379f9c4cd3631860f727636a1ab","src/combinator/mod.rs":"4569cfe8e84d49dff348c8e65f75a870af1e9acd14d76c217e5ed577df6e1ca1","src/error.rs":"6524cada484c5a9eade3271f9c711c9b49bea7d84985c617e2afa6094cb3d474","src/internal.rs":"a03a2f50a661b79f74591b87438dd65c446f237102db5ff3d8033cee5079568e","src/lib.rs":"f653ce94b759a6e1faa9675e848150ae89641f5ea2c9377386adca4e8d78822b","src/multi/macros.rs":"e2cfd7daca17e4d994e17d6636774ed75ce9a0588fdada09f3026d515d06981b","src/multi/mod.rs":"da98e73e0eb9d245f04faf2d4bb346fdcf95f7349fbdfe409f5690a004b3a900","src/number/complete.rs":"fb7d1153ac6795acf8639e2d072ebb6b66a9c0d7b4aec56bed79dfe7f3598a5b","src/number/macros.rs":"565bdd351415a10f72d0d954e41d6edcc12d1f5d315ec952b163f208a9e2849f","src/number/mod.rs":"250acd33777fbb110db438c1be023335a46cf35859ae658b6ce5edf477d95d36","src/number/streaming.rs":"9b3c4002fee0802d5923fdcc0f40af9aee65116057034978784bd1ba0e57d47e","src/regexp/macros.rs":"3455d52e2564b8ab9a440c512ce3bc8370ecaf8dc314d360721ee202882ac458","src/regexp/mod.rs":"60ce2214dceb8b83f9a38d9124ed2855ddff26992ddc3c3674eafb9c22b7e3c3","src/sequence/macros.rs":"c53b433ed41f4823b7316a450d43de567db01ea5d16288afa7352889d4e44615","src/sequence/mod.rs":"87e5397fc633892ce80c184f4ac48c063d07b636d5f912c13b94195dd16a9cac","src/str.rs":"005fa4185bd1b05244b5d038a9b616a46c308160561ba0a91d625e8152c8fbe9","src/traits.rs":"1701402896d4350fc7068a893a2e8cc04a07ea35f3c5d87fe6e8c07b63e4d6b5","src/util.rs":"581d7c5d2fca708e7c04bb519e09e1a95920618082f0c79123ed5c18427bcf86","tests/arithmetic.rs":"7e49c0f01edcb4395c465b817fdfb0be650939dd23ba5cd39fa450ea963febfd","tests/arithmetic_ast.rs":"0fd86cf6fd674d999057e8ea0c37c07c5db5462f2449bb892d63390f312bc02b","tests/bitstream.rs":"ccaa880c6bf22a1672615e379ae14519d796df5e374eb97eefe05e7a56aab1e0","tests/blockbuf-arithmetic.rs":"099fdf75da97ae032006d8c82ea2207265c5161a08d1370e1ddddb01e73afaf4","tests/css.rs":"25225bbc0dcc5df42938b1a0b122277d01134356e8da106c0885336fb48d8f1c","tests/custom_errors.rs":"3ed0bdf11d25c9763e7a8e6d483d078761dd935d504042097c4d99c71e631dfe","tests/escaped.rs":"c25987ea6d9a7dde74d58a49c332d223da3a495569cb79e3fe921bce51729ead","tests/float.rs":"544a71e78594990c335f6e57e8c648918ca9f0de97625886a946ad90bc020300","tests/fnmut.rs":"c8ee3f9f4036a7bc1662c10e370c092c269529afd878ef7a4bd20460fd083db8","tests/inference.rs":"5a042bca67efe102de271ad2141b8c62340abfc2616722d34c199479da22eefe","tests/ini.rs":"89220678c57e15432b9e4df13729aeb26373e27c0149fa2afb8252a3664f0a20","tests/ini_str.rs":"5d06688889fecabd77a43d428776eab6c3c1941626416178da8fae246c66ca17","tests/issues.rs":"194799d06880cabf56d30e1693139013a1003530adadf1d718198c95993e72de","tests/json.rs":"2a5227216036e28bcff982d2c691346bae2a8d8678e0c088798cb3c773caf4ee","tests/mp4.rs":"802168de1363c42883076a4122d292d8c6f675546f595ad29e1f1b9a34b97c93","tests/multiline.rs":"6a89d3e2cc9b59c0b10993088b396f26a4ef4ad218a44d22284421376a498ec4","tests/named_args.rs":"8b4265ac687eadcac1ef93be3a10ea2ca31aa7119afc14fc4463af3c70e7324c","tests/overflow.rs":"124d503e66e05bb027c332ad5050cc7f5aea4492c8db74430c34b9af12bee1ec","tests/reborrow_fold.rs":"9328deafc2143c2a2d1a0be86e2448b644cffcb5f0935c8b24eb469f1f9477c0","tests/test1.rs":"06fc9e52638f16bfc3ef69cd26b927e0cf55706d6f132ab7c0f1072208475853"},"package":"e7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2"}
\ No newline at end of file diff --git a/vendor/nom-6.1.2/.travis.yml b/vendor/nom-6.1.2/.travis.yml new file mode 100644 index 00000000..3c191811 --- /dev/null +++ b/vendor/nom-6.1.2/.travis.yml @@ -0,0 +1,110 @@ +language: rust +# sudo is required to enable kcov to use the personality syscall +sudo: required +dist: trusty +cache: cargo + +rust: + - nightly + - beta + - stable + - 1.44.0 + +env: + matrix: + - FEATURES='--features "regexp"' + +before_script: + - eval git pull --rebase https://github.com/Geal/nom master + - eval git log --pretty=oneline HEAD~5..HEAD + +matrix: + include: + - rust: stable + env: FEATURES='--features "std lexical regexp"' + before_script: + - export PATH=$HOME/.cargo/bin:$PATH + - cargo install cargo-update || echo "cargo-update already installed" + - cargo install cargo-tarpaulin || echo "cargo tarpaulin already installed" + - cargo install-update -a + script: + cargo tarpaulin --ciserver travis-ci --coveralls $TRAVIS_JOB_ID + - rust: stable + env: FEATURES='' + - rust: stable + env: FEATURES='--no-default-features' + # still compatible with 1.36.0 if not using lexical-core + - rust: 1.37.0 + env: FEATURES='--no-default-features --features "regexp lexical"' + - rust: stable + env: FEATURES='--no-default-features --features "alloc"' + - rust: nightly + env: FEATURES='' + - rust: nightly + env: FEATURES='--no-default-features' + - rust: nightly + env: FEATURES='--no-default-features --features "alloc"' + - rust: nightly + env: DOC_FEATURES='--features "std lexical regexp" --no-default-features' + before_script: + - export PATH=$HOME/.cargo/bin:$PATH + script: + - eval cargo doc --verbose $DOC_FEATURES + + allow_failures: + - rust: stable + env: FEATURES='' + before_script: + - export PATH=$HOME/.cargo/bin:$PATH + - rustup component add rustfmt-preview + script: + - eval cargo fmt -- --write-mode=diff + +notifications: + webhooks: + urls: + - https://webhooks.gitter.im/e/9c035a194ac4fd4cc061 + on_success: change + on_failure: always + on_start: false + + +addons: + apt: + packages: + - libcurl4-openssl-dev + - libelf-dev + - libdw-dev + - binutils-dev + - cmake + sources: + - kalakris-cmake + +cache: + directories: + - /home/travis/.cargo + +before_cache: + - rm -rf /home/travis/.cargo/registry + +script: + - eval cargo build --verbose $FEATURES + - eval cargo test --verbose $FEATURES + +after_success: | + case "$TRAVIS_RUST_VERSION" in + nightly) + if [ "${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}" != "master" ]; then + git fetch && + git checkout master && + cargo bench --verbose + fi + + if [ "$FEATURES" == '--features "regexp"' ]; then + cargo bench --verbose + fi + ;; + + *) + ;; + esac diff --git a/vendor/nom-6.1.2/CHANGELOG.md b/vendor/nom-6.1.2/CHANGELOG.md new file mode 100644 index 00000000..328a95a3 --- /dev/null +++ b/vendor/nom-6.1.2/CHANGELOG.md @@ -0,0 +1,1324 @@ +# Change Log + +## [Unreleased][unreleased] + +### Thanks + +### Changed + +## 6.0.1 - 2020-11-24 + +### Thanks + +This release was done thanks to the hard work of (by order of appearance in the commit list): + +- @Leonqn +- @nickelc +- @toshokan +- @juchiast +- @shssoichiro +- @jlkiri +- @chifflier +- @fkloiber +- @Kaoet +- @Matthew Plant + +### Added + +- `ErrorConvert` implementation for `VerboseError` + +### Changed + +- CI fixes +- `fold_many*` now accept `FnMut` for the accumulation function +- relaxed input bounds on `length_count` + +# Fixed + +- documentation fixes +- the `#[deprecated]` attribute was removed from traits because it does not compile anymore on nightly +- bits and bytes combinators from the bits modules are now converted to use `FnMut` + +## 6.0.0 - 2020-10-31 + +### Thanks + +This release was done thanks to the hard work of (by order of appearance in the commit list): +- @chifflier +- @shepmaster +- @amerelo +- @razican +- @Palladinium +- @0ndorio +- Sebastian Zivota +- @keruspe +- @devonhollowood +- @parasyte +- @nnt0 +- @AntoineCezar +- @GuillaumeGomez +- @eijebong +- @stadelmanma +- @sphynx +- @snawaz +- @fosskers +- @JamesHarrison +- @calebsander +- @jthornber +- @ahmedcharles +- @rljacobson +- @benkay86 +- @georgeclaghorn +- @TianyiShi2001 +- @shnewto +- @alfriadox +- @resistor +- @myrrlyn +- @chipsenkbeil +- @ruza-net +- @fanf2 +- @jameysharp +- @FallenWarrior2k +- @jmg-duarte +- @ericseppanen +- @hbina +- Andreas Molzer +- @nickelc +- @bgourlie + +## Notable changes + +This release is a more polished version of nom 5, that came with a focus on +function parsers, by relaxing the requirements: combinators will return a +`impl FnMut` instead of `impl Fn`, allowing closures that change their context, +and parsers can be any type now, as long as they implement the new `Parser` trait. +That parser trait also comes with a few helper methods. + +Error management was often a pain point, so a lot of work went into making it easier. +Now it integrates with `std:error::Error`, the `IResult::finish()` method allows you +to convert to a more usable type, the `into` combinator can convert the error type +if there's a `From` implementation, and there are more specific error traits like +`ContextError` for the `context` combinator, and `FromExternalError` for `map_res`. +While the `VerboseError` type and its `convert_error` function saw some changes, +not many features ill be added to it, instead you are encouraged to build the error +type that corresponds to your needs if you are building a language parser. + +This version also integrates with the excellent [bitvec](https://crates.io/crates/bitvec) +crate for better bit level parsing. This part of nom was not great and a bit of a hack, +so this will give better options for those parsers. + +At last, documentation! There are now more code examples, functions and macros that require +specific cargo features are now clearly indicated, and there's a new `recipes` module +containing example patterns. + +### Breaking changes + +- the minimal Rust version is now 1.44 (1.37 if building without the `alloc` or `std` features) +- streaming parsers return the number of additional bytes they need, not the total. This was supposed to be the case everywhere, but some parsers were forgotten +- removed the `regexp_macros` cargo feature +- the `context` combinator is not linked to `ParseError` anymore, instead it come with its own `ContextError` trait +- `Needed::Size` now contains a `NonZeroUsize`, so we can reduce the structure's size by 8 bytes. When upgrading, `Needed::Size(number)` can be replaced with `Needed::new(number)` +- there is now a more general `Parser` trait, so parsers can be something else than a function. This trait also comes with combinator methods like `map`, `flat_map`, `or`. Since it is implemented on `Fn*` traits, it should not affect existing code too much +- combinators that returned a `impl Fn` now return a `impl FnMut` to allow parser closures that capture some mutable value from the context +- `separated_list` is now `separated_list0` +- removed the deprecated `methods` module +- removed the deprecated `whitespace` module +- the default error type is now a struct (`nom::error::Error`) instead of a tuple +- the `FromExternalError` allows wrapping the error returned by the function in the `map_res` combinator +- renamed the `dbg!` macro to avoid conficts with `std::dbg!` +- `separated_list` now allows empty elements + + +### Added + +- function version of regex parsers +- `fill`: attempts to fill the output slice passed as argument +- `success`: returns a value without consuming the input +- `satisfy`: checks a predicate over the next character +- `eof` function combinator +- `consumed`: returnes the produced value and the consumed input +- `length_count` function combinator +- `into`: converts a parser's output and error values if `From` implementations are available +- `IResult::finish()`: converts a parser's result to `Result<(I, O), E>` by removing the distinction between `Error` and `Failure` and panicking on `Incomplete` +- non macro versions of `u16`, `i32`, etc, with configurable endianness +- `is_newline` function +- `std::error::Error` implementation for nom's error types +- recipes section of the documentation, outlining common patterns in nom +- custom errors example +- bitstream parsing with the `BitSlice` type from the bitvec crate +- native endianness parsers +- github actions for CI + +### Changed + +- allows lexical-core 0.7 +- number parsers are now generic over the input type +- stabilized the `alloc` feature +- `convert_error` accepts a type that derefs to `&str` +- the JSON example now follows the spec better + +### Fixed +- use `fold_many0c` in the `fold_many0` macro + +## 5.1.1 - 2020-02-24 + +### Thanks + +- @Alexhuszagh for float fixes +- @AlexanderEkdahl, @JoshOrndorff, @akitsu-sanae for docs fixes +- @ignatenkobrain: dependency update +- @derekdreery: `map` implementation for errors +- @Lucretiel for docs fixes and compilation fixes +- adytzu2007: warning fixes +- @lo48576: error management fixes + +### Fixed + +- C symbols compilation errors due to old lexical-core version + +### Added + +- `Err` now has a `map` function + +### Changed + +- Make `error::context()` available without `alloc` feature + +## 5.1.0 - 2020-01-07 + +### Thanks + +- @Hywan, @nickmooney, @jplatte, @ngortheone, @ejmg, @SirWindfield, @demurgos, @spazm, @nyarly, @guedou, @adamnemecek, for docs fixes +- @Alxandr for error management bugfixes +- @Lucretiel for example fixes and optimizations +- @adytzu2007 for optimizations +- @audunhalland for utf8 fixes + +### Fixed + +- panic in `convert_error` +- `compile_error` macro usage + +### Added + +- `std::error::Error`, `std::fmt::Display`, `Eq`, `ToOwned` implementations for errors +- inline attribute for `ToUsize` + +### Changed + +- `convert_error` optimization +- `alt` optimization + +## 5.0.1 - 2019-08-22 + +### Thanks + +- @waywardmonkeys, @phaazon, @dalance for docs fixes +- @kali for `many0_m_n` fixes +- @ia0 for macros fixes + +### Fixed + +- `many0_m_n` now supports the n=1 case +- relaxed trait requirements in `cut` +- `peek!` macro reimplementation +- type inference in `value!` + +## 5.0.0 - 2019-06-24 + +This version comes with a complete rewrite of nom internals to use functions as a base +for parsers, instead of macros. Macros have been updated to use functions under +the hood, so that most existing parsers will work directly or require minimal changes. + +The `CompleteByteSlice` and `CompleteStr` input types were removed. To get different +behaviour related to streaming or complete input, there are different versions of some +parsers in different submodules, like `nom::character::streaming::alpha0` and +`nom::character::complete::alpha0`. + +The `verbose-errors` feature is gone, now the error type is decided through a generic +bound. To get equivalent behaviour to `verbose-errors`, check out `nom::error::VerboseError` + +### Thanks + +- @lowenheim helped in refactoring and error management +- @Keruspe helped in refactoring and fixing tests +- @pingiun, @Songbird0, @jeremystucki, @BeatButton, @NamsooCho, @Waelwindows, @rbtcollins, @MarkMcCaskey for a lot of help in rewriting the documentation and adding code examples +- @GuillaumeGomez for documentation rewriting and checking +- @iosmanthus for bug fixes +- @lo48576 for error management fixes +- @vaffeine for macros visibility fixes +- @webholik and @Havvy for `escaped` and `escaped_transform` fixes +- @proman21 for help on porting bits parsers + +### Added + +- the `VerboseError` type accumulates position info and error codes, and can generate a trace with span information +- the `lexical-core` crate is now used by default (through the `lexical` compilation feature) to parse floats from text +- documentation and code examples for all functions and macros + +### Changed + +- nom now uses functions instead of macros to generate parsers +- macros now use the functions under the hood +- the minimal Rust version is now 1.31 +- the verify combinator's condition function now takes its argument by reference +- `cond` will now return the error of the parser instead of None +- `alpha*`, `digit*`, `hex_digit*`, `alphanumeric*` now recognize only ASCII characters + +### Removed + +- deprecated string parsers (with the `_s` suffix), the normal version can be used instead +- `verbose-errors` is not needed anymore, now the error type can be decided when writing the parsers, and parsers provided by nom are generic over the error type +- `AtEof`, `CompleteByteSlice` and `CompleteStr` are gone, instead some parsers are specialized to work on streaming or complete input, and provided in different modules +- character parsers that were aliases to their `*1` version: eol, alpha, digit, hex_digit, oct_digit, alphanumeric, space, multispace +- `count_fixed` macro +- `whitespace::sp` can be replaced by `character::complete::multispace0` +- method combinators are now in the nom-methods crate +- `take_until_either`, `take_until_either1`, `take_until_either_and_consume` and `take_until_either_and_consume1`: they can be replaced with `is_not` (possibly combined with something else) +- `take_until_and_consume`, `take_until_and_consume1`: they can be replaced with `take_until` combined with `take` +- `sized_buffer` and `length_bytes!`: they can be replaced with the `length_data` function +- `non_empty`, `begin` and `rest_s` function +- `cond_reduce!`, `cond_with_error!`, `closure!`, `apply`, `map_res_err!`, `expr_opt!`, `expr_res!` +- `alt_complete`, `separated_list_complete`, `separated_nonempty_list_complete` + +## 4.2.3 - 2019-03-23 + +### Fixed + +- add missing `build.rs` file to the package +- fix code comparison links in changelog + +## 4.2.2 - 2019-03-04 + +### Fixed + +- regression in do_parse macro import for edition 2018 + +## 4.2.1 - 2019-02-27 + +### Fixed + +- macro expansion error in `do_parse` due to `compile_error` macro usage + +## 4.2.0 - 2019-01-29 + +### Thanks + +- @JoshMcguigan for unit test fixes +- @oza for documentation fixes +- @wackywendell for better error conversion +- @Zebradil for documentation fixes +- @tsraom for new combinators +- @hcpl for minimum Rust version tests +- @KellerFuchs for removing some unsafe uses in float parsing + +### Changed + +- macro import in edition 2018 code should work without importing internal macros now +- the regex parsers do not require the calling code to have imported the regex crate anymore +- error conversions are more ergonomic +- method combinators are now deprecated. They might be moved to a separate crate +- nom now specifies Rust 1.24.1 as minimum version. This was already the case before, now it is made explicit + +### Added + +- `many0_count` and `many1_count` to count applications of a parser instead of +accumulating its results in a `Vec` + +### Fixed + +- overflow in the byte wrapper for bit level parsers +- `f64` parsing does not use `transmute` anymore + +## 4.1.1 - 2018-10-14 + +### Fixed + +- compilation issue in verbose-errors mode for `add_return_error` + +## 4.1.0 - 2018-10-06 + +### Thanks + +- @xfix for fixing warnings, simplifying examples and performance fixes +- @dvberkel for documentation fixes +- @chifflier for fixing warnings +- @myrrlyn for dead code elimination +- @petrochenkov for removing redundant test macros +- @tbelaire for documentation fixes +- @khernyo for fixing warnings +- @linkmauve for documentation fixes +- @ProgVal for documentation fixes, warning fixes and error management +- @Nemo157 for compilation fixes +- @RReverser for documentation fixes +- @xpayn for fixing warnings +- Blas Rodriguez Irizar for documentation fixes +- @badboy for documentation fixes +- @kyrias for compilation fixes +- @kurnevsky for the `rest_len` parser +- @hjr3 for new documentation examples +- @fengalin for error management +- @ithinuel for the pcap example project +- @phaazon for documentation fixes +- @juchiast for documentation fixes +- @jrakow for the `u128` and `i128` parsers +- @smarnach for documentation fixes +- @derekdreery for `pub(crate)` support +- @YaLTeR for `map_res_err!` + +### Added + +- `rest_len` parser, returns the length of the remaining input +- `parse_to` has its own error code now +- `u128` and `i128` parsers in big and little endian modes +- support for `pub(crate)` synta |