-
Notifications
You must be signed in to change notification settings - Fork 101
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New parser: event-based policy #414
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
biojppm
force-pushed
the
newparser
branch
3 times, most recently
from
March 26, 2024 23:24
7fe1a7f
to
6ebef32
Compare
biojppm
force-pushed
the
newparser
branch
7 times, most recently
from
March 27, 2024 19:20
3d6b928
to
9e75661
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #414 +/- ##
==========================================
+ Coverage 96.75% 97.26% +0.50%
==========================================
Files 22 33 +11
Lines 8449 10924 +2475
==========================================
+ Hits 8175 10625 +2450
- Misses 274 299 +25 ☔ View full report in Codecov by Sentry. |
Merged
biojppm
force-pushed
the
newparser
branch
2 times, most recently
from
March 28, 2024 01:16
f5b0363
to
f511768
Compare
biojppm
force-pushed
the
newparser
branch
3 times, most recently
from
March 30, 2024 21:53
e0ea012
to
667fafd
Compare
biojppm
force-pushed
the
newparser
branch
2 times, most recently
from
April 3, 2024 01:22
3d7b883
to
339bc5d
Compare
biojppm
force-pushed
the
newparser
branch
3 times, most recently
from
April 5, 2024 00:19
04a8579
to
a44ec6a
Compare
rewrite parser based on events, rewrite filtering separating the filter code to a different class wip wip wip filter single quoted is working refactor to filter processor wip double quoted wip double quoted wip double quoted wip double quoted wip double quoted wip double quoted wip double quoted wip double quoted seems to be working double quoted wip double quoted wip double quoted wip double quoted wip double quoted wip double quoted wip double quoted working! filter plain scalar wip wip filter plain scalar wip wip test filter processors fix write in inplace::translate_esc block literal wip block literal wip block literal wip block literal wip block literal wip block literal wip block literal working! filter block folded wip filter block folded wip cleanup filter filter locations are needed only for double quoted scalars add FilterResult to encapsulate validity prepare filter for using in parser in-parser filtering wip filter empty block literals filter block folded ok all filters working moving filters to parse wip fix block_folded fixing block folded WIP new filter: all tests passing! fix sanitizer issues refactor: harmonize parser filtering function names wip ci fixes coverage wip filter arena no longer needed double quoted filter wip fix wip fix wip fix wip wip: inplace mid-extending vs end-extending all tests ok wip wip wip2 wip wip wip doc wip doc wip anchor fix newlines in emit of docs wip ref wip new parser wip new parser wip new parser fix wip new parser wip new parser wip new parser wip new parser wip new parser: tag directives wip new parser: tag resolving wip new parser: more sink edge cases wip new parser: key containers working in the sink prepare event sink stack tree parse wip cleanup event sink tree parse wip tree parse wip tree parse wip tree parse wip: now parsing simple flow seqs! new parser wip: flow seqs: added anchor/ref parsing new parser wip: seq flow goes on while there is a seq flow new parser wip: seqimap events new parser wip: seqimap parsing new parser wip: now parsing flow maps! wip wip new parser wip: block seqs wip new parser wip: block maps wip wip wip wip map anchors ok tags wip anchors and tags now working add tests for container keys structure wip key containers: working in events from yaml! wip wip docs wip qmrk wip qmrk seq blck qmrk wip fix seqimap again qmrk with tags doc wip doc wip doc wip doc wip doc wip doc wip remove old parsing functions fix wip buffered events for container keys ditto ditto ditto ditto container keys seem to be working report error for container keys flow key containers inside qmrk remove unused functions remove more unused functions comments wip comments wip wip wip wip wip most tests working fix more tests wip: refactor parser to not depend on tree ditto remove include dependencies parser: do not use tree directly fixes fix annotations when starting child maps more fixes more fixes more fixes more fixes block scalars block scalars fixes to scalars wip wip wip wip add error location checks wip wip sudden docs sudden docs wip sudden docs in block map/seq first test cases for simple seq are working! fixing test cases WIP mark doc only on explicit docs or stream children more progress wip wip fixing indentless seqs wip simple seqs are working! nested_seqx2 working! disable all un-refactored tests fix empty_seq fix empty map/file empty scalar wip fix empty scalars fix test number fix null vals and empty scalars fix nested seq map wip map wip fix maps! fix nested maps! fix map of seq fix seq of map fix sets explicit key WIP explicit key WIP explicit key WIP explicit key WIP explicit keys working! fix regressions fix generic map seq tests docs WIP docs + indentation wip remove unused functions fix regressions rename test_new_parser to test_parser_engine docs working! fix json fix scalar names anchors wip anchors wip anchors wip anchors mostly working anchors WIP anchors/refs working! move test lib files to a separate folder tags wip simple seq simple seq tag wip tags working! rename TestCase->TestCaseNode, into separate files remove empty var fix indentation fix github_issues fix github issues single quoted wip single quoted wip single quoted is working! double quoted wip double quoted wip fix plain scalar emit literal scalar wip literal scalar wip literal scalar wip literal scalar wip literal scalar wip move tags to separate source files minor cleanup block literal wip block literal wip add json parser update benchmarks improve json fix compilation in clang fix bm_emit block literal wip block literal wip block literal wip reference resolver block literal wip block literal working! fix regressions block folded wip block folded wip block folded wip block folded wip block folded wip block folded wip block folded wip block folded wip: indented blocks block folded wip block folded wip block folded wip block folded working! plain scalar wip plain scalar wip plain scalar working! style wip style wip style wip style wip style WIP scalar style wip scalar style ok fix regression of scalar plain fix regression of double quoted wip block literal wip (old) double quoted wip fix regression in double quoted fix merge add tests for merge fix merge wip fix vs compilation wip parse overloads wip parse overloads wip parse overloads fix merge for styles fixes to quickstart wip enable serialize test improve test merge fix test serialize test tree wip fix locations test tree wip test parser wip fix test for yaml events (from tree) refactor yaml event tests to use parameterized tests event tests: use the scalar style information from the tree event tests: use the container style information from the tree event tests: working both from parser and tree improve tag errors fix tags wip fix tags fix bm fix bm fix test parser fix tree wip fix quickstart wip fix test tree wip fix some valgrind warnings fix quickstart wip fix tree & quickstart wip fix docmaps with keyref as the first child fix parsing into existing nodes fix quickstart! more fixes (~regressions from quickstart) fix tool tests fix test suite wip fix test suite wip @215/1633 fix test suite wip @152/1633 91% disable tests with container keys: 96/1633 94% test suite wip test suite parse: update missing errors fix parsing of scalars starting with ? fix skipping of whitespace in flow mode 47/1633 97% fix missing anchor 45/1633 97% fix neutral tag resolve 43/1633 97% fix parse of yaml events 39/1633 98% fix tags normalization 50/1633 97% fix tags normalization 38/1633 98% fix scalar with trailing colon : 36/1633 98% exempt more missing errors. 32/1633 98% 30/1633 98% 22/1633 99% 18/1633 99% backspace in dquo. 16/1633 99% 8/1633 99% 7/1633 99% 6/1633 99% 3/1633 99% 100% pass! adding events parser to test suite and events tool sneaky block container keys WIP cleanup yaml-events fix warning wip fix block key containers test suite: fix event emitting WIP 100% tests pass! fix missing doc UKK6 test suite: add tests comparing reference events and emitted events WIP test suite: fix comparison of emitted events 100% test pass enable tests for key containers. 100% pass! enable error tests for event emitter. 100% pass! update test suite exclusions [refac] split event handlers [fix] compilation in windows windows exports fix wip wip wip wip tab tokens working! fix NodeType::operator== ambiguity in C++20 clean up test names cover json as much as possible in the tests fix the difficult failure in vs-x86-release builds ensure json is tested in the test groups fix some problems with the declaration/definition of test groups minor cleanup in json emit parser cleanup wip cleanup and improve coverage cleanup and improve coverage cleanup and improve coverage cleanup and improve coverage wip cleanup and coverage wip cleanup and coverage style is no longer tagged WIP tidy style API ensure tree assertions go through the tree's callbacks style API bm wip bm wip changelog tidy type+style predicates add id_type to take place as the new type for node ids update benchmarks WIP fix warnings when the id_type is signed 32 bit wip wip [ci skip] woops wip [ci skip] add test to ensure #422 fix rebase problem fix noderef tests which were optimized github workflows: update checkout version add some more plain scalar tests add yamlscript like test quickstart: call sample_tags/directives on the proper place add test for 379 update docs post rebase fix rebase problems and update docs test parse engine: fix gcc4.8 not accepting C++11 raw strings as macro args investigating gcc x86 release failures fix gcc x86 release failures (?) gcc x86 release failures: cleanup print update c4core update swig interface fix benchmark workflow improve coverage improve error logging functions annotate unreachable to prevent error in visual studio improve coverage split event stack wip split event stack wip split event stack wip tidy up some defines, and improve the dump function emit: disable uncovered statements
biojppm
force-pushed
the
newparser
branch
3 times, most recently
from
May 6, 2024 00:24
8ce0671
to
91ecfd6
Compare
biojppm
added a commit
that referenced
this pull request
May 18, 2024
biojppm
added a commit
that referenced
this pull request
May 18, 2024
biojppm
added a commit
that referenced
this pull request
May 18, 2024
biojppm
added a commit
that referenced
this pull request
May 18, 2024
biojppm
added a commit
that referenced
this pull request
May 18, 2024
biojppm
added a commit
that referenced
this pull request
May 19, 2024
biojppm
added a commit
that referenced
this pull request
May 19, 2024
biojppm
added a commit
that referenced
this pull request
May 19, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Also:
Parser refactor
The parser was completely refactored (#PR414). This was a large and hard job carried out over several months, and the result is:
EventHandlerTree
). For an example of a handler which can accomodate key containers, see the one which is used for the test suite attest/test_suite/test_suite_event_handler.hpp
&anchor: key: val
), as dictated by the standard.Strict JSON parser
parse_json_...()
family of functions to parse json in stricter mode (and faster) than flow-style YAML.YAML style preserved while parsing
Because of this, the style of YAML emitted by ryml changes from previous releases.
NodeType_e
:NodeType
,Tree
,ConstNodeRef
andNodeRef
:Breaking changes
As a result of the refactor, there are some limited changes with impact in client code. Even though this was a large refactor, effort was directed at keeping maximal backwards compatibility, and the changes are not wide. But they still exist:
parse_...()
methods in theParser
class were all removed. Use the correspondingparse_...(Parser*, ...)
function from the headerc4/yml/parse.hpp
(link valid after this branch is merged).EventHandlerTree
object, which is responsible for building the tree. Although fully functional and tested, the structure of this class is still somewhat experimental and is still likely to change. There is an alternative event handler implementation responsible for producing the events for the YAML test suite intest/test_suite/test_suite_event_handler.hpp
.NodeType
was moved to a separate header filec4/yml/node_type.hpp
(previously it was inc4/yml/tree.hpp
).KEYQUO
andVALQUO
are now masks of the several style flags for quoted scalars. In general, however, client code using these flags and.is_val_quoted()
or.is_key_quoted()
is not likely to require any changes.New type for node IDs
A type
id_type
was added to signify the integer type for the node id, defaulting to the backwards-compatiblesize_t
which was previously used in the tree. In the future, this type is likely to change, and probably to a signed type, so client code is encouraged to always useid_type
instead of thesize_t
, and specifically not to rely on the signedness of this type.Reference resolver is now exposed
The reference (ie, alias) resolver object is now exposed in
c4/yml/reference_resolver.hpp
(link valid after this PR is merged). Previously this object was temporarily instantiated inTree::resolve()
. Exposing it now enables the user to reuse this object through different calls, saving a potential allocation on every call.