CHANGED: Update license and development notes

This commit is contained in:
Fletcher T. Penney 2017-03-15 12:33:05 -04:00
parent 989358de6e
commit 10421bd50f
3 changed files with 112 additions and 7 deletions

View File

@ -187,8 +187,7 @@ this quickly fell apart in the face of more complex structures such as
recursive lists. After a lot of searching, and *tons* more reading, I
ultimately decided to use a parser generator to handle the task of group lines
into blocks. `parser.y` has the source for this, and it is processed by the
[lemon](http://www.hwaci.com/sw/lemon/) parser generator to create the actual
code.
[lemon] parser generator to create the actual code.
I chose to do this because hand-crafting the block parser would be complex.
The end result would likely be difficult to read and understand, which would
@ -419,16 +418,50 @@ the development of MMD. So there is really not much unit testing built into
the code or used during the development.
# Dependencies/Libraries #
MMD v6 has no external dependencies when compiling, aside from the standard
libraries for C development.
MMD can be compiled without any other tools beside the build system (cmake).
If you want to edit the block parser, you need to modify the `parser.y` file
and process that using [lemon] in order to update the `parser.c` file. The
lemon parser source is actually included in MMD and needs to be compiled to be
used.
If you want to update the lexer or scanner utility functions, then you can
modify `lexer.re` or `scanners.re`. These need to be processed using [re2c],
which has to be installed separately.
MMD v6 makes use of several other projects to improve performance and ease of
use:
* [uthash] -- provides support for hashes to quickly locate specific "objects"
based on text keys. These are used for matching footnotes, links, images and
the like when created with the reference syntax. Much faster than searching
through each one sequentially.
* [miniz] -- provides zip archive support to enable creation of EPUB 3 files,
which are zip files with a specific file structure inside them.
* [argtable3] -- provides more advanced command-line argument processing in a
more cross-platform approach than that used by MMD v5.
[>MMD]: MultiMarkdown
[>MD]: Markdown
[CriticMarkup]: http://criticmarkup.com/
[?PEG]: Parsing Expression Grammar <https://en.wikipedia.org/wiki/Parsing_expression_grammar>
[?AST]: Abstract Syntax Tree <https://en.wikipedia.org/wiki/Abstract_syntax_tree>
[CriticMarkup]: http://criticmarkup.com/
[lemon]: http://www.hwaci.com/sw/lemon/
[re2c]: http://re2c.org/
[uthash]: https://troydhanson.github.io/uthash/
[miniz]: https://github.com/richgel999/miniz
[argtable3]: https://github.com/argtable/argtable3
# Changelog #

View File

@ -13,7 +13,7 @@ text of the license.
uthash library:
Copyright (c) 2005-2016, Troy D. Hanson
Licensed under BSD Revised license
Licensed under Revised BSD license
miniz library:
Copyright 2013-2014 RAD Game Tools and Valve Software
@ -21,6 +21,13 @@ miniz library:
Licensed under the MIT license
argtable3 library:
Copyright (C) 1998-2001,2003-2011,2013 Stewart Heitmann
<sheitmann@users.sourceforge.net>
All rights reserved.
Licensed under the Revised BSD License
## The MIT License ##
@ -42,3 +49,32 @@ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## Revised BSD License ##
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of the <organization> nor the
names of its contributors may be used to endorse or promote
products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT
HOLDER> BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -137,7 +137,7 @@ information.
uthash library:
Copyright (c) 2005-2016, Troy D. Hanson
Licensed under BSD Revised license
Licensed under Revised BSD license
miniz library:
Copyright 2013-2014 RAD Game Tools and Valve Software
@ -145,6 +145,13 @@ information.
Licensed under the MIT license
argtable3 library:
Copyright (C) 1998-2001,2003-2011,2013 Stewart Heitmann
<sheitmann@users.sourceforge.net>
All rights reserved.
Licensed under the Revised BSD License
## The MIT License ##
@ -167,3 +174,32 @@ information.
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## Revised BSD License ##
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of the <organization> nor the
names of its contributors may be used to endorse or promote
products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT
HOLDER> BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE, DATA, OR
PROFITS OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.