diff --git a/wmake/src/Makefile b/wmake/src/Makefile
index 07b2d43562485724a6eda471bd8fd517c22625ac..92a2b087e652283b610752144bffd4644da0d1a4 100644
--- a/wmake/src/Makefile
+++ b/wmake/src/Makefile
@@ -58,7 +58,7 @@ include $(RULES)/$(WM_LINK_LANGUAGE)
 # targets
 #------------------------------------------------------------------------------
 
-all:  $(WMAKE_BIN)/dirToString $(WMAKE_BIN)/wmkdep $(WMAKE_BIN)/wmkdepend
+all:  $(WMAKE_BIN)/dirToString $(WMAKE_BIN)/wmkdep
 
 clean:
 	rm -f $(WMAKE_BIN)/* 2>/dev/null
@@ -76,13 +76,4 @@ $(WMAKE_BIN)/wmkdep: wmkdep.l
 	@rm -f lex.yy.c 2>/dev/null
 
 
-# for bootstrapping - use generated files directly (instead of from .atg file)
-$(WMAKE_BIN)/wmkdepend: wmkdepend.cpp \
-    wmkdependParser.cpp wmkdependScanner.cpp \
-    wmkdependParser.h   wmkdependScanner.h
-	@mkdir -p $(WMAKE_BIN)
-	$(CC) $(c++FLAGS) \
-	     wmkdepend.cpp wmkdependParser.cpp wmkdependScanner.cpp \
-	    -o $(WMAKE_BIN)/wmkdepend
-
 #------------------------------------------------------------------------------
diff --git a/wmake/src/makeParserCode b/wmake/src/makeParserCode
deleted file mode 100755
index 1ddf1576a40e669c206b052c4fb705edd4af6b16..0000000000000000000000000000000000000000
--- a/wmake/src/makeParserCode
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/sh
-#------------------------------------------------------------------------------
-# =========                 |
-# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-#  \\    /   O peration     |
-#   \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
-#    \\/     M anipulation  |
-#------------------------------------------------------------------------------
-# License
-#     This file is part of OpenFOAM.
-#
-#     OpenFOAM is free software: you can redistribute it and/or modify it
-#     under the terms of the GNU General Public License as published by
-#     the Free Software Foundation, either version 3 of the License, or
-#     (at your option) any later version.
-#
-#     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-#     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-#     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-#     for more details.
-#
-#     You should have received a copy of the GNU General Public License
-#     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Script
-#     makeParserCode
-#
-# Description
-#     Use coco-cpp to create parser code
-#
-#------------------------------------------------------------------------------
-cd ${0%/*} || exit 1    # Run from this directory
-
-Script=${0##*/}
-
-binDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/coco-cpp/bin
-frames=$binDir/../share/coco-cpp
-
-[ -d "$binDir" -a -x "$binDir/coco-cpp" ] || {
-    echo "$Script error: no coco-cpp binary found"
-    exit 1
-}
-
-[ -d "$frames" -a -f "$frames/Parser.frame" -a -f "$frames/Scanner.frame" ] || {
-    echo "$Script error: no coco-cpp frames found"
-    exit 1
-}
-
-# Run coco-cpp:
-$binDir/coco-cpp wmkdependParser.atg
-
-echo
-echo Done
-
-#------------------------------------------------------------------------------
diff --git a/wmake/src/wmkdepend.cpp b/wmake/src/wmkdepend.cpp
deleted file mode 100644
index e4fe46c865b9867fe72f472677bfb3805aab37f7..0000000000000000000000000000000000000000
--- a/wmake/src/wmkdepend.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-/*---------------------------------------------------------------------------*\
- =========                   |
- \\      /   F ield          | OpenFOAM: The Open Source CFD Toolbox
-  \\    /    O peration      |
-   \\  /     A nd            | Copyright (C) 2011 OpenFOAM Foundation
-    \\/      M anipulation   |
-------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-Application
-    wmkdepend
-
-Description
-    A fast dependency list generator that emulates the behaviour and
-    output of cpp -M. However, the output contains no duplications and
-    is ~40% faster than cpp.
-
-    The algorithm uses flex to scan for includes and searches the files
-    found.  Each file is entered into a hash table so that files are scanned
-    only once.  This is why this program is faster than cpp.
-
-Usage
-    wmkdepend [ -Idir ... -Idir ] [ -iheader .. -iheader ] filename
-
-\*---------------------------------------------------------------------------*/
-
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-
-#include "wmkdependParser.h"
-
-// Note: since we use the Coco/R default error messages, we must use
-// wide streams for stderr.
-
-void printUsage(const char* message = NULL)
-{
-    if (message)
-    {
-        fwprintf(stderr, L"\nError: %s\n\n", message);
-    }
-
-    fwprintf
-    (
-        stderr,
-        L"Usage: wmkdepend %s filename\nOptions:\n%s\n",
-        "[ -Idir ... -Idir ] [ -iheader .. -iheader ]",
-        "  -Idir        specify include directory\n"
-        "  -iheader     specify header name to ignore\n"
-    );
-}
-
-
-int main(int argc, char* argv[])
-{
-    if (argc == 1)
-    {
-        printUsage("input file not supplied");
-        ::exit(1);
-    }
-
-    for (int i=1; i < argc; i++)
-    {
-        if (strncmp(argv[i], "-I", 2) == 0)
-        {
-            if (strlen(argv[i]) > 2)
-            {
-                std::string dirName(argv[i] + 2);
-
-                // add trailing slash if required
-                if (dirName.rfind('/') != dirName.size()-1)
-                {
-                    dirName += '/';
-                }
-
-                wmake::Parser::includeDirs.push_back(dirName);
-            }
-        }
-        else if (strncmp(argv[i], "-i", 2) == 0)
-        {
-            if (strlen(argv[i]) > 2)
-            {
-                wmake::Parser::visitedFiles.insert(argv[i] + 2);
-            }
-        }
-    }
-
-    std::string sourceFile(argv[argc-1]);
-
-    fwprintf
-    (
-        stderr,
-        L"Making dependency list for source file %s\n",
-        sourceFile.c_str()
-    );
-
-    std::string::size_type basePos = sourceFile.rfind('/');
-    if (basePos == std::string::npos)
-    {
-        basePos = 0;
-    }
-    else
-    {
-        basePos++;
-    }
-
-    std::string::size_type dotPos = sourceFile.rfind('.');
-    if
-    (
-        dotPos == std::string::npos
-     || dotPos == sourceFile.size()-1
-     || dotPos <= basePos
-    )
-    {
-        fwprintf
-        (
-            stderr,
-            L"cannot find extension in source file name %s\n",
-            sourceFile.c_str()
-        );
-        ::exit(1);
-    }
-
-    std::string depFile = sourceFile.substr(0, dotPos);
-    depFile += ".dep";
-
-    const std::string sourceExt = sourceFile.substr(dotPos);
-    if (sourceExt == ".java")
-    {
-        // import directories to ignore
-        wmake::Parser::ignoreDir("java.*");
-        wmake::Parser::ignoreDir("org.*");
-        wmake::Parser::ignoreDir("com.*");
-        wmake::Parser::ignoreDir("sunw.*");
-        wmake::Parser::ignoreDir("sun.*");
-        wmake::Parser::ignoreDir("launcher.*");
-
-        std::cout
-            << "$(CLASSES_DIR)/"
-            << sourceFile.substr(basePos, dotPos - basePos) << ".class: "
-            << depFile << "\n";
-    }
-    else
-    {
-        std::cout
-            << "$(OBJECTS_DIR)/"
-            << sourceFile.substr(basePos, dotPos - basePos) << ".o: "
-            << depFile << "\n";
-    }
-
-
-    wmake::Parser::sourceFile = sourceFile;
-    wmake::Parser::depFile = depFile;
-
-    wmake::Parser::includeFile(sourceFile);
-
-    return 0;
-}
-
-
-
-/*****************************************************************************/
diff --git a/wmake/src/wmkdependParser.atg b/wmake/src/wmkdependParser.atg
deleted file mode 100644
index bf2df41f57f350d42a0b45d3d61754fb5572639c..0000000000000000000000000000000000000000
--- a/wmake/src/wmkdependParser.atg
+++ /dev/null
@@ -1,366 +0,0 @@
-/*---------------------------------------------------------------------------*\
-    Attributed Grammar for Coco/R  (-*- C++ -*- version)
-    compile with:
-        coco-cpp wmkdependParser.atg
-\*---------------------------------------------------------------------------*/
-[copy]
-/*---------------------------------*- C++ -*---------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-@file wmkdependParser.atg
-
-Description
-    An attributed Coco/R grammar to parse C/C++, Fortran and Java files
-    for include and import statements.
-
-SourceFiles
-    generated
-
-\*---------------------------------------------------------------------------*/
-[/copy]
-#include <iostream>
-#include <string>
-#include <list>
-#include <set>
-
-/*---------------------------------------------------------------------------*/
-
-COMPILER wmkdepend
-    // grammar pragmas:
-    $namespace=wmake
-    $prefix=wmkdepend
-    $define=FORCE_UTF8
-
-/*---------------------------------------------------------------------------*/
-private:
-
-    //! Set of (java) directories already visited
-    static std::set<std::string> visitedDirs_;
-
-    //! Replace all '.' with '/'
-    static void dotToSlash(std::string& name);
-
-    //! Import (java) directories
-    static void importDir(const std::string& dirName);
-
-    //! Import (java) file
-    static void importFile(const std::string& name);
-
-public:
-    //! Set of files already visited
-    static std::set<std::string> visitedFiles;
-
-    //! Include directories to search
-    static std::list<std::string> includeDirs;
-
-    //! The name of the top-level source file
-    static std::string sourceFile;
-
-    //! The name of the top-level dep file
-    static std::string depFile;
-
-    //! Add directory to list of visited dirs, thus effectively ignoring it
-    static void ignoreDir(const std::string& name);
-
-    //! Include file
-    static void includeFile(const std::string& name);
-
-/*---------------------------------------------------------------------------*/
-[code]
-#include <sys/types.h>
-#include <dirent.h>
-
-std::set<std::string> Parser::visitedDirs_;
-
-std::set<std::string> Parser::visitedFiles;
-std::list<std::string> Parser::includeDirs;
-std::string Parser::sourceFile;
-std::string Parser::depFile;
-
-
-void Parser::dotToSlash(std::string& name)
-{
-    std::string::size_type start = 0;
-
-    while ((start = name.find('.', start)) != std::string::npos)
-    {
-        name.replace(start, 1, 1, '/');
-        start++;
-    }
-}
-
-
-void Parser::ignoreDir(const std::string& name)
-{
-    visitedDirs_.insert(name);
-}
-
-
-void Parser::includeFile(const std::string& name)
-{
-    if (!visitedFiles.insert(name).second)
-    {
-        return;   // already existed (did not insert)
-    }
-
-    // use stdio and buffering within Coco/R -- (faster)
-    FILE *fh = fopen(name.c_str(), "r");
-    if (fh)
-    {
-        std::cout << depFile << ": " << name << "\n";
-    }
-    else
-    {
-        for
-        (
-            std::list<std::string>::const_iterator iter = includeDirs.begin();
-            iter != includeDirs.end();
-            ++iter
-        )
-        {
-            const std::string pathName = *iter + name;
-
-            fh = fopen(pathName.c_str(), "r");
-            if (fh)
-            {
-                std::cout << depFile << ": " << pathName << "\n";
-                break;
-            }
-        }
-    }
-
-    if (fh)
-    {
-        Scanner scanner(fh);
-        Parser  parser(&scanner);
-
-        parser.Parse();
-        fclose(fh);
-    }
-    else
-    {
-        fwprintf
-        (
-            stderr,
-            L"could not open file %s for source file %s\n",
-            name.c_str(), sourceFile.c_str()
-        );
-
-        // only report the first occurance
-        visitedFiles.insert(name);
-    }
-}
-
-
-void Parser::importFile(const std::string& name)
-{
-    // check if a globbed form was already visited
-    std::string::size_type dotPos = name.find('.');
-    if (dotPos != std::string::npos)
-    {
-        std::string dirGlob = name.substr(0, dotPos);
-        dirGlob += ".*";
-
-        if (visitedDirs_.find(dirGlob) != visitedDirs_.end())
-        {
-            return;
-        }
-    }
-
-    std::string javaFileName = name;
-
-    dotToSlash(javaFileName);
-    javaFileName += ".java";
-
-    includeFile(javaFileName);
-}
-
-
-void Parser::importDir(const std::string& name)
-{
-    if (!visitedDirs_.insert(name).second)
-    {
-        return;   // already existed (did not insert)
-    }
-
-    std::string dirName = name;
-    dotToSlash(dirName);
-
-    DIR *source = opendir(dirName.c_str());
-
-    if (source)
-    {
-        struct dirent *list;
-
-        // Read and parse all the entries in the directory
-        while ((list = readdir(source)) != NULL)
-        {
-            const char* ext = strstr(list->d_name, ".java");
-
-            // avoid matching on something like '.java~'
-            if (ext && strlen(ext) == 5)
-            {
-                std::string pathName = dirName + list->d_name;
-                includeFile(pathName);
-            }
-        }
-
-        closedir(source);
-    }
-    else
-    {
-        fwprintf
-        (
-            stderr,
-            L"could not open directory %s\n",
-            dirName.c_str()
-        );
-        return;
-    }
-}
-
-[/code]
-
-
-/*---------------------------------------------------------------------------*/
-
-CHARACTERS
-    letter    = 'A'..'Z' + 'a'..'z' + '_'.
-    digit     = "0123456789".
-    cr        = '\r'.
-    lf        = '\n'.
-    tab       = '\t'.
-    stringCh  = ANY - '"' - '\\' - cr - lf.
-    printable = '\u0020' .. '\u007e'.
-    java_letter = letter + '$'.
-
-// * * * * * * * * * * * * * * * *  TOKENS * * * * * * * * * * * * * * * * * //
-
-TOKENS
-
-// string
-string =
-    '"' { stringCh | '\\' printable } '"'.
-
-// single-quoted string (eg, Fortran)
-sqstring =
-    '\'' { stringCh | '\\' printable } '\''.
-
-// for java import
-package_name =
-    java_letter { java_letter | digit }
-    { '.' java_letter { java_letter | digit } } .
-
-// for java import
-package_dir =
-    java_letter { java_letter | digit }
-    { '.' java_letter { java_letter | digit } } ".*" .
-
-
-// * * * * * * * * * * *  PRAGMAS / COMMENTS / IGNORE  * * * * * * * * * * * //
-
-COMMENTS FROM "/*" TO "*/" NESTED
-COMMENTS FROM "//" TO lf
-
-IGNORE tab
-
-// * * * * * * * * * * * * * * *  PRODUCTIONS  * * * * * * * * * * * * * * * //
-
-PRODUCTIONS
-
-wmkdepend
-=
-{
-    // C/C++-style includes
-    '#'
-    [
-        "include"
-        [
-            string      (.
-                           if (isUTF8())
-                           {
-                               includeFile(t->toStringUTF8(1, t->length()-2));
-                           }
-                           else
-                           {
-                               includeFile(t->toString(1, t->length()-2));
-                           }
-                         .)
-        ]
-    ]
-    [ ANY { ANY } ] '\n'    // skip trailing junk
-
-    // Fortran-style includes
-  | "include"
-    [
-        sqstring        (.
-                           if (isUTF8())
-                           {
-                               includeFile(t->toStringUTF8(1, t->length()-2));
-                           }
-                           else
-                           {
-                               includeFile(t->toString(1, t->length()-2));
-                           }
-                         .)
-    ]
-    [ ANY { ANY } ] '\n'    // skip trailing junk
-
-        // Java imports
-  | "import"
-    (
-        package_dir     (.
-                           if (isUTF8())
-                           {
-                               importDir(t->toStringUTF8());
-                           }
-                           else
-                           {
-                               importDir(t->toString());
-                           }
-                         .)
-      | package_name    (.
-                           if (isUTF8())
-                           {
-                               importFile(t->toStringUTF8());
-                           }
-                           else
-                           {
-                               importFile(t->toString());
-                           }
-                         .)
-    )
-    ';'
-    [ ANY { ANY } ] '\n'    // skip trailing junk
-
-  | [ ANY { ANY } ] '\n'    // skip any other lines
-
-}
-.
-
-
-/*---------------------------------------------------------------------------*/
-
-END wmkdepend.
-
-// ************************************************************************* //
diff --git a/wmake/src/wmkdependParser.cpp b/wmake/src/wmkdependParser.cpp
deleted file mode 100644
index 0984a56cb91456b7e46ab2a66309dbb630e968de..0000000000000000000000000000000000000000
--- a/wmake/src/wmkdependParser.cpp
+++ /dev/null
@@ -1,575 +0,0 @@
-/*---------------------------------*- C++ -*---------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-@file wmkdependParser.atg
-
-Description
-    An attributed Coco/R grammar to parse C/C++, Fortran and Java files
-    for include and import statements.
-
-SourceFiles
-    generated
-
-\*---------------------------------------------------------------------------*/
-// This file was generated with Coco/R C++ (10 Mar 2010)
-// http://www.ssw.uni-linz.ac.at/coco/
-// with these defines:
-//     - FORCE_UTF8
-
-
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include <cwchar>
-#include <sstream>
-
-#include "wmkdependParser.h"
-
-namespace wmake {
-
-
-#include <sys/types.h>
-#include <dirent.h>
-
-std::set<std::string> Parser::visitedDirs_;
-
-std::set<std::string> Parser::visitedFiles;
-std::list<std::string> Parser::includeDirs;
-std::string Parser::sourceFile;
-std::string Parser::depFile;
-
-
-void Parser::dotToSlash(std::string& name)
-{
-    std::string::size_type start = 0;
-
-    while ((start = name.find('.', start)) != std::string::npos)
-    {
-        name.replace(start, 1, 1, '/');
-        start++;
-    }
-}
-
-
-void Parser::ignoreDir(const std::string& name)
-{
-    visitedDirs_.insert(name);
-}
-
-
-void Parser::includeFile(const std::string& name)
-{
-    if (!visitedFiles.insert(name).second)
-    {
-        return;   // already existed (did not insert)
-    }
-
-    // use stdio and buffering within Coco/R -- (faster)
-    FILE *fh = fopen(name.c_str(), "r");
-    if (fh)
-    {
-        std::cout << depFile << ": " << name << "\n";
-    }
-    else
-    {
-        for
-        (
-            std::list<std::string>::const_iterator iter = includeDirs.begin();
-            iter != includeDirs.end();
-            ++iter
-        )
-        {
-            const std::string pathName = *iter + name;
-
-            fh = fopen(pathName.c_str(), "r");
-            if (fh)
-            {
-                std::cout << depFile << ": " << pathName << "\n";
-                break;
-            }
-        }
-    }
-
-    if (fh)
-    {
-        Scanner scanner(fh);
-        Parser  parser(&scanner);
-
-        parser.Parse();
-        fclose(fh);
-    }
-    else
-    {
-        fwprintf
-        (
-            stderr,
-            L"could not open file %s for source file %s\n",
-            name.c_str(), sourceFile.c_str()
-        );
-
-        // only report the first occurance
-        visitedFiles.insert(name);
-    }
-}
-
-
-void Parser::importFile(const std::string& name)
-{
-    // check if a globbed form was already visited
-    std::string::size_type dotPos = name.find('.');
-    if (dotPos != std::string::npos)
-    {
-        std::string dirGlob = name.substr(0, dotPos);
-        dirGlob += ".*";
-
-        if (visitedDirs_.find(dirGlob) != visitedDirs_.end())
-        {
-            return;
-        }
-    }
-
-    std::string javaFileName = name;
-
-    dotToSlash(javaFileName);
-    javaFileName += ".java";
-
-    includeFile(javaFileName);
-}
-
-
-void Parser::importDir(const std::string& name)
-{
-    if (!visitedDirs_.insert(name).second)
-    {
-        return;   // already existed (did not insert)
-    }
-
-    std::string dirName = name;
-    dotToSlash(dirName);
-
-    DIR *source = opendir(dirName.c_str());
-
-    if (source)
-    {
-        struct dirent *list;
-
-        // Read and parse all the entries in the directory
-        while ((list = readdir(source)) != NULL)
-        {
-            const char* ext = strstr(list->d_name, ".java");
-
-            // avoid matching on something like '.java~'
-            if (ext && strlen(ext) == 5)
-            {
-                std::string pathName = dirName + list->d_name;
-                includeFile(pathName);
-            }
-        }
-
-        closedir(source);
-    }
-    else
-    {
-        fwprintf
-        (
-            stderr,
-            L"could not open directory %s\n",
-            dirName.c_str()
-        );
-        return;
-    }
-}
-
-
-
-
-//! @cond fileScope
-//
-//  Create by copying str - only used locally
-inline static wchar_t* coco_string_create(const wchar_t* str)
-{
-	const int len = wcslen(str);
-	wchar_t* dst = new wchar_t[len + 1];
-	wcsncpy(dst, str, len);
-	dst[len] = 0;
-	return dst;
-}
-
-
-// Free storage and nullify the argument
-inline static void coco_string_delete(wchar_t* &str)
-{
-	delete[] str;
-	str = NULL;
-}
-//
-//! @endcond
-
-
-// ----------------------------------------------------------------------------
-// Parser Implementation
-// ----------------------------------------------------------------------------
-
-void Parser::SynErr(int n)
-{
-	if (errDist >= minErrDist) errors->SynErr(la->line, la->col, n);
-	errDist = 0;
-}
-
-
-void Parser::SemErr(const std::wstring& msg)
-{
-	if (errDist >= minErrDist) errors->Error(t->line, t->col, msg);
-	errDist = 0;
-}
-
-
-bool Parser::isUTF8() const
-{
-	return scanner && scanner->buffer && scanner->buffer->isUTF8();
-}
-
-
-void Parser::Get()
-{
-	for (;;)
-	{
-		t = la;
-		la = scanner->Scan();
-		if (la->kind <= maxT)
-		{
-			++errDist;
-			break;
-		}
-		if (dummyToken != t)
-		{
-			dummyToken->kind = t->kind;
-			dummyToken->pos = t->pos;
-			dummyToken->col = t->col;
-			dummyToken->line = t->line;
-			dummyToken->next = NULL;
-			coco_string_delete(dummyToken->val);
-			dummyToken->val = coco_string_create(t->val);
-			t = dummyToken;
-		}
-		la = t;
-	}
-}
-
-
-void Parser::Expect(int n)
-{
-	if (la->kind == n)
-	{
-		Get();
-	}
-	else
-	{
-		SynErr(n);
-	}
-}
-
-
-void Parser::ExpectWeak(int n, int follow)
-{
-	if (la->kind == n)
-	{
-		Get();
-	}
-	else
-	{
-		SynErr(n);
-		while (!StartOf(follow))
-		{
-			Get();
-		}
-	}
-}
-
-
-bool Parser::WeakSeparator(int n, int syFol, int repFol)
-{
-	if (la->kind == n)
-	{
-		Get();
-		return true;
-	}
-	else if (StartOf(repFol))
-	{
-		return false;
-	}
-	else
-	{
-		SynErr(n);
-		while (!(StartOf(syFol) || StartOf(repFol) || StartOf(0)))
-		{
-			Get();
-		}
-		return StartOf(syFol);
-	}
-}
-
-
-void Parser::wmkdepend()
-{
-	while (StartOf(1)) {
-		if (la->kind == 5) {
-			Get();
-			if (la->kind == 6) {
-				Get();
-				if (la->kind == 1) {
-					Get();
-					if (isUTF8())
-					{
-					    includeFile(t->toStringUTF8(1, t->length()-2));
-					}
-					else
-					{
-					    includeFile(t->toString(1, t->length()-2));
-					}
-
-				}
-			}
-			if (StartOf(2)) {
-				Get();
-				while (StartOf(3)) {
-					Get();
-				}
-			}
-			Expect(7);
-		} else if (la->kind == 6) {
-			Get();
-			if (la->kind == 2) {
-				Get();
-				if (isUTF8())
-				{
-				    includeFile(t->toStringUTF8(1, t->length()-2));
-				}
-				else
-				{
-				    includeFile(t->toString(1, t->length()-2));
-				}
-
-			}
-			if (StartOf(4)) {
-				Get();
-				while (StartOf(3)) {
-					Get();
-				}
-			}
-			Expect(7);
-		} else if (la->kind == 8) {
-			Get();
-			if (la->kind == 4) {
-				Get();
-				if (isUTF8())
-				{
-				    importDir(t->toStringUTF8());
-				}
-				else
-				{
-				    importDir(t->toString());
-				}
-
-			} else if (la->kind == 3) {
-				Get();
-				if (isUTF8())
-				{
-				    importFile(t->toStringUTF8());
-				}
-				else
-				{
-				    importFile(t->toString());
-				}
-
-			} else SynErr(11);
-			Expect(9);
-			if (StartOf(3)) {
-				Get();
-				while (StartOf(3)) {
-					Get();
-				}
-			}
-			Expect(7);
-		} else {
-			if (StartOf(5)) {
-				Get();
-				while (StartOf(3)) {
-					Get();
-				}
-			}
-			Expect(7);
-		}
-	}
-}
-
-
-
-void Parser::Parse()
-{
-	t = NULL;
-	// might call Parse() twice
-	if (dummyToken) {
-		coco_string_delete(dummyToken->val);
-		delete dummyToken;
-	}
-	dummyToken = new Token(coco_string_create(L"Dummy Token"));
-	la = dummyToken;
-	Get();
-	wmkdepend();
-	Expect(0);  // expect end-of-file automatically added
-}
-
-
-Parser::Parser(Scanner* scan, Errors* err)
-:
-	dummyToken(NULL),
-	deleteErrorsDestruct_(!err),
-	errDist(minErrDist),
-	scanner(scan),
-	errors(err),
-	t(NULL),
-	la(NULL)
-{
-	if (!errors)    // add in default error handling
-	{
-		errors = new Errors();
-	}
-	// user-defined initializations:
-}
-
-
-bool Parser::StartOf(int s)
-{
-	const bool T = true;
-	const bool x = false;
-
-	static const bool set[6][12] =
-	{
-		{T,x,x,x, x,x,x,x, x,x,x,x},
-		{x,T,T,T, T,T,T,T, T,T,T,x},
-		{x,x,T,T, T,T,x,x, T,T,T,x},
-		{x,T,T,T, T,T,T,x, T,T,T,x},
-		{x,T,x,T, T,T,T,x, T,T,T,x},
-		{x,T,T,T, T,x,x,x, x,T,T,x}
-	};
-
-	return set[s][la->kind];
-}
-
-
-Parser::~Parser()
-{
-	if (deleteErrorsDestruct_) { delete errors; } // delete default error handling
-	if (dummyToken) {
-		coco_string_delete(dummyToken->val);
-		delete dummyToken;
-	}
-	// user-defined destruction:
-}
-
-
-// ----------------------------------------------------------------------------
-// Errors Implementation
-// ----------------------------------------------------------------------------
-
-Errors::Errors()
-:
-	count(0)
-{}
-
-
-Errors::~Errors()
-{}
-
-
-void Errors::clear()
-{
-	count = 0;
-}
-
-
-std::wstring Errors::strerror(int n)
-{
-	switch (n) {
-		case 0: return L"EOF expected"; break;
-		case 1: return L"string expected"; break;
-		case 2: return L"sqstring expected"; break;
-		case 3: return L"package_name expected"; break;
-		case 4: return L"package_dir expected"; break;
-		case 5: return L"\"#\" expected"; break;
-		case 6: return L"\"include\" expected"; break;
-		case 7: return L"\"\\n\" expected"; break;
-		case 8: return L"\"import\" expected"; break;
-		case 9: return L"\";\" expected"; break;
-		case 10: return L"??? expected"; break;
-		case 11: return L"invalid wmkdepend"; break;
-		default:
-		{
-			// std::wostringstream buf;  (this typedef might be missing)
-			std::basic_ostringstream<wchar_t> buf;
-			buf << "error " << n;
-			return buf.str();
-		}
-		break;
-	}
-}
-
-
-void Errors::Warning(const std::wstring& msg)
-{
-	fwprintf(stderr, L"%ls\n", msg.c_str());
-}
-
-
-void Errors::Warning(int line, int col, const std::wstring& msg)
-{
-	fwprintf(stderr, L"-- line %d col %d: %ls\n", line, col, msg.c_str());
-}
-
-
-void Errors::Error(int line, int col, const std::wstring& msg)
-{
-	fwprintf(stderr, L"-- line %d col %d: %ls\n", line, col, msg.c_str());
-	count++;
-}
-
-
-void Errors::SynErr(int line, int col, int n)
-{
-	this->Error(line, col, this->strerror(n));
-}
-
-
-void Errors::Exception(const std::wstring& msg)
-{
-	fwprintf(stderr, L"%ls", msg.c_str());
-	::exit(1);
-}
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace
-
-// ************************************************************************* //
diff --git a/wmake/src/wmkdependParser.h b/wmake/src/wmkdependParser.h
deleted file mode 100644
index 2285efaa104ef2f3e052ae51d88565ea58a740a0..0000000000000000000000000000000000000000
--- a/wmake/src/wmkdependParser.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*---------------------------------*- C++ -*---------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-@file wmkdependParser.atg
-
-Description
-    An attributed Coco/R grammar to parse C/C++, Fortran and Java files
-    for include and import statements.
-
-SourceFiles
-    generated
-
-\*---------------------------------------------------------------------------*/
-// This file was generated with Coco/R C++ (10 Mar 2010)
-// http://www.ssw.uni-linz.ac.at/coco/
-// with these defines:
-//     - FORCE_UTF8
-
-
-#ifndef COCO_wmkdependPARSER_H__
-#define COCO_wmkdependPARSER_H__
-
-#include <iostream>
-#include <string>
-#include <list>
-#include <set>
-
-/*---------------------------------------------------------------------------*/
-
-
-
-#include "wmkdependScanner.h"
-
-namespace wmake {
-
-
-/*---------------------------------------------------------------------------*\
-                           Class Errors Declaration
-\*---------------------------------------------------------------------------*/
-//! Parser error handling
-class Errors
-{
-public:
-	int count;      //!< The number of errors detected
-
-	//! Return a string describing the given error code.
-	static std::wstring strerror(int n);
-
-	Errors();               //!< Construct null - start with no errors
-	virtual ~Errors();      //!< Destructor
-	virtual void clear();   //!< Clear the error count
-
-	//! Handle a general warning 'msg'
-	virtual void Warning(const std::wstring& msg);
-	//! Handle a general warning 'msg'
-	virtual void Warning(int line, int col, const std::wstring& msg);
-	//! Handle general error 'msg' (eg, a semantic error)
-	virtual void Error(int line, int col, const std::wstring& msg);
-	//! Handle syntax error 'n', uses strerror for the message, calls Error()
-	virtual void SynErr(int line, int col, int n);
-	//! Handle a general exception 'msg'
-	virtual void Exception(const std::wstring& msg);
-
-}; // Errors
-
-
-
-/*---------------------------------------------------------------------------*\
-                           Class Parser Declaration
-\*---------------------------------------------------------------------------*/
-//! A Coco/R Parser
-class Parser
-{
-	enum {
-		_EOF=0,
-		_string=1,
-		_sqstring=2,
-		_package_name=3,
-		_package_dir=4,
-		maxT = 10    //<! max term (w/o pragmas)
-	};
-	static const int minErrDist = 2; //!< min. distance before reporting errors
-
-	Token *dummyToken;
-	bool deleteErrorsDestruct_; //!< delete the 'errors' member in destructor
-	int  errDist;
-
-	void SynErr(int n);         //!< Handle syntax error 'n'
-	void Get();
-	void Expect(int n);
-	bool StartOf(int s);
-	void ExpectWeak(int n, int follow);
-	bool WeakSeparator(int n, int syFol, int repFol);
-
-public:
-	Scanner *scanner;
-	Errors  *errors;
-
-	Token *t;                   //!< last recognized token
-	Token *la;                  //!< lookahead token
-
-private:
-
-    //! Set of (java) directories already visited
-    static std::set<std::string> visitedDirs_;
-
-    //! Replace all '.' with '/'
-    static void dotToSlash(std::string& name);
-
-    //! Import (java) directories
-    static void importDir(const std::string& dirName);
-
-    //! Import (java) file
-    static void importFile(const std::string& name);
-
-public:
-    //! Set of files already visited
-    static std::set<std::string> visitedFiles;
-
-    //! Include directories to search
-    static std::list<std::string> includeDirs;
-
-    //! The name of the top-level source file
-    static std::string sourceFile;
-
-    //! The name of the top-level dep file
-    static std::string depFile;
-
-    //! Add directory to list of visited dirs, thus effectively ignoring it
-    static void ignoreDir(const std::string& name);
-
-    //! Include file
-    static void includeFile(const std::string& name);
-
-/*---------------------------------------------------------------------------*/
-
-	//! Construct for the specified scanner
-	/*!
-	 * Use the default error handling, or optionally provide an error
-	 * handler, which will not be deleted upon destruction.
-	 */
-	Parser(Scanner* scan, Errors* err = 0);
-	~Parser();
-	void Parse();                          //!< Execute the parse operation
-	void SemErr(const std::wstring& msg);  //!< Handle semantic error
-	bool isUTF8() const;   //!< Return true if scanner buffer is UTF8
-
-	void wmkdepend();
-
-}; // end Parser
-
-} // End namespace
-
-#endif // COCO_wmkdependPARSER_H__
-
-// ************************************************************************* //
diff --git a/wmake/src/wmkdependScanner.cpp b/wmake/src/wmkdependScanner.cpp
deleted file mode 100644
index 5a18f0de39b27bcdbfc32a3bca1233afa8a4fc2c..0000000000000000000000000000000000000000
--- a/wmake/src/wmkdependScanner.cpp
+++ /dev/null
@@ -1,1021 +0,0 @@
-/*---------------------------------*- C++ -*---------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-@file wmkdependParser.atg
-
-Description
-    An attributed Coco/R grammar to parse C/C++, Fortran and Java files
-    for include and import statements.
-
-SourceFiles
-    generated
-
-\*---------------------------------------------------------------------------*/
-// This file was generated with Coco/R C++ (10 Mar 2010)
-// http://www.ssw.uni-linz.ac.at/coco/
-// with these defines:
-//     - FORCE_UTF8
-
-
-#include <sstream>
-
-// io.h and fcntl are used to ensure binary read from streams on windows
-#ifdef _WIN32
-# include <io.h>
-# include <fcntl.h>
-#endif
-
-#include <climits>
-
-#include "wmkdependScanner.h"
-
-// values for the file stream buffering
-#define MIN_BUFFER_LENGTH 1024        // 1KB
-#define MAX_BUFFER_LENGTH (64*MIN_BUFFER_LENGTH)   // 64KB
-// value for the heap management
-#define HEAP_BLOCK_SIZE   (64*1024)   // 64KB
-
-
-namespace wmake {
-
-// * * * * * * * * * * * Miscellaneous String Routines * * * * * * * * * * * //
-
-//
-// string handling, byte character
-//
-
-std::string coco_stdString(const wchar_t* str)
-{
-    return str ? coco_stdString(str, 0, wcslen(str)) : std::string();
-}
-
-
-std::string coco_stdString(const wchar_t* str, unsigned length)
-{
-    return coco_stdString(str, 0, length);
-}
-
-
-std::string coco_stdString(const wchar_t* str, unsigned index, unsigned length)
-{
-    const unsigned len = (str && *str) ? length : 0;
-    std::string dst;
-    dst.reserve(len);
-
-    for (unsigned i = 0; i < len; ++i)
-    {
-        dst += char(str[index+i] & 0xFF);
-    }
-
-    return dst;
-}
-
-
-std::string coco_stdStringUTF8(const wchar_t* str)
-{
-    return str ? coco_stdStringUTF8(str, 0, wcslen(str)) : std::string();
-}
-
-
-std::string coco_stdStringUTF8(const wchar_t* str, unsigned length)
-{
-    return coco_stdStringUTF8(str, 0, length);
-}
-
-
-std::string coco_stdStringUTF8(const wchar_t* str, unsigned index, unsigned length)
-{
-    const unsigned len = (str && *str) ? length : 0;
-    std::string dst;
-    dst.reserve(len);
-
-    for (unsigned i = 0; i < len; ++i)
-    {
-        wchar_t wc = str[index+i];
-
-        if (!(wc & ~0x0000007F))
-        {
-            // 0x00000000 - 0x0000007F [min. 8bit storage, 1-byte encoding)
-            // 0aaaaaaa
-            dst += char(wc);
-        }
-        else if (!(wc & ~0x000007FF))
-        {
-            // 0x00000080 - 0x000007FF [min. 16bit storage, 2-byte encoding]
-            // 110bbbaa 10aaaaaa
-            dst += char(0xC0 | ((wc >> 6) & 0x1F));
-            dst += char(0x80 | ((wc) & 0x3F));
-        }
-        else if (!(wc & ~0x0000FFFF))
-        {
-            // 0x00000800 - 0x0000FFFF [min. 16bit storage, 3-byte encoding]
-            // 1110bbbb 10bbbbaa 10aaaaaa
-            dst += char(0xE0 | ((wc >> 12) & 0x0F));
-            dst += char(0x80 | ((wc >> 6) & 0x3F));
-            dst += char(0x80 | ((wc) & 0x3F));
-        }
-        else if (!(wc & ~0x001FFFFF))
-        {
-            // 0x00010000 - 0x001FFFFF [min. 24bit storage, 4-byte encoding]
-            // 11110ccc 10ccbbbb 10bbbbaa 10aaaaaa
-            dst += char(0xF0 | ((wc >> 18) & 0x07));
-            dst += char(0x80 | ((wc >> 12) & 0x3F));
-            dst += char(0x80 | ((wc >> 6) & 0x3F));
-            dst += char(0x80 | ((wc) & 0x3F));
-        }
-//
-// Not (yet) used - wchar_t storage is limited to 16bit on windows
-// This also corresponds to the unicode BMP (Basic Multilingual Plane)
-//
-//        else if (!(wc & ~0x03FFFFFF))
-//        {
-//            // 0x00200000 - 0x03FFFFFF [min. 32bit storage, 5-byte encoding]
-//            // 111110dd 10cccccc 10ccbbbb 10bbbbaa 10aaaaaa
-//            dst += char(0xF8 | ((wc >> 24) & 0x03));
-//            dst += char(0x80 | ((wc >> 18) & 0x3F));
-//            dst += char(0x80 | ((wc >> 12) & 0x3F));
-//            dst += char(0x80 | ((wc >> 6) & 0x3F));
-//            dst += char(0x80 | ((wc) & 0x3F));
-//        }
-//        else if (!(wc & ~0x7FFFFFFF))
-//        {
-//            // 0x04000000 - 0x7FFFFFFF [min. 32bit storage, 6-byte encoding]
-//            // 1111110d 10dddddd 10cccccc 10ccbbbb 10bbbbaa 10aaaaaa
-//            dst += char(0xFC | ((wc >> 30) & 0x01));
-//            dst += char(0x80 | ((wc >> 24) & 0x3F));
-//            dst += char(0x80 | ((wc >> 18) & 0x3F));
-//            dst += char(0x80 | ((wc >> 12) & 0x3F));
-//            dst += char(0x80 | ((wc >> 6) & 0x3F));
-//            dst += char(0x80 | ((wc) & 0x3F));
-//        }
-//
-        else
-        {
-            // report anything unknown/invalid as replacement character U+FFFD
-            dst += char(0xEF);
-            dst += char(0xBF);
-            dst += char(0xBD);
-        }
-    }
-
-    return dst;
-}
-
-
-// * * * * * * * * * * * *  End of String Routines * * * * * * * * * * * * * //
-
-
-Token::Token(wchar_t* value)
-:
-    kind(0),
-    pos(0),
-    col(0),
-    line(0),
-    val(value),
-    next(NULL)
-{}
-
-
-Token::~Token()
-{}
-
-
-int Token::length() const
-{
-    return val ? wcslen(val) : 0;
-}
-
-
-// ----------------------------------------------------------------------------
-// Buffer Implementation
-// ----------------------------------------------------------------------------
-
-Buffer::Buffer(Buffer* b)
-:
-	buf(b->buf),
-	bufCapacity(b->bufCapacity),
-	bufLen(b->bufLen),
-	bufPos(b->bufPos),
-	bufStart(b->bufStart),
-	fileLen(b->fileLen),
-	cStream(b->cStream),
-	stdStream(b->stdStream),
-	isUserStream_(b->isUserStream_)
-{
-	// avoid accidental deletion on any of these members
-	b->buf = NULL;
-	b->cStream = NULL;
-	b->stdStream = NULL;
-}
-
-
-Buffer::Buffer(const char* chars, int len)
-:
-	buf(new unsigned char[len]),
-	bufCapacity(len),
-	bufLen(len),
-	bufPos(0),
-	bufStart(0),
-	fileLen(len),
-	cStream(NULL),
-	stdStream(NULL),
-	isUserStream_(false)
-{
-	memcpy(this->buf, chars, len*sizeof(char));
-}
-
-
-Buffer::Buffer(const unsigned char* chars, int len)
-:
-	buf(new unsigned char[len]),
-	bufCapacity(len),
-	bufLen(len),
-	bufPos(0),
-	bufStart(0),
-	fileLen(len),
-	cStream(NULL),
-	stdStream(NULL),
-	isUserStream_(false)
-{
-	memcpy(this->buf, chars, len*sizeof(char));
-}
-
-
-Buffer::Buffer(FILE* ifh, bool isUserStream)
-:
-	buf(NULL),
-	bufCapacity(0),
-	bufLen(0),
-	bufPos(0),
-	bufStart(0),
-	fileLen(0),
-	cStream(ifh),
-	stdStream(NULL),
-	isUserStream_(isUserStream)
-{
-// ensure binary read on windows
-#ifdef _WIN32
-	_setmode(_fileno(cStream), _O_BINARY);
-#endif
-
-	if (CanSeek())
-	{
-		fseek(cStream, 0, SEEK_END);
-		fileLen = ftell(cStream);
-		fseek(cStream, 0, SEEK_SET);
-		bufLen = (fileLen < MAX_BUFFER_LENGTH) ? fileLen : MAX_BUFFER_LENGTH;
-		bufStart = INT_MAX; // nothing in the buffer so far
-	}
-
-	bufCapacity = (bufLen > 0) ? bufLen : MIN_BUFFER_LENGTH;
-	buf = new unsigned char[bufCapacity];
-	if (fileLen > 0) SetPos(0);          // setup buffer to position 0 (start)
-	else bufPos = 0; // index 0 is already after the file, thus Pos = 0 is invalid
-	if (bufLen == fileLen && CanSeek()) Close();
-}
-
-
-Buffer::Buffer(std::istream* istr, bool isUserStream)
-:
-	buf(NULL),
-	bufCapacity(0),
-	bufLen(0),
-	bufPos(0),
-	bufStart(0),
-	fileLen(0),
-	cStream(NULL),
-	stdStream(istr),
-	isUserStream_(isUserStream)
-{
-#if _WIN32
-	// TODO: ensure binary read on windows?
-#endif
-}
-
-
-Buffer::~Buffer()
-{
-	Close();
-	if (buf)
-	{
-		delete[] buf;
-		buf = NULL;
-	}
-}
-
-
-void Buffer::Close()
-{
-	if (!isUserStream_)
-	{
-		if (cStream)
-		{
-			fclose(cStream);
-			cStream = NULL;
-		}
-		if (stdStream)
-		{
-			delete stdStream;
-			stdStream = 0;
-		}
-	}
-}
-
-
-int Buffer::Read()
-{
-	if (stdStream)
-	{
-		int ch = stdStream->get();
-		if (stdStream->eof())
-		{
-			return EoF;
-		}
-		return ch;
-	}
-
-	if (bufPos < bufLen) {
-		return buf[bufPos++];
-	}
-	else if (GetPos() < fileLen) {
-		SetPos(GetPos()); // shift buffer start to Pos
-		return buf[bufPos++];
-	}
-	else if (cStream && !CanSeek() && (ReadNextStreamChunk() > 0)) {
-		return buf[bufPos++];
-	}
-
-	return EoF;
-}
-
-bool Buffer::isUTF8() const
-{
-	return false;
-}
-
-int UTF8Buffer::Read()
-{
-	int ch;
-	do {
-		ch = Buffer::Read();
-		// until we find a utf8 start (0xxxxxxx or 11xxxxxx)
-	} while (ch != EoF && ch >= 128 && ((ch & 0xC0) != 0xC0));
-	if (ch < 128 || ch == EoF) {
-		// nothing to do, first 127 chars are identical in ASCII and UTF8
-		// 0xxxxxxx or end of file character
-	}
-	else if ((ch & 0xF0) == 0xF0) {
-		// 0x00010000 - 0x001FFFFF [min. 24bit storage, 4-byte encoding]
-		// 11110ccc 10ccbbbb 10bbbbaa 10aaaaaa
-		// CAUTION: this should probably be disallowed since it overflows
-		// wchar_t on windows and overflows the max (0xFFFF) used here
-		int c1 = ch & 0x07; ch = Buffer::Read();
-		int c2 = ch & 0x3F; ch = Buffer::Read();
-		int c3 = ch & 0x3F; ch = Buffer::Read();
-		int c4 = ch & 0x3F;
-		ch = (((((c1 << 6) | c2) << 6) | c3) << 6) | c4;
-	}
-	else if ((ch & 0xE0) == 0xE0) {
-		// 0x00000800 - 0x0000FFFF [min. 16bit storage, 3-byte encoding]
-		// 1110bbbb 10bbbbaa 10aaaaaa
-		int c1 = ch & 0x0F; ch = Buffer::Read();
-		int c2 = ch & 0x3F; ch = Buffer::Read();
-		int c3 = ch & 0x3F;
-		ch = (((c1 << 6) | c2) << 6) | c3;
-	}
-	else if ((ch & 0xC0) == 0xC0) {
-		// 0x00000080 - 0x000007FF [min. 16bit storage, 2-byte encoding]
-		// 110bbbaa 10aaaaaa
-		int c1 = ch & 0x1F; ch = Buffer::Read();
-		int c2 = ch & 0x3F;
-		ch = (c1 << 6) | c2;
-	}
-	return ch;
-}
-
-
-bool UTF8Buffer::isUTF8() const
-{
-	return true;
-}
-
-
-int Buffer::Peek()
-{
-	int curPos = GetPos();
-	int ch = Read();
-	SetPos(curPos);
-	return ch;
-}
-
-
-int Buffer::GetPos() const
-{
-	if (stdStream)
-	{
-		return stdStream->tellg();
-	}
-
-	return bufPos + bufStart;
-}
-
-
-void Buffer::SetPos(int value)
-{
-	if (stdStream)
-	{
-		stdStream->seekg(value, std::ios::beg);
-		return;
-	}
-
-	if ((value >= fileLen) && cStream && !CanSeek())
-	{
-		// Wanted position is after buffer and the stream
-		// is not seek-able e.g. network or console,
-		// thus we have to read the stream manually till
-		// the wanted position is in sight.
-		while ((value >= fileLen) && (ReadNextStreamChunk() > 0))
-		{}
-	}
-
-	if ((value < 0) || (value > fileLen))
-	{
-		fwprintf(stderr, L"--- buffer out of bounds access, position: %d\n", value);
-		::exit(1);
-	}
-
-	if ((value >= bufStart) && (value < (bufStart + bufLen))) // already in buffer
-	{
-		bufPos = value - bufStart;
-	}
-	else if (cStream) // must be swapped in
-	{
-		fseek(cStream, value, SEEK_SET);
-		bufLen = fread(buf, sizeof(char), bufCapacity, cStream);
-		bufStart = value; bufPos = 0;
-	}
-	else
-	{
-		bufPos = fileLen - bufStart; // make Pos return fileLen
-	}
-}
-
-
-//
-// Read the next chunk of bytes from the stream, increases the buffer
-// if needed and updates the fields fileLen and bufLen.
-// Returns the number of bytes read.
-//
-int Buffer::ReadNextStreamChunk()
-{
-	int freeLen = bufCapacity - bufLen;
-	if (freeLen == 0)
-	{
-		// in the case of a growing input stream
-		// we can neither seek in the stream, nor can we
-		// foresee the maximum length, thus we must adapt
-		// the buffer size on demand.
-		bufCapacity = bufLen * 2;
-		unsigned char *newBuf = new unsigned char[bufCapacity];
-		memcpy(newBuf, buf, bufLen*sizeof(char));
-		delete[] buf;
-		buf = newBuf;
-		freeLen = bufLen;
-	}
-	int read = fread(buf + bufLen, sizeof(char), freeLen, cStream);
-	if (read > 0)
-	{
-		fileLen = bufLen = (bufLen + read);
-		return read;
-	}
-	// end of stream reached
-	return 0;
-}
-
-
-bool Buffer::CanSeek() const
-{
-	return cStream && (ftell(cStream) != -1);
-}
-
-// ----------------------------------------------------------------------------
-// Scanner Implementation
-// ----------------------------------------------------------------------------
-
-Scanner::Scanner(const char* buf, int len)
-:
-	buffer(new Buffer(buf, len))
-{
-	Init();
-}
-
-
-Scanner::Scanner(const unsigned char* buf, int len)
-:
-	buffer(new Buffer(buf, len))
-{
-	Init();
-}
-
-
-Scanner::Scanner(FILE* ifh)
-:
-	buffer(new Buffer(ifh, true))
-{
-	Init();
-}
-
-
-#ifdef _WIN32
-Scanner::Scanner(const std::wstring& fileName)
-{
-	FILE* ifh;
-
-	if ((ifh = _wfopen(fileName.c_str(), L"rb")) == NULL)
-	{
-		fwprintf(stderr, L"--- Cannot open file %ls\n", fileName.c_str());
-		::exit(1);
-	}
-	buffer = new Buffer(ifh, false);
-	Init();
-}
-#endif
-
-
-Scanner::Scanner(const std::string& fileName)
-{
-	FILE* ifh;
-	if ((ifh = fopen(fileName.c_str(), "rb")) == NULL)
-	{
-		fwprintf(stderr, L"--- Cannot open file %s\n", fileName.c_str());
-		::exit(1);
-	}
-	buffer = new Buffer(ifh, false);
-	Init();
-}
-
-
-Scanner::Scanner(std::istream& istr)
-:
-	buffer(new Buffer(&istr, true))
-{
-	Init();
-}
-
-
-Scanner::~Scanner()
-{
-	char* cur = reinterpret_cast<char*>(firstHeap);
-
-#ifdef COCO_DEBUG_HEAP
-	fwprintf(stderr, L"~Scanner:\n");
-#endif
-
-	while (cur)
-	{
-		cur = *(reinterpret_cast<char**>(cur + HEAP_BLOCK_SIZE));
-		free(firstHeap);
-#ifdef COCO_DEBUG_HEAP
-		fwprintf
-		(
-			stderr, L"    free %p -> %p\n",
-			firstHeap,
-			reinterpret_cast<char*>(firstHeap) + HEAP_BLOCK_SIZE
-		);
-#endif
-		firstHeap = cur;
-	}
-	delete[] tval;
-	delete buffer;
-}
-
-
-void Scanner::Init()
-{
-	for (int i = 36; i <= 36; ++i) start.set(i, 7);
-	for (int i = 65; i <= 90; ++i) start.set(i, 7);
-	for (int i = 95; i <= 95; ++i) start.set(i, 7);
-	for (int i = 97; i <= 122; ++i) start.set(i, 7);
-	start.set(34, 1);
-	start.set(39, 4);
-	start.set(35, 11);
-	start.set(10, 12);
-	start.set(59, 13);
-	start.set(Buffer::EoF, -1);
-
-	keywords.set(L"include", 6);
-	keywords.set(L"import", 8);
-
-	tvalLength = 128;
-	tval = new wchar_t[tvalLength]; // text of current token
-	tlen = 0;
-	tval[tlen] = 0;
-
-	// HEAP_BLOCK_SIZE byte heap + pointer to next heap block
-	heap = malloc(HEAP_BLOCK_SIZE + sizeof(void*));
-	firstHeap = heap;
-	heapEnd =
-		reinterpret_cast<void**>
-		(reinterpret_cast<char*>(heap) + HEAP_BLOCK_SIZE);
-	*heapEnd = 0;
-	heapTop = heap;
-	if (sizeof(Token) > HEAP_BLOCK_SIZE)
-	{
-		fwprintf(stderr, L"--- Too small HEAP_BLOCK_SIZE\n");
-		::exit(1);
-	}
-#ifdef COCO_DEBUG_HEAP
-	fwprintf
-	(
-		stderr, L"Scanner::init: firstHeap %p -> %p\n",
-		firstHeap,
-		reinterpret_cast<char*>(firstHeap) + HEAP_BLOCK_SIZE
-	);
-#endif
-
-	pos = -1; line = 1; col = 0;
-	oldEols = 0;
-	NextCh();
-	if (ch == 0xEF)   // check optional byte order mark for UTF-8
-	{                 // Windows-specific magic
-		NextCh(); int ch1 = ch;
-		NextCh(); int ch2 = ch;
-		if (ch1 != 0xBB || ch2 != 0xBF)
-		{
-			fwprintf(stderr, L"Illegal byte order mark at start of file");
-			::exit(1);
-		}
-		Buffer *oldBuf = buffer;
-		buffer = new UTF8Buffer(oldBuf); col = 0;
-		delete oldBuf; oldBuf = NULL;
-		NextCh();
-	}
-	else
-	{
-		// FORCE_UTF8 was defined
-		// use UTF8Buffer without relying on a byte order mark.
-		Buffer *oldBuf = buffer;
-		buffer = new UTF8Buffer(oldBuf); col = 0;
-		delete oldBuf; oldBuf = NULL;
-	}
-
-	pt = tokens = CreateToken(); // first token is a dummy
-}
-
-
-void Scanner::NextCh()
-{
-	if (oldEols > 0)
-	{
-		ch = EOL;
-		oldEols--;
-	}
-	else
-	{
-		pos = buffer->GetPos();
-		ch = buffer->Read(); col++;
-		// replace isolated '\r' by '\n' in order to make
-		// eol handling uniform across Windows, Unix and Mac
-		if (ch == '\r' && buffer->Peek() != '\n') ch = EOL;
-		if (ch == EOL) { line++; col = 0; }
-	}
-}
-
-
-void Scanner::AddCh()
-{
-	if (tlen >= tvalLength)
-	{
-		tvalLength *= 2;
-		wchar_t *newBuf = new wchar_t[tvalLength];
-		memcpy(newBuf, tval, tlen*sizeof(wchar_t));
-		delete[] tval;
-		tval = newBuf;
-	}
-	if (ch != Buffer::EoF)
-	{
-		tval[tlen++] = ch;
-		NextCh();
-	}
-}
-
-
-
-bool Scanner::Comment0() {
-	int level = 1, pos0 = pos, line0 = line, col0 = col;
-	NextCh();
-	if (ch == '/') {
-		NextCh();
-		while (true) {
-			if (ch == 10) {
-				level--;
-				if (level == 0) { oldEols = line - line0; NextCh(); return true; }
-				NextCh();
-			} else if (ch == buffer->EoF) return false;
-			else NextCh();
-		}
-	} else {
-		buffer->SetPos(pos0); NextCh(); line = line0; col = col0;
-	}
-	return false;
-}
-
-bool Scanner::Comment1() {
-	int level = 1, pos0 = pos, line0 = line, col0 = col;
-	NextCh();
-	if (ch == '*') {
-		NextCh();
-		while (true) {
-			if (ch == '*') {
-				NextCh();
-				if (ch == '/') {
-					level--;
-					if (level == 0) { oldEols = line - line0; NextCh(); return true; }
-					NextCh();
-				}
-			} else if (ch == '/') {
-				NextCh();
-				if (ch == '*') {
-					level++; NextCh();
-				}
-			} else if (ch == buffer->EoF) return false;
-			else NextCh();
-		}
-	} else {
-		buffer->SetPos(pos0); NextCh(); line = line0; col = col0;
-	}
-	return false;
-}
-
-void Scanner::CreateHeapBlock()
-{
-	char* cur = reinterpret_cast<char*>(firstHeap);
-
-#ifdef COCO_DEBUG_HEAP
-	fwprintf(stderr, L"CreateHeapBlock: tokens %p\n", tokens);
-#endif
-
-	// release unused blocks
-	while
-	(
-	    (reinterpret_cast<char*>(tokens) < cur)
-	 || (reinterpret_cast<char*>(tokens) > (cur + HEAP_BLOCK_SIZE))
-	)
-	{
-		cur = *(reinterpret_cast<char**>(cur + HEAP_BLOCK_SIZE));
-#ifdef COCO_DEBUG_HEAP
-		fwprintf
-		(
-			stderr, L"    free %p -> %p\n",
-			firstHeap,
-			reinterpret_cast<char*>(firstHeap) + HEAP_BLOCK_SIZE
-		);
-#endif
-		free(firstHeap);
-		firstHeap = cur;
-	}
-
-	// HEAP_BLOCK_SIZE byte heap + pointer to next heap block
-	void* newHeap = malloc(HEAP_BLOCK_SIZE + sizeof(void*));
-	*heapEnd = newHeap;
-	heapEnd =
-		reinterpret_cast<void**>
-		(reinterpret_cast<char*>(newHeap) + HEAP_BLOCK_SIZE);
-	*heapEnd = 0;
-	heap = newHeap;
-	heapTop = heap;
-#ifdef COCO_DEBUG_HEAP
-	fwprintf
-	(
-		stderr, L"    malloc %p -> %p\n",
-		newHeap,
-		reinterpret_cast<char*>(newHeap) + HEAP_BLOCK_SIZE
-	);
-#endif
-}
-
-
-Token* Scanner::CreateToken()
-{
-	const int reqMem = sizeof(Token);
-	if
-	(
-	    (reinterpret_cast<char*>(heapTop) + reqMem)
-	 >= reinterpret_cast<char*>(heapEnd)
-	)
-	{
-		CreateHeapBlock();
-	}
-	// token 'occupies' heap starting at heapTop
-	Token* tok = reinterpret_cast<Token*>(heapTop);
-	// increment past this part of the heap, which is now used
-	heapTop =
-		reinterpret_cast<void*>
-		(reinterpret_cast<char*>(heapTop) + reqMem);
-	tok->val  = NULL;
-	tok->next = NULL;
-	return tok;
-}
-
-
-void Scanner::AppendVal(Token* tok)
-{
-	const int reqMem = (tlen + 1) * sizeof(wchar_t);
-	if
-	(
-	    (reinterpret_cast<char*>(heapTop) + reqMem)
-	 >= reinterpret_cast<char*>(heapEnd)
-	)
-	{
-		if (reqMem > HEAP_BLOCK_SIZE)
-		{
-			fwprintf(stderr, L"--- Too long token value\n");
-			::exit(1);
-		}
-		CreateHeapBlock();
-	}
-
-	// add text value from heap
-	tok->val = reinterpret_cast<wchar_t*>(heapTop);
-
-	// increment past this part of the heap, which is now used
-	heapTop =
-		reinterpret_cast<void*>
-		(reinterpret_cast<char*>(heapTop) + reqMem);
-
-	// copy the currently parsed tval into the token
-	wcsncpy(tok->val, tval, tlen);
-	tok->val[tlen] = '\0';
-}
-
-
-Token* Scanner::NextToken()
-{
-	while
-	(
-	    ch == ' '
-	 || ch == 9
-	) NextCh();
-	if ((ch == '/' && Comment0()) || (ch == '/' && Comment1())) return NextToken();
-	int recKind = noSym;
-	int recEnd = pos;
-	t = CreateToken();
-	t->pos = pos; t->col = col; t->line = line;
-	int state = start.state(ch);
-	tlen = 0; AddCh();
-
-	switch (state)
-	{
-		case -1: { t->kind = eofSym; break; } // NextCh already done
-		case 0: {
-			case_0:
-			if (recKind != noSym) {
-				tlen = recEnd - t->pos;
-				SetScannerBehindT();
-			}
-			t->kind = recKind; break;
-		} // NextCh already done
-		case 1:
-			case_1:
-			if (ch <= 9 || (ch >= 11 && ch <= 12) || (ch >= 14 && ch <= '!') || (ch >= '#' && ch <= '[') || (ch >= ']' && ch <= 65535)) {AddCh(); goto case_1;}
-			else if (ch == '"') {AddCh(); goto case_3;}
-			else if (ch == 92) {AddCh(); goto case_2;}
-			else {goto case_0;}
-		case 2:
-			case_2:
-			if ((ch >= ' ' && ch <= '~')) {AddCh(); goto case_1;}
-			else {goto case_0;}
-		case 3:
-			case_3:
-			{t->kind = 1; break;}
-		case 4:
-			case_4:
-			if (ch <= 9 || (ch >= 11 && ch <= 12) || (ch >= 14 && ch <= '!') || (ch >= '#' && ch <= '&') || (ch >= '(' && ch <= '[') || (ch >= ']' && ch <= 65535)) {AddCh(); goto case_4;}
-			else if (ch == 39) {AddCh(); goto case_8;}
-			else if (ch == 92) {AddCh(); goto case_5;}
-			else {goto case_0;}
-		case 5:
-			case_5:
-			if ((ch >= ' ' && ch <= '~')) {AddCh(); goto case_4;}
-			else {goto case_0;}
-		case 6:
-			case_6:
-			{t->kind = 4; break;}
-		case 7:
-			case_7:
-			recEnd = pos; recKind = 3;
-			if (ch == '$' || (ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') || ch == '_' || (ch >= 'a' && ch <= 'z')) {AddCh(); goto case_7;}
-			else if (ch == '.') {AddCh(); goto case_9;}
-			else {t->kind = 3; std::wstring literal(tval, tlen); t->kind = keywords.get(literal, t->kind); break;}
-		case 8:
-			case_8:
-			recEnd = pos; recKind = 2;
-			if (ch <= 9 || (ch >= 11 && ch <= 12) || (ch >= 14 && ch <= '!') || (ch >= '#' && ch <= '&') || (ch >= '(' && ch <= '[') || (ch >= ']' && ch <= 65535)) {AddCh(); goto case_4;}
-			else if (ch == 39) {AddCh(); goto case_8;}
-			else if (ch == 92) {AddCh(); goto case_5;}
-			else {t->kind = 2; break;}
-		case 9:
-			case_9:
-			if (ch == '$' || (ch >= 'A' && ch <= 'Z') || ch == '_' || (ch >= 'a' && ch <= 'z')) {AddCh(); goto case_10;}
-			else if (ch == '*') {AddCh(); goto case_6;}
-			else {goto case_0;}
-		case 10:
-			case_10:
-			recEnd = pos; recKind = 3;
-			if (ch == '$' || (ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') || ch == '_' || (ch >= 'a' && ch <= 'z')) {AddCh(); goto case_10;}
-			else if (ch == '.') {AddCh(); goto case_9;}
-			else {t->kind = 3; std::wstring literal(tval, tlen); t->kind = keywords.get(literal, t->kind); break;}
-		case 11:
-			{t->kind = 5; break;}
-		case 12:
-			{t->kind = 7; break;}
-		case 13:
-			{t->kind = 9; break;}
-	}
-	AppendVal(t);
-	return t;
-}
-
-
-void Scanner::SetScannerBehindT()
-{
-	buffer->SetPos(t->pos);
-	NextCh();
-	line = t->line; col = t->col;
-	for (int i = 0; i < tlen; i++) NextCh();
-}
-
-
-// get the next token (possibly a token already seen during peeking)
-Token* Scanner::Scan()
-{
-	if (tokens->next == NULL) {
-		pt = tokens = NextToken();
-	}
-	else {
-		pt = tokens = tokens->next;
-	}
-	return tokens;
-}
-
-
-// peek for the next token, ignore pragmas
-Token* Scanner::Peek()
-{
-	do
-	{
-		if (pt->next == NULL)
-		{
-			pt->next = NextToken();
-		}
-		pt = pt->next;
-	} while (pt->kind > maxT);   // skip pragmas
-
-	return pt;
-}
-
-
-// make sure that peeking starts at the current scan position
-void Scanner::ResetPeek()
-{
-	pt = tokens;
-}
-
-
-int Scanner::Line() const
-{
-	return line;
-}
-
-
-void Scanner::Line(int lineNo)
-{
-	line = lineNo;
-}
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace
-
-// ************************************************************************* //
diff --git a/wmake/src/wmkdependScanner.h b/wmake/src/wmkdependScanner.h
deleted file mode 100644
index e82771f6692d9b944f34ddde72f0218b009e2fd1..0000000000000000000000000000000000000000
--- a/wmake/src/wmkdependScanner.h
+++ /dev/null
@@ -1,476 +0,0 @@
-/*---------------------------------*- C++ -*---------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-@file wmkdependParser.atg
-
-Description
-    An attributed Coco/R grammar to parse C/C++, Fortran and Java files
-    for include and import statements.
-
-SourceFiles
-    generated
-
-\*---------------------------------------------------------------------------*/
-// This file was generated with Coco/R C++ (10 Mar 2010)
-// http://www.ssw.uni-linz.ac.at/coco/
-// with these defines:
-//     - FORCE_UTF8
-
-
-#ifndef COCO_wmkdependSCANNER_H__
-#define COCO_wmkdependSCANNER_H__
-
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include <cwchar>
-#include <string>
-#include <fstream>
-#include <iostream>
-
-namespace wmake {
-
-// * * * * * * * * * * * Miscellaneous String Routines * * * * * * * * * * * //
-
-//! Simple lower-case string transformation
-template<class StringT>
-inline void coco_string_toLower(StringT& str)
-{
-	for
-	(
-		typename StringT::iterator iter = str.begin();
-		iter != str.end();
-		++iter
-	)
-	{
-		if (*iter >= 'A' && *iter <= 'Z')
-		{
-			*iter += ('a' - 'A');   // lower-case
-		}
-	}
-}
-
-
-//! Simple string hashing function
-template<class StringT>
-inline int coco_string_hash(const StringT& str)
-{
-	int h = 0;
-	for
-	(
-		typename StringT::const_iterator iter = str.begin();
-		iter != str.end();
-		++iter
-	)
-	{
-		h = (h * 7) ^ *iter;
-	}
-	return h < 0 ? -h : h;
-}
-
-
-//
-// String conversions
-// ~~~~~~~~~~~~~~~~~~
-
-//! Convert wide string to double
-inline double coco_string_toDouble(const wchar_t* str)
-{
-	return str ? wcstod(str, NULL) : 0;
-}
-
-
-//! Convert wide string to long
-inline long coco_string_toLong(const wchar_t* str)
-{
-	return str ? wcstol(str, NULL, 10) : 0;
-}
-
-
-//! A byte string (restricted to 8bit values) by copying str
-std::string coco_stdString(const wchar_t* str);
-
-//! A byte string (restricted to 8bit values) by copying str,
-//! up to length characters long
-std::string coco_stdString(const wchar_t* str, unsigned length);
-
-//! A byte substring (restricted to 8bit values) of str,
-//! starting at index and length characters long
-std::string coco_stdString(const wchar_t* str, unsigned index, unsigned length);
-
-//! A UTF8 byte string by copying str
-std::string coco_stdStringUTF8(const wchar_t* str);
-
-//! A UTF8 byte string by copying str, up to length characters long
-std::string coco_stdStringUTF8(const wchar_t* str, unsigned length);
-
-//! A UTF8 byte substring, starting at index and length characters long
-std::string coco_stdStringUTF8(const wchar_t* str, unsigned index, unsigned length);
-
-// * * * * * * * * * * * *  End of String Routines * * * * * * * * * * * * * //
-
-
-
-/*---------------------------------------------------------------------------*\
-                            Class Token Declaration
-\*---------------------------------------------------------------------------*/
-/*!
- * @brief Scanner Token
- *
- * @note since each Token is allocated by the internal heap mechanism,
- * the destructor does not clean up the val member.
- */
-class Token
-{
-public:
-	int kind;       //!< token kind
-	int pos;        //!< token position in the source text (starting at 0)
-	int col;        //!< token column (starting at 1)
-	int line;       //!< token line (starting at 1)
-	wchar_t* val;   //!< token value (normally allocated from the internal heap)
-	Token *next;    //!< Peek tokens are kept in linked list
-
-	int length() const;    //!< The length of val, or 0 if val is NULL
-
-	//! Construct null Token, optionally with pointer to a string value
-	Token(wchar_t* value = 0);
-	~Token();       //!< Destructor - does not cleanup val member
-
-	//! Token val as byte string (restricted to 8bit values)
-	inline std::string toString() const
-	{
-		return coco_stdString(val);
-	}
-
-	//! Token val as byte string (restricted to 8bit values), up to length characters long
-	inline std::string toString(unsigned length) const
-	{
-		return coco_stdString(val, length);
-	}
-
-	//! Token val as byte string (restricted to 8bit values), starting at index and length characters long
-	inline std::string toString(unsigned index, unsigned length) const
-	{
-		return coco_stdString(val, index, length);
-	}
-
-	//! Token val as UTF8 byte string
-	inline std::string toStringUTF8() const
-	{
-		return coco_stdStringUTF8(val);
-	}
-
-	//! Token val as UTF8 byte string, up to length characters long
-	inline std::string toStringUTF8(unsigned length) const
-	{
-		return coco_stdStringUTF8(val, length);
-	}
-
-	//! Token val as UTF8 byte substring, starting at index and length characters long
-	inline std::string toStringUTF8(unsigned index, unsigned length) const
-	{
-		return coco_stdStringUTF8(this->val, index, length);
-	}
-
-};
-
-
-/*---------------------------------------------------------------------------*\
-                           Class Buffer Declaration
-\*---------------------------------------------------------------------------*/
-/*!
- * @brief Scanner Buffer
- *
- * This Buffer supports the following cases:
- * -# seekable stream (file)
- *    -# whole stream in buffer
- *    -# part of stream in buffer
- * -# non seekable stream (network, console)
- */
-class Buffer
-{
-	unsigned char *buf; //!< input buffer
-	int bufCapacity;    //!< capacity of buf
-	int bufLen;         //!< length of buffer
-	int bufPos;         //!< current position in buffer
-	int bufStart;       //!< position of first byte in buffer relative to input stream
-	int fileLen;        //!< length of input stream (may change if the stream is no file)
-	FILE* cStream;      //!< input stdio stream (normally seekable)
-	std::istream* stdStream;  //!< STL std stream (seekable)
-	bool isUserStream_;       //!< was the stream opened by the user?
-
-	int ReadNextStreamChunk();
-	bool CanSeek() const; //!< true if stream can be seeked otherwise false
-
-protected:
-	Buffer(Buffer*);    //!< for the UTF8Buffer
-
-public:
-	//! max unicode characters is 0xFFFF (16bit storage)
-	static const int MaxChar = 65535;
-	static const int EoF = MaxChar + 1;
-
-	//! Copy buffer contents from constant character string
-	Buffer(const char* chars, int len);
-
-	//! Copy buffer contents from constant character string
-	Buffer(const unsigned char* chars, int len);
-
-	//! @brief Attach buffer to a stdio stream.
-	//! User streams are not closed in the destructor
-	Buffer(FILE*, bool isUserStream = true);
-
-	//! @brief Attach buffer to an STL standard stream
-	//! User streams are not closed in the destructor
-	explicit Buffer(std::istream*, bool isUserStream = true);
-
-	//! Close stream (but not user streams) and free buf (if any)
-	virtual ~Buffer();
-
-	virtual void Close();   //!< Close stream (but not user streams)
-	virtual int Read();     //!< Get character from stream or buffer
-	virtual int Peek();     //!< Peek character from stream or buffer
-
-	virtual int GetPos() const;
-	virtual void SetPos(int value);
-	virtual bool isUTF8() const;  //!< Return false - buffer is not UTF8
-};
-
-
-/*---------------------------------------------------------------------------*\
-                         Class UTF8Buffer Declaration
-\*---------------------------------------------------------------------------*/
-//! A Scanner Buffer variant that decodes UTF-8 characters into 16bit unicode
-class UTF8Buffer : public Buffer
-{
-public:
-	UTF8Buffer(Buffer* b) : Buffer(b) {}
-	virtual int Read();
-	virtual bool isUTF8() const;  //!< Return true - buffer is UTF8
-};
-
-
-/*---------------------------------------------------------------------------*\
-                         Class StartStates Declaration
-\*---------------------------------------------------------------------------*/
-//! maps characters (integers) to start states of tokens as a HashTable
-class StartStates
-{
-	//! HashTable entry
-	struct Entry
-	{
-		int key;        //<! The lookup key
-		int val;        //<! The data
-		Entry *next;    //<! Pointer next Entry in sub-list
-
-		Entry(int k, int v, Entry *n=0)
-		:
-			key(k), val(v), next(n)
-		{}
-	};
-
-	static const int size_ = 128;   //<! fixed HashTable size
-	Entry **table_;
-
-public:
-	StartStates()
-	:
-		table_(new Entry*[size_])
-	{
-		memset(table_, 0, size_*sizeof(Entry*));
-	}
-
-	virtual ~StartStates()
-	{
-		for (int i = 0; i < size_; ++i)
-		{
-			Entry *e = table_[i];
-			while (e)
-			{
-				Entry *next = e->next;
-				delete e;
-				e = next;
-			}
-		}
-		delete[] table_;
-	}
-
-	void set(int key, int val)
-	{
-		const int hashIndex = unsigned(key) % size_;
-		table_[hashIndex] = new Entry(key, val, table_[hashIndex]);
-	}
-
-	int state(int key)
-	{
-		Entry *e = table_[unsigned(key) % size_];
-		while (e && e->key != key) e = e->next;
-		return e ? e->val : 0;
-	}
-};
-
-
-/*---------------------------------------------------------------------------*\
-                         Class KeywordMap Declaration
-\*---------------------------------------------------------------------------*/
-//! maps strings to integers (identifiers to keyword kinds) as a HashTable
-class KeywordMap
-{
-	//! HashTable entry
-	struct Entry
-	{
-		const std::wstring key;  //<! The lookup key
-		int val;                 //<! The data
-		Entry *next;             //<! Pointer next Entry in sub-list
-
-		Entry(const std::wstring& k, int v, Entry *n=0)
-		:
-			key(k), val(v), next(n)
-		{}
-	};
-
-	static const int size_ = 128;   //<! fixed HashTable size
-	Entry **table_;
-
-public:
-	KeywordMap()
-	:
-		table_(new Entry*[size_])
-	{
-		memset(table_, 0, size_*sizeof(Entry*));
-	}
-
-	virtual ~KeywordMap()
-	{
-		for (int i = 0; i < size_; ++i)
-		{
-			Entry *e = table_[i];
-			while (e)
-			{
-				Entry *next = e->next;
-				delete e;
-				e = next;
-			}
-		}
-		delete[] table_;
-	}
-
-	void set(const std::wstring& key, int val)
-	{
-		const int hashIndex = coco_string_hash(key) % size_;
-		table_[hashIndex] = new Entry(key, val, table_[hashIndex]);
-	}
-
-	int get(const std::wstring& key, int defaultVal)
-	{
-		Entry *e = table_[coco_string_hash(key) % size_];
-		while (e && e->key != key) e = e->next;
-		return e ? e->val : defaultVal;
-	}
-};
-
-
-/*---------------------------------------------------------------------------*\
-                           Class Scanner Declaration
-\*---------------------------------------------------------------------------*/
-//! A Coco/R Scanner
-class Scanner
-{
-	static const int maxT = 10;
-	static const int noSym = 10;
-	static const int eofSym = 0;    //!< end-of-file token id
-	static const char EOL = '\n';   //!< end-of-line character
-
-	void *firstHeap;  //!< the start of the heap management
-	void *heap;       //!< the currently active block
-	void *heapTop;    //!< the top of the heap
-	void **heapEnd;   //!< the end of the last heap block
-
-	StartStates start;   //!< A map of start states for particular characters
-	KeywordMap keywords; //!< A hash of keyword literals to token kind
-
-	Token *t;         //!< current token
-	wchar_t *tval;    //!< text of current token
-	int tvalLength;   //!< maximum capacity (length) for tval
-	int tlen;         //!< length of tval
-
-	Token *tokens;    //!< list of tokens already peeked (first token is a dummy)
-	Token *pt;        //!< current peek token
-
-	int ch;           //!< current input character
-	int pos;          //!< byte position of current character
-	int line;         //!< line number of current character
-	int col;          //!< column number of current character
-	int oldEols;      //!< the number of EOLs that appeared in a comment
-
-	void CreateHeapBlock();       //!< add a heap block, freeing unused ones
-	Token* CreateToken();         //!< fit token on the heap
-	void AppendVal(Token* tok);   //!< adjust tok->val to point to the heap and copy tval into it
-	void SetScannerBehindT();
-
-	void Init();      //!< complete the initialization for the constructors
-	void NextCh();    //!< get the next input character into ch
-	void AddCh();     //!< append the character ch to tval
-	bool Comment0();
-	bool Comment1();
-	Token* NextToken();  //!< get the next token
-
-public:
-	//! The scanner buffer
-	Buffer *buffer;
-
-	//! Attach scanner to an existing character buffer
-	Scanner(const char* chars, int len);
-
-	//! Attach scanner to an existing character buffer
-	Scanner(const unsigned char* chars, int len);
-
-	//! Attach scanner to an existing open file handle
-	Scanner(FILE*);
-
-#ifdef _WIN32
-	//! Open a file for reading and attach scanner - Windows only
-	explicit Scanner(const std::wstring& fileName);
-#endif
-
-	//! Open a file for reading and attach scanner
-	explicit Scanner(const std::string& fileName);
-
-	//! Attach scanner to an existing open STL standard stream
-	explicit Scanner(std::istream&);
-
-	~Scanner();        //!< free heap and allocated memory
-	Token* Scan();     //!< get the next token (possibly a token already seen during peeking)
-	Token* Peek();     //!< peek for the next token, ignore pragmas
-	void ResetPeek();  //!< ensure that peeking starts at the current scan position
-
-	int  Line() const;     //!< Return the current line
-	void Line(int lineNo); //!< Define the starting line for reporting errors
-
-}; // end Scanner
-
-} // End namespace
-
-#endif // COCO_wmkdependSCANNER_H__
-
-// ************************************************************************* //