From: David Bien (davidbien_at_[hidden])
Date: 2021-09-21 18:16:06
I want to know how to submit libraries for potential inclusion in boost.
I think it would be very cool to have LEX functionality built into boost. Also my dgraph impl is pretty cool if I do say so myself. I also think I did a pretty good job on all of the template libraries below. I always write my code with an eye on the order of the algorithms involved and I write pretty tight, throwsafe, threadsafe, code if I do say so myself. There may be quite a bit of work involved in actually including them in boost, but I also may be interesting in doing that work.
Heres what I think would be really, really cool: Having the ability to parse C++ inside of boost. I do realize that it is an idea involving an absolute boatload of work, but it is something that I have been thinking about for literally decades. But of course these template libraries are just small stepping stones along that potential pathway.
Anyway, please let me know if there is a formal submission process, etc.
Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows
From: David Bien<mailto:davidbien_at_[hidden]>
Sent: Monday, September 13, 2021 12:58 PM
Subject: Published various template libraries...
That I have been working on over the past 23 years (when not working for actual money).
Directed Graph Template Library: https://github.com/davidbien/dgraph
Original email to boost mailing list from year 2000: https://lists.boost.org/Archives/boost/2000/04/2834.php
Lexical Analyzer Generator Template Library: https://github.com/davidbien/lexang
Original email to boost mailing list from year 2000: https://lists.boost.org/Archives/boost/2000/04/2837.php
This depends on the dgraph git submodule above.
The above are written in "old" C++ - but updated to compiler in the latest compilers (MSVC, clang11).
Built on the above:
XML Parser/Writer/DOM Template Library: https://github.com/davidbien/xmlpinc
This I developed over the last winter. It is written in C++20 and requires msvc19 or clang11. I heavily use C++20 concepts. There is a lack of documentation.
XML Parser/Writer/DOM Development Environment: https://github.com/davidbien/xmlp
This contains the LEX specifications (which are written using overridden C++ operators in a namespace) that produce the state machines for UTF8, UTF16 and UTF32 versions of the XML parser - which are then, upon modification, checked into: https://github.com/davidbien/xmlpinc
This as well requires the nearly latest versions of MSVC or clang. Once again: There is a lack of documentation.
I don't use boost in these libraries - preferring not to have a dependency on it.
I also published: https://github.com/davidbien/bienutil
Which contains a lot of stuff from year 2000, but also contains some new stuff which is pretty cool:
1. An actually performant and memory-conservative implementation of a Van Emde Boas Tree: https://github.com/davidbien/bienutil/blob/master/_vebtree.h
2. An "exponential chunked array" (misnamed as "logarray.h") that uses a single piece of memory initially: https://github.com/davidbien/bienutil/blob/master/_logarray.h
3. A bunch of other stuff that I wrote back in 2000 since there wasn't much available back then in terms of C++ utility templates.
There is a testbed for the dgraph impl but I haven't yet converted them to CMAKE/googletest.
There is also a testbed for the vebtree impl but once again not converted to CMAKE/googletest. (I only have so many fingers).
Anyway, I'd like to know what people think.
The XML parser is meant to be fully compliant with XML Version 1.0 and meant to be a development environment that can be used to extend to full compatibility.
I am currently working on a Parser Generator Template Library (think replacement for yacc or bison) that will work with my LEX replacement and allow use of the LEX terminals in the EBNF for the parser specification (which will again be encoding using C++ overridden operators in a namespace).
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk