Name Modified Size InfoDownloads / Week
Parent folder
Tutorials 2015-02-01
Moritz2_Linux_2015_01_03.zip 2015-01-03 3.4 MB
ReadMe_2015_01_03.txt 2015-01-03 20.8 kB
src_Moritz2.zip 2015-01-03 339.0 kB
Moritz2_WIN32_2015_01_03.zip 2015-01-03 2.9 MB
Totals: 5 Items   6.6 MB 1
Moritz 2.0.02 Distribution 

Copyright (C) 2004-2015 by Eckard Klotz. 

Permission to use, copy, modify, and distribute this software and its 
documentation under the terms of the GNU General Public License is hereby 
granted. No representations are made about the suitability of this software for
any purpose. It is provided "as is" without express or implied warranty. 
See the GNU General Public License for more details. 

Documents produced by Moritz are derivative works derived from the input used in
their production; they are not affected by this license. 

As help-tool for Doxygen (www.Doxygen.org) Moritz was original designed as a 
source-code analysing program that generates nassi-shneiderman diagrams of the 
functions and methods. But this version may also be used to analyse other 
xml-content to generate data-tables or other files.

Nativly this diagrams are stored as html-files. Moritz may be also used to 
gnerate dot-scripts. Thus it is possible to genarate real graphics by using dot 
from the graphviz-toolkit (www.graphviz.org). The output of Moritz may be 
included in a documentation generated by Doxygen via commands like htmlinclude
or dotfile.

The old Moritz has no own source parser and uses the xml-output of an other parser-
program as base-information. But this new designed version of Moritz comes along
with on own parser-tool named abc2xml formaly known as MuLanPa 
(www.sourceforge.net/projects/mulanpa/) that analyses the source-code to generate
xml-files wich  represent the algorithm and data-structure of the source.
abc2xml will be configured by external grammar-description. Thus it may be may be 
used for several programming-languages. the binary of Moritz itself has also a new
name xml2abc to make clearer what it does


abc2xml and xml2abc are console- or terminal-application which have to be started
via command-line. Both programs are controled by an external configuration-
files like a grammar-specification that describes the programming-language, a 
snipet-specification that describes the diagram-scripts and xml-defined 
configurations of the behaviour-details. 

You can find more information under "www.sourceforge.net/projects/moritz/" 
use the forum. 


This Distribution contains 4 sub-directories: 

src		: example sources
xml		: input-files for xml2abc
nsd		: html diagram-output of xml2abc
des		: additional html diagram-output of xml2abc




First Steps


1. Start the bat/sh-file named MxMrtz. It should a start demo-run of abc2xml and 
   xml2abc. If this process ends successfully you can find an xml-output of 
   abc2xml in the folder xm and the html-output of Moritz in the folder nsd.

3. Copy your own sources in to the folder src and delete the original example-
   sources or rename their file-attachments. Look in to the folder nsd to watch
   the results.

Command-Line Arguments

Command-Line arguments are used to give Moritz some base-informations about the
directories and file which should be used .


The following arguments has to been used without an own configuration-file:
DP[destination-path] 	destination-path of the created diagrams


The following argument tells the both binaries to use another configuration-file:
CF[configuration-file] 	file with detail-configurations default are abc2xml_cfg.xml 
                        and xml2abc_cfg.xml


The following arguments may be used to override the equal information in the 
used configuration-file:
DP[destination-path] 	destination-path of the created diagrams


Here are some examples:

abc2xml  DP.\xml\ CFabc2xml_cfg.xml > abc2xml.txt
xml2abc  DP.\nsd\ CFxml2abc_cfg.xm  > xml2abc.txt

This win32-example starts abc2xml to create xml-files at "ROOT\xml" and 
xml2abc  to create nassi-sheiderman-files at "ROOT\nsd". The 
resource-path is the home-directory of Moritz. 

abc2xml CFhome:/project/config/abc2xml_cfg.xml
xml2abc CFhome:/project/config/xml2abc_cfg.xml

This linux-example starts abc2xml and xml2abc with the own configuration-files 
in the directory "home:/project/config". All other informations are placed in
this configuration file.



If you have an other operation-sytem you have to download the source-files and 
compile them on your system you have change the bat-file into a shell-script of
your system also.









Using the help argument of xml2abc 

Moritz offers a help-argument to provide online information 
 
 
 
 xml2abc                 -> general program-information 
 xml2abc help            -> shows this text 
 xml2abc help All        -> shows all help-information (rerout it into a file!) 
 xml2abc help Resources  -> general overview about the neded resource-files 
 xml2abc help Arguments  -> general overview about the comand-line arguments 
 xml2abc help DP         -> describes the destination-path argument 
 xml2abc help CF         -> describes the configuration-file argument 
 xml2abc help SF         -> describes the source-file argument 
 xml2abc help CP         -> describes the additional configuration-path argument 







To build xml2abc 1.9.y the following files has to be used:

src\
    diverse\ 
            cpp\
              app_tool.cpp 
              String_imp.cpp 
            h\         
              app_tool.h 
              String_imp.h 
    Moritz2\ 
           cpp\
             cmnd_dict_xml.cpp
             cmnd_srcdata.cpp
             cmnd_stack_strg.cpp
             cmnd_parser.cpp
             command.cpp
             main.cpp
             gen_nsd.cpp
             snippet.cpp
           h\
             cmnd_dict_xml.h
             cmnd_srcdata.h
             cmnd_stack_strg.h
             cmnd_parser.h
             command.h
             moritz2.h
             gen_nsd.h
             snippet.h
    MuLanPa\
           cpp\
            action.cpp
           h\
            action.h
            prs_tpdef.h
           process\
                 cpp\
                    notation.cpp
                    ntn_spirit.cpp
                    process.cpp
                    transform.cpp
                    trn_source.cpp
                 h\
                    notation.h
                    ntn_spirit.h
                    process.h
                    transform.h
                    trn_source.h
                    trn_line.h
    tool_xml\
                    TiXmlNode_ao.cpp
                    TiXmlNode_ao.h
                    TiXml_ao.cpp
                    TiXml_ao.h


xml2abc 1.9.y is a common console-application but 2 special libraries are
necessary.

1.TinyXml:http://sourceforge.net/projects/tinyxml/(currently used Version: 2.6.2)
TinyXml supports all xml-operations done by xml2abc. It comes along as a couple 
of source- and header-files. I don't use them in a precompiled version, thus all 
nearly all c-files of TinyXml are part of the normal compilation of xml2abc and 
the search-path to the location of its headers has to be set. But don't try to 
compile the source-file named "xmltest.cpp", because this contains an own main-
function but no library-content. For the compiler the define "TIXML_USE_STL" has 
to be set, since this is the special mode of the library used for xml2abc.

The class TiXmlNode the already knows the methode TiXmlNode::LinkEndChild 
I added 3 new methodes to the class TiXmlNode: 
           cut 
           pasteBeforeChild 
           pasteAfterChild 
All 4 methodes make it possible to move the original nodes without copying them. 
But to make them known the definition of the class TiXmlNode has to be changed by 
edding some lines in the file tinyxml.h all necessary declarations are done in the 
file TiXmlNode_ao.h. Thus it has just to be included at the end of the public part 
of the methode-interface like shown in the following code-snipet (where the numbers
are line-nubers in the source-code):

714  virtual TiXmlNode* Clone() const = 0;
715 
738  virtual bool Accept( TiXmlVisitor* visitor ) const = 0;
739 
740  \*****************************************************************************/
741  #include "TiXmlNode_ao.h"
742  \*
743  inserted by Eckard Klotz to add the following methodes:
744  TiXmlNode* cut(TiXmlNode* cutThis );
745  TiXmlNode* pasteBeforeChild( TiXmlNode* beforeThis, TiXmlNode* addThis );
746  TiXmlNode* pasteAfterChild( TiXmlNode* afterThis, TiXmlNode* addThis );
747  */
748  \*****************************************************************************/
749 
750 
751 
752 
753  protected:



2.Spirit: http://www.boost.org (currently used spirit Version: 2.5.2)
Spirit is the real parser used by abc2xml. Spirit is part of the huge boost-
library (current version 1.55.0).  The current version of Spirit is only available as 
part of the gigantic boost-package. Since I had to learn that some users 
don't feal comfortable to download such a amount of data (over 60Mb as zip-file) 
only for using a small peace of it, I started with the older standalone-version 1.8.5. 
It was a hard work to learn how to deal with it, but it worked until now. 
But now I decided to change to have the chance to optimize my software.
However to use the spirit-library, it is only necessary to set the search-path to the root-
directory of the boost-folder where the folder called "boost" is located. There is no 
need to c/cpp-sources into the list of files to compile.




I'm not very familiar with make-files and use an ide (DevC++, Code-Blocks, 
MinGW Developer-Studio, ...) to manage the project and the compile-process. 

For me the steps to build is to:
 add the sources into the ide-project, 
 add the h-paths as search-pathes
 define 3 over-all preprocessor-constants (wihout-values):
  1. TIXML_USE_STL
  2. either NO_SYSTEM_FOR_FOLDERCREATE or SYSTEM_FOR_FOLDERCREATE
  3. either WINDOWS or LINUX (depending on yotr operation-system, you may define nothing or something else for others )
 and start the build-process
 the use of optimation-options can be reduce the size and/or speed it up 
(The definition of "NO_SYSTEM_FOR_FOLDERCREATE" has to be used if the compiler  supports the c-command "mkdir(c_string)". if not use "SYSTEM_FOR_FOLDERCREATE")
 
After updating my MinGW-Compiler from version 4.4.1 to version 4.7.1 I had to realize that the build binary was very big and slow even the code has not changed. After some reseaches I found the reson in the compiler. I use "TDM-GCC Compiler Suite for Windows". The default installation comes along with SJLJ (setjmp/longjmp) for stack frame unwinding. This results in adding code to every function while compiling to enable a better exception handling. Thus the binary is bigger and iterations or rcursive callings are slower. 
But since it was possible to get an alternative instalation-package I use now the one with Dwarf-2 (DW2). Now i was able to reduce size and runtime again. As far as I understand Dwarf-2 may result in a slower kind of exception-handligng. But to be honest I prefer to have an application that works without exceptions or terminates. Thus please use the forum to post problems if you have some.






Since this distribution contains doxygen-configurations also and with the version 1.9.08 the languages Matlab and Pascal are supported also two third-party filters are added in the associated LangPack folders:

Matlab:
 Filter:   m2cpp.pl 
 Author:   Fabrice
 Internet: http://www.mathworks.com/matlabcentral/fileexchange/25925-using-doxygen-with-matlab

Pascal:
 Filter:   pas2dox.exe 
 Author:   Darren Bowles
 Internet: http://sourceforge.net/projects/pas2dox






 Change-Log
Version 1.9.01 
 Alpha-release of Moritz2
Version 1.9.02 
 Debuging: Under linux pseudo-pathes "." and ".." produces pseudo-output by using tag "FolderName" -> check of file-attactment changed
 Refactoring: Renaming of the binary from Moritz in xml2abc. The new name stands for the conversion of a text written in xml  into (2) a defined language (abc).
 New feature: The reimplementation of special commands to control the shape of the diagrams has stated
Version 1.9.03
 New feature: Grammar and snipets for c and c++. note compilerswitches are not supported yet
Version 1.9.04
 Refactoring: The code of the formaly generator class ("Generator_Nsd") is now relocated into new tool-classes("SnippetExecution" and "Cmnd_XYZ") to make the code better understandable
 Refactoring: The evaluation of the snipet-content will now bedone befor the diagram-generation to make the generation-process it self faster.
 New feature: It is now possible to split the xml-configuration in separat files. Thus it is possible have a project-depending user-part and a more tool-depending background-part.
 New feature: The binary abc2xml is now able to check the change-time of source and destination-files to avoid an unnecessary analiysis if the source has not changed. Thus a analysis of a folder-content is faster if only some files have changed.
 New feature: The binary abc2xml tries to create directories for content to save in files if a simple save is not possible for example isince the destination folder does not exist.
Version 1.9.05
 Refactoring: Moved some methodes and attributes from between classes to eliminate include-cycles
 Refactoring: Intoduced namespaces in sources
Version 1.9.06
 New feature: new snipet-commands make it possible to construct temporary independent xml-trees which contain copies or cut-outs of the xml-trees to analyse or trees defineded by other snipets. This new xml-trees can be used to create diagram-parts like part-trees of the xml-trees to analyse. in the example distribution this will be used to insert links into the diagrams which refer to the documentation created by doxygen.
 Refactoring: help-output in the console-window is reduced now since the amount of program-arguments is reduced.
Version 1.9.07
 Refactoring: As parser-Libry spirit 2.5.2 (now part of boost 1.52.0) or higher is used now instead of spirit 1.8.5. this change has no direct effect for the end-user but for those who want to build the binary by them own.
 Refactoring: The xml-output of the parser-structure (currently only used as internal part of xml2abc) contains now more information to enable a correct generation of rule-diagrams for documentation-purpose.
 Refactoring: To reduce the amount of sources the content of "notation_log.h" was moved into the files "notation.h" and "notation.cpp" 
 Debuging: sometimes newline-characters in parser-rules (currently only used as internal part of xml2abc) were used as part of identifier-names and sometimes not, thus it was not possible to place a rule-name after a line change at the beginning of a new line. space-character, new-line, line-feed and tab characters will be replaced by an empty string in the rule-name
Version 1.9.08
 New feature: As alternative to html-based nassi-shneiderman diagramsmoritz comes now with a an additional configuration to create dot-based uml-activity diagrams.
 New feature: inside of macro sequences the replacement-procedure can be used to replace part-srings of the snipet that should be used as macro-content. This replacements can be used like parameters of the macro where the first value of a replacement-procedure defines the snipet-part to replace and the second value the new text to use instead.
 New feature: Matlab an Pascal will now be supported with examples. Even the support of this programming languages is still under development it is stable enough to be tested by users. Please check it out and post problems or proposals in the forum. 
Version 1.9.09
 Refactoring: For making it easier to have one configuration for different operation-systems (linux, windows, ...)  the use of a replacement-mechanism for separators in pathstrings was implemeted.  
 New feature: To enable a split between the distribution and the user project all file definitions inside the process-konfiguration files located in the folders of LangPack contain now a new atribute called root that contains the name of a tag used in the user-configuration located in the cfg-folder this tag called LangPackPath defines a root-path absolute or relative to the directory used to start the binary.
 New feature: To implement statistical outputs a new procedure is available to count in a xml sub tree child-nodes with a special name.
Version 1.9.10
 New feature: To format the output text fortmat-symbols can be used to control indent and dedent to insert tabyfining spaces or a constant nomber of spaces or special ascii-characters.
Version 1.9.11
 New feature: To save time new procedures can be used to check if the result is already existin and uptodate to skip parts of analysis if not necessary.
 New feature: parser-procedures makes it possible to parse textual parts of the input again to create more detailed xml-content. 
Version 1.9.12
 Debuging: If a file contains only one line with out a line-brake at the end the read-loop is endless since end-of-file will not be detected. -> the read-function reads now the file character for character and counts the readed characters. The loop ends if the number reaches the file-size or end-of-file will be detected.
 Debuging: XML comments lead to crash. -> XML iterations will be done by using TixmlNode instead of TiXmlElement, as first action in the loop a macro checks if the current-element is a xml-comment and forces emidietly the start of the next loop.
Version 1.9.13
 Refactoring: To increase speed of parsing-process the parser-rules will only initialyzed with degug-action if debugging will really be used 
Version 2.0.0
 main-release
Version 2.0.1
 As new feature the following xml procedures where added:
     xmlInsert       insert a new xml child treated as independent xml node
     xmlPrint        print a special part of the given xml element
     ifXmlEqual      define an equal to test on a current xml element to decide if the rest of the current sequence should be processed
     ifXmlUnequal    define an unequal to test on a current xml element to decide if the rest of the current sequence should be processed
     ifXmlExisting   define an equal to test on a current xml element to decide if the rest of the current sequence should be processed
     ifXmlMissing    define an unequal to test on a current xml element to decide if the rest of the current sequence should be processed
 Refactoring: changes in the internal use of name spaces to have a better display in ide symbol browsers
Version 2.0.2
 Debuging: First file in a new created folder will be saved by xml2abc without replacing format symbols -> in the associated function the command to format the output was moved to be used always
 Refactoring: As a preparation of creation of message sequents charts the all language package files where sorted into additional sub-folders to keep a kind of order.
  But for the user this makes it necessary to change the the configuration-files located in the cfg folder a little bit:

   The abc2xml configuration LANGUAGE_abc2xml_cfg.xml contains as last sub node :
    <Process includeFile="./LangPack/ansi_c/abc2xml_Process_LANGUAGE.xml"    root="LangPackPath"/>  
   Since the file abc2xml_Process_LANGUAGE.xml was moved into the sub folder a2x the includeFile has to be extended:
    <Process includeFile="./LangPack/ansi_c/a2x/abc2xml_Process_LANGUAGE.xml"    root="LangPackPath"/> 

   The xml2abc configuration LANGUAGE_xml2abc_cfg_XYZ.xml contains as last sub node :
    <GeneratorNSD includeFile="./LangPack/ansi_c/xml2abc_Process_LANGUAGE_XYZ.xml" root="LangPackPath" />  
   Since the file abc2xml_Process_LANGUAGE.xml was moved into the sub folder x2a_XYZ the includeFile has to be extended:
    <GeneratorNSD includeFile="./LangPack/ansi_c/x2a_nsd/xml2abc_Process_LANGUAGE_XYZ.xml" root="LangPackPath" /> 
    
 New feature: The user is able to define own application arguments which define the content of replacements inside the xml configuration.
 New feature: The destination will be created now if it is not already existing, thus the user has not to prepare it anymore. 
 New feature: For the programming language C/Cpp (other programming languages will follow) dot collections will be created as txt files which contain doxygen special c comments. This txt files can be used as doxygen input files but the file attachment txt has to be added in the FILE_PATTERNS.
 New feature: For the programming language C/Cpp (other programming languages will follow) a new xml2abc configuration package is added in the associated "LangPack" folder to support the generation of message sequence diagrams.
   
 

 
Source: ReadMe_2015_01_03.txt, updated 2015-01-03