/src/test/encoding_reader_test
/src/test/file_reader_test
/src/test/test.txt
+/src/common/OMakefile.omc
+/src/lexer/OMakefile.omc
+/src/string_reader.a
+/test/file_reader_test
+/test/string_reader_test
# You will usually need to modify this file for your project.
# Delete this line once you have configured this file
-eprintln($(CWD)/OMakefile is not configured)
########################################################################
# Phony targets are scoped, so you probably want to declare them first.
#
-# .PHONY: all install clean
-
-########################################################################
-# Subdirectories.
-# You may want to include some subdirectories in this project.
-# If so, define the subdirectory targets and uncomment this section.
-#
-
-.SUBDIRS: src src/test
+.PHONY: all install clean test
########################################################################
# C configuration.
# configuration variables.
#
-# CFLAGS +=
-# ASFLAGS +=
-# LDFLAGS +=
-# INCLUDES +=
-
################################################
# Uncomment the following section if you want
# to build a C program in the current directory.
# .DEFAULT: $(StaticCLibrary $(LIB), $(LIBFILES))
########################################################################
-# OCaml configuration.
-# Delete this section if you are not building OCaml files.
-#
-
-################################################
-# Configuration. You may want to modify any of these configuration
-# variables.
-#
-
-#
-# This project requires ocamlfind (default - false).
-#
-# USE_OCAMLFIND = true
-#
-# OCAMLPACKS[] =
-# pack1
-# pack2
-#
-# if $(not $(OCAMLFIND_EXISTS))
-# eprintln(This project requires ocamlfind, but is was not found.)
-# eprintln(You need to install ocamlfind and run "omake --configure".)
-# exit 1
-
-#
-# Include path
-#
-# OCAMLINCLUDES +=
-
-#
-# Compile native or byte code?
-#
-# The default values are defined as follows:
-#
-# NATIVE_ENABLED = $(OCAMLOPT_EXISTS)
-# BYTE_ENABLED = $(not $(OCAMLOPT_EXISTS))
-
-#
-# Various options
-#
-# OCAMLFLAGS +=
-# OCAMLCFLAGS +=
-# OCAMLOPTFLAGS +=
-# OCAML_LINK_FLAGS +=
-# OCAML_BYTE_LINK_FLAGS +=
-# OCAML_NATIVE_LINK_FLAGS +=
-
-################################################
-# Generated files
-#
-# Workaround for the fact that ocamldep does not pay attention to .mll
-# and .mly files.
-#
-# OCamlGeneratedFiles(parser.ml lexer.ml)
-
-################################################
-# Build an OCaml library
-#
-
-# FILES[] =
-# file1
-# file2
-#
-# LIB = main
-#
-# .DEFAULT: $(OCamlLibrary $(LIB), $(FILES))
-
-################################################
-# Build an OCaml program
+# Subdirectories.
+# You may want to include some subdirectories in this project.
+# If so, define the subdirectory targets and uncomment this section.
#
-# FILES[] =
-# file1
-# file2
-#
-# PROGRAM =
-# OCAML_LIBS +=
-# OCAML_CLIBS +=
-# OCAML_OTHER_LIBS +=
-# OCAML_LIB_FLAGS +=
-#
-# .DEFAULT: $(OCamlProgram $(PROGRAM), $(FILES))
+.SUBDIRS: src test
# If you decide to modify this file, note that it uses exactly
# the same syntax as the OMakefile.
#
-
+# OMAKEPATH[] += "/cygdrive/d/Program Files/OMake/lib/omake"
#
# Include the standard installed configuration files.
# Any of these can be deleted if you are not using them,
#
DefineCommandVars()
+ROOTDIR = $(dir .)
+SRCDIR = $(dir src)
+CXXFLAGS = -Wall -fno-default-inline -g
+ASFLAGS +=
+LDFLAGS +=
+INCLUDES += $(ROOTDIR)
+
#
# Include the OMakefile in this directory.
#
-.SUBDIRS: src src/test
+.SUBDIRS: src test src/common src/lexer
'configure.in'
],
{
- 'AM_PROG_F77_C_O' => 1,
'_LT_AC_TAGCONFIG' => 1,
- 'm4_pattern_forbid' => 1,
+ 'AM_PROG_F77_C_O' => 1,
'AC_INIT' => 1,
- '_AM_COND_IF' => 1,
+ 'm4_pattern_forbid' => 1,
'AC_CANONICAL_TARGET' => 1,
- 'AC_SUBST' => 1,
+ '_AM_COND_IF' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
- 'AC_FC_SRCEXT' => 1,
+ 'AC_SUBST' => 1,
'AC_CANONICAL_HOST' => 1,
+ 'AC_FC_SRCEXT' => 1,
'AC_PROG_LIBTOOL' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
- 'AC_CONFIG_LINKS' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
- 'm4_sinclude' => 1,
+ 'AC_CONFIG_LINKS' => 1,
'LT_SUPPORTED_TAG' => 1,
+ 'm4_sinclude' => 1,
'AM_MAINTAINER_MODE' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'_m4_warn' => 1,
'AC_CANONICAL_BUILD' => 1,
'AC_FC_FREEFORM' => 1,
'AH_OUTPUT' => 1,
- '_AM_SUBST_NOTMAKE' => 1,
'AC_CONFIG_AUX_DIR' => 1,
- 'sinclude' => 1,
- 'AM_PROG_CC_C_O' => 1,
+ '_AM_SUBST_NOTMAKE' => 1,
'm4_pattern_allow' => 1,
- 'AC_CANONICAL_SYSTEM' => 1,
+ 'AM_PROG_CC_C_O' => 1,
+ 'sinclude' => 1,
'AM_CONDITIONAL' => 1,
+ 'AC_CANONICAL_SYSTEM' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'm4_include' => 1,
'configure.in'
],
{
- 'AM_PROG_F77_C_O' => 1,
'_LT_AC_TAGCONFIG' => 1,
- 'm4_pattern_forbid' => 1,
+ 'AM_PROG_F77_C_O' => 1,
'AC_INIT' => 1,
- 'AC_CANONICAL_TARGET' => 1,
+ 'm4_pattern_forbid' => 1,
'_AM_COND_IF' => 1,
- 'AC_CONFIG_LIBOBJ_DIR' => 1,
+ 'AC_CANONICAL_TARGET' => 1,
'AC_SUBST' => 1,
- 'AC_CANONICAL_HOST' => 1,
+ 'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_FC_SRCEXT' => 1,
+ 'AC_CANONICAL_HOST' => 1,
'AC_PROG_LIBTOOL' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
- 'AC_CONFIG_LINKS' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
- 'LT_SUPPORTED_TAG' => 1,
+ 'AC_CONFIG_LINKS' => 1,
'm4_sinclude' => 1,
+ 'LT_SUPPORTED_TAG' => 1,
'AM_MAINTAINER_MODE' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'_m4_warn' => 1,
'AC_CANONICAL_BUILD' => 1,
'AC_FC_FREEFORM' => 1,
'AH_OUTPUT' => 1,
- 'AC_CONFIG_AUX_DIR' => 1,
'_AM_SUBST_NOTMAKE' => 1,
- 'AM_PROG_CC_C_O' => 1,
- 'm4_pattern_allow' => 1,
+ 'AC_CONFIG_AUX_DIR' => 1,
'sinclude' => 1,
- 'AM_CONDITIONAL' => 1,
+ 'm4_pattern_allow' => 1,
+ 'AM_PROG_CC_C_O' => 1,
'AC_CANONICAL_SYSTEM' => 1,
+ 'AM_CONDITIONAL' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'm4_include' => 1,
config.status:777: creating src/test/Makefile
config.status:1051: executing depfiles commands
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by utakata config.status 0.0.1, which was
+generated by GNU Autoconf 2.63. Invocation command line was
+
+ CONFIG_FILES =
+ CONFIG_HEADERS =
+ CONFIG_LINKS =
+ CONFIG_COMMANDS =
+ $ ./config.status src/test/Makefile depfiles
+
+on vaio_z
+
+config.status:777: creating src/test/Makefile
+config.status:1051: executing depfiles commands
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by utakata config.status 0.0.1, which was
+generated by GNU Autoconf 2.63. Invocation command line was
+
+ CONFIG_FILES =
+ CONFIG_HEADERS =
+ CONFIG_LINKS =
+ CONFIG_COMMANDS =
+ $ ./config.status src/Makefile
+
+on vaio_z
+
+config.status:777: creating src/Makefile
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by utakata config.status 0.0.1, which was
+generated by GNU Autoconf 2.63. Invocation command line was
+
+ CONFIG_FILES =
+ CONFIG_HEADERS =
+ CONFIG_LINKS =
+ CONFIG_COMMANDS =
+ $ ./config.status src/test/Makefile depfiles
+
+on vaio_z
+
+config.status:777: creating src/test/Makefile
+config.status:1051: executing depfiles commands
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by utakata config.status 0.0.1, which was
+generated by GNU Autoconf 2.63. Invocation command line was
+
+ CONFIG_FILES =
+ CONFIG_HEADERS =
+ CONFIG_LINKS =
+ CONFIG_COMMANDS =
+ $ ./config.status Makefile
+
+on vaio_z
+
+config.status:777: creating Makefile
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by utakata config.status 0.0.1, which was
+generated by GNU Autoconf 2.63. Invocation command line was
+
+ CONFIG_FILES =
+ CONFIG_HEADERS =
+ CONFIG_LINKS =
+ CONFIG_COMMANDS =
+ $ ./config.status src/test/Makefile depfiles
+
+on vaio_z
+
+config.status:777: creating src/test/Makefile
+config.status:1051: executing depfiles commands
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
-########################################################################
-# Permission is hereby granted, free of charge, to any person
-# obtaining a copy of this file, to deal in the File without
-# restriction, including without limitation the rights to use,
-# copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the File, and to permit persons to whom the
-# File is furnished to do so, subject to the following condition:
-#
-# THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE FILE OR
-# THE USE OR OTHER DEALINGS IN THE FILE.
+INCLUDES += $(ROOTDIR)
-########################################################################
-# The standard OMakefile.
-# You will usually need to modify this file for your project.
+.DEFAULT: $(StaticCLibrary string_reader, string_reader)
+ $(StaticCLibrary file_reader, file_reader)
-# Delete this line once you have configured this file
-eprintln($(CWD)/OMakefile is not configured)
-
-########################################################################
-# Phony targets are scoped, so you probably want to declare them first.
-#
-
-# .PHONY: all install clean
-
-########################################################################
-# Subdirectories.
-# You may want to include some subdirectories in this project.
-# If so, define the subdirectory targets and uncomment this section.
-#
-
-.SUBDIRS: test
-
-########################################################################
-# C configuration.
-# Delete this section if you are not building C files.
-#
-
-################################################
-# Configuration. You might want to modify any of these
-# configuration variables.
-#
-
-# CFLAGS +=
-# ASFLAGS +=
-# LDFLAGS +=
-# INCLUDES +=
-
-################################################
-# Uncomment the following section if you want
-# to build a C program in the current directory.
-#
-
-# CFILES[] =
-# file1
-# main
-#
-# MAIN = main
-#
-# .DEFAULT: $(CProgram $(MAIN), $(CFILES))
-
-################################################
-# Uncomment the following section if you want to build a C library
-# in the current directory.
-#
-
-# LIBFILES[] =
-# file1
-# file2
-#
-# LIB = libxxx
-#
-# .DEFAULT: $(StaticCLibrary $(LIB), $(LIBFILES))
-
-########################################################################
-# OCaml configuration.
-# Delete this section if you are not building OCaml files.
-#
-
-################################################
-# Configuration. You may want to modify any of these configuration
-# variables.
-#
-
-#
-# This project requires ocamlfind (default - false).
-#
-# USE_OCAMLFIND = true
-#
-# OCAMLPACKS[] =
-# pack1
-# pack2
-#
-# if $(not $(OCAMLFIND_EXISTS))
-# eprintln(This project requires ocamlfind, but is was not found.)
-# eprintln(You need to install ocamlfind and run "omake --configure".)
-# exit 1
-
-#
-# Include path
-#
-# OCAMLINCLUDES +=
-
-#
-# Compile native or byte code?
-#
-# The default values are defined as follows:
-#
-# NATIVE_ENABLED = $(OCAMLOPT_EXISTS)
-# BYTE_ENABLED = $(not $(OCAMLOPT_EXISTS))
-
-#
-# Various options
-#
-# OCAMLFLAGS +=
-# OCAMLCFLAGS +=
-# OCAMLOPTFLAGS +=
-# OCAML_LINK_FLAGS +=
-# OCAML_BYTE_LINK_FLAGS +=
-# OCAML_NATIVE_LINK_FLAGS +=
-
-################################################
-# Generated files
-#
-# Workaround for the fact that ocamldep does not pay attention to .mll
-# and .mly files.
-#
-# OCamlGeneratedFiles(parser.ml lexer.ml)
-
-################################################
-# Build an OCaml library
-#
-
-# FILES[] =
-# file1
-# file2
-#
-# LIB = main
-#
-# .DEFAULT: $(OCamlLibrary $(LIB), $(FILES))
-
-################################################
-# Build an OCaml program
-#
-
-# FILES[] =
-# file1
-# file2
-#
-# PROGRAM =
-# OCAML_LIBS +=
-# OCAML_CLIBS +=
-# OCAML_OTHER_LIBS +=
-# OCAML_LIB_FLAGS +=
-#
-# .DEFAULT: $(OCamlProgram $(PROGRAM), $(FILES))
+.SUBDIR: common lexer
\ No newline at end of file
--- /dev/null
+INCLUDES += $(ROOTDIR)
+
+.DEFAULT: $(StaticCLibrary string_reader, string_reader)
+ $(StaticCLibrary file_reader, file_reader)
// を離れた時点で、解体を行うことを保証するものです。
// scoped_ptrはコピー不可能であるため、スコープが限定されており、
// 初期化以外は行われないデータにおいて利用されるべきです。
-#ifndef _UTAKATA_SRC_COMMON_PROXY_PTR_H_
-#define _UTAKATA_SRC_COMMON_PROXY_PTR_H_
+#ifndef _UTAKATA_SRC_COMMON_SCOPED_PTR_H_
+#define _UTAKATA_SRC_COMMON_SCOPED_PTR_H_
#include "src/common/uncopyable.h"
};
}; // end of namespace utility
-#endif /* _HOME_DERUI_DEVELOP_UTAKATA_SRC_COMMON_SCOPED_PTR_H_ */
+#endif /* _UTAKATA_SRC_COMMON_SCOPED_PTR_H_ */
}
// 宣言のコメントを参照してください。
+void textarrayformat::TextArrayGenerator::Punctuate(const std::string& block) {
+ if (block != separator_) {
+ if (!now_block_.empty()) {
+ Punctuate();
+ }
+ Append(block);
+ Punctuate();
+ }
+}
+
+// 宣言のコメントを参照してください。
void textarrayformat::TextArrayReader::SplitBlock(
const textarrayformat::TextArrayGenerator& generator) {
std::string separator = generator.separator();
- const std::string& all_text = generator.construct_text().substr(
+ const std::string all_text = generator.construct_text().substr(
separator.size());
size_t pos = std::string::npos;
size_t begin = 0;
- while ((pos = all_text.find(separator, begin + 1)) != std::string::npos) {
+ while ((pos = all_text.find(separator, begin)) != std::string::npos) {
text_blocks_.push_back(all_text.substr(begin, pos - begin));
- begin += pos + separator.size();
- }
-
- if (begin < all_text.size()) {
- text_blocks_.push_back(all_text.substr(begin));
+ begin = pos + separator.size();
}
}
// 空文字のブロックとして登録が行われます。
void Punctuate();
+ // 渡されたブロックを一つのブロックとして登録します。
+ // まだPunctuateが実行されていないブロックがあった場合、そのブロックを
+ // 先にPunctuateしてから、blockの登録が行われます。
+ // ただし、渡されたブロックがseparatorと同一である場合、何も行いません。
+ void Punctuate(const std::string& block);
+
// 構築済の文字列を返します。ここで返される文字列は、
// 先頭行がseparatorであり、それ以降の各ブロックがseparator行で
// 区切られたブロックとなっています。
// Generatorから取得した構築済ブロック文字列を、それぞれのブロック文字列に
// 分解します。Generatorが変化しない限り、何度実行しても同一の結果が
// 得られます。
+ // 実行後、以前の結果は破棄されます。
void SplitBlock(const TextArrayGenerator& generator);
private:
#include "src/exception_std.h"
#include "src/exception_macro.h"
#include "src/transcoder_interface.h"
+#include "src/unicode.h"
namespace reader = utakata::reader;
namespace exception = utakata::exception;
+namespace unicode = utakata::unicode;
// 1文字に相当するバイト数は、現在保持しているITranscoderに依存します。
unsigned int reader::EncodingReader::Read() {
void reader::EncodingReader::CheckInternal() const {
if (reader_ == NULL) {
THROW_EXCEPTION_(exception::NullException,
- "reader is must to set valid pointer");
+ unicode::Convert("reader is must to set valid pointer"));
}
if (transcoder_.get() == NULL) {
THROW_EXCEPTION_(exception::NullException,
- "transcoder is must to set valid pointer");
+ unicode::Convert(
+ "transcoder is must to set valid pointer"));
}
}
#include <exception>
#include <string>
#include "src/common/smart_ptr.h"
+#include "src/unicode.h"
namespace utakata {
// 前回送出された例外が存在しない場合のコンストラクタです。
// すべての値が指定されることが必須となります。
Exception(const unicode::UniString& message, const ExceptionInfo& info) :
- previous_exception_(), message_(message), info_(info) {}
+ previous_exception_(),
+ message_(new unicode::UniString(message)), info_(info) {}
// 前回送出された例外を記録します。
Exception(const Exception& prev, const unicode::UniString& message,
#include <algorithm>
#include "src/file_reader.h"
-
#include "src/exception_macro.h"
namespace reader = utakata::reader;
+namespace unicode = utakata::unicode;
reader::FileReader::~FileReader() {
if (file_pointer_ != NULL) {
unsigned int byte = 0;
if (::fread(&byte, 1, 1, file_pointer_) != 1) {
THROW_EXCEPTION_(reader::IOException,
- "file read error `" + filename_ + "`");
+ unicode::Convert("file read error `" + filename_ + "`"));
}
++pos_;
void reader::FileReader::CheckOpened() {
if (!IsOpened()) {
THROW_EXCEPTION_(reader::IOException,
- "file isn't open yet! `" + filename_ + "`");
+ unicode::Convert("file isn't open yet! `" + filename_ + "`"));
}
}
void reader::FileReader::CheckEOF() {
if (IsEof()) {
THROW_EXCEPTION_(reader::EndOfDeviceException,
- "end of File `" + filename_ + "`");
+ unicode::Convert("end of File `" + filename_ + "`"));
}
}
--- /dev/null
+INCLUDES += $(ROOTDIR)
+
+.DEFAULT: $(StaticCLibrary string_reader, string_reader)
+ $(StaticCLibrary file_reader, file_reader)
return false;
}
-// 宣言のコメントを参照してください。
+
+#define DEFINE_CHARACTOR_SPEC_(VALUE, NAME, CODE) \
+ const std::pair<unicode::UniString, int> lexer::CharactorNames::VALUE( \
+ std::pair<unicode::UniString, int>(unicode::Convert(NAME), CODE))
+
+DEFINE_CHARACTOR_SPEC_(kNul, "nul", 0x0000);
+DEFINE_CHARACTOR_SPEC_(kAlarm, "alarm", 0x0007);
+DEFINE_CHARACTOR_SPEC_(kBackspace, "backspace", 0x0008);
+DEFINE_CHARACTOR_SPEC_(kTab, "tab", 0x0009);
+DEFINE_CHARACTOR_SPEC_(kLinefeed, "linefeed", 0x000A);
+DEFINE_CHARACTOR_SPEC_(kNewline, "newline", 0x000A);
+DEFINE_CHARACTOR_SPEC_(kVTab, "vtab", 0x000B);
+DEFINE_CHARACTOR_SPEC_(kPage, "page", 0x000C);
+DEFINE_CHARACTOR_SPEC_(kReturn, "return", 0x000D);
+DEFINE_CHARACTOR_SPEC_(kEsc, "esc", 0x001B);
+DEFINE_CHARACTOR_SPEC_(kSpace, "space", 0x0020);
+DEFINE_CHARACTOR_SPEC_(kDelete, "delete", 0x007F);
+
+#undef DEFINE_CHARACTOR_SPEC_
+
+// 関数内部のみで有効な検索用のmapを定義しています。
+// 初回のみ、各定数を登録します。
bool lexer::CharactorNames::IsCharactorName(const unicode::UniString& string) {
-
+ InitializeCharactorMap();
+ std::map<unicode::UniString, int>::iterator find_result =
+ charactor_map_.find(string);
+ return find_result == charactor_map.end();
}
-unsigned int lexer::CharactorNames::GetCodeFromCharactorName(
+// 宣言のコメントを参照してください。
+bool lexer::CharactorNames::GetCodeFromCharactorName(
const unicode::UniString& string) {
+ InitializeCharactorMap();
+ std::map<unicode::UniString, int>::iterator find_result =
+ charactor_map_.find(string);
+ if (find_result != charactor_map_.end()) {
+ return find_result;
+ }
+ return unicode::UniChar::kOutOfUnicode;
+}
+// 文字とunicodeのmapを初期化します。
+void lexer::CharactorNames::InitializeCharactorMap() {
+ if (charactor_map_.empty()) {
+ charactor_map_.insert(kNul);
+ charactor_map_.insert(kAlarm);
+ charactor_map_.insert(kBackspace);
+ charactor_map_.insert(kTab);
+ charactor_map_.insert(kLinefeed);
+ charactor_map_.insert(kNewline);
+ charactor_map_.insert(kVTab);
+ charactor_map_.insert(kPage);
+ charactor_map_.insert(kReturn);
+ charactor_map_.insert(kEsc);
+ charactor_map_.insert(kSpace);
+ charactor_map_.insert(kDelete);
+ }
}
// 宣言のコメントを参照してください。
}
// 宣言のコメントを参照してください。
+lexer::ILexerDispatchTerm* lexer::CharactorLexer::GetTerm() const {
+ return new lexer::CharactorDispatchTerm();
+}
+
+// 宣言のコメントを参照してください。
void lexer::CharactorLexer::ConvertCharactorNameToCode(
const unicode::UniString& string, unicode::UniChar* code) {
if (!lexer::CharactorNames::IsCharactorName(string)) {
virtual bool IsDispatch(const unicode::UniString& string) const;
};
-struct CharactorNames {
- // charactor name の固定値です。それぞれ固有の値ですので、
- // 定数として定義しています。
- static const std::string kNUL = "nul";
- static const std::string kALARM = "alarm";
- static const std::string kBACKSPACE = "backspace";
- static const std::string kTAB = "tab";
- static const std::string kLINEFEED = "linefeed";
- static const std::string kNEWLINE = "newline";
- static const std::string kVTAB = "vtab";
- static const std::string kPAGE = "page";
- static const std::string kRETURN = "return";
- static const std::string kESC = "esc";
- static const std::string kSPACE = "space";
- static const std::string kDELETE = "delete";
+class CharactorNames {
+ // Schemeの文字名に関係する処理及び定数をまとめたクラスです。
+ // このクラスはstaticのみが存在しています。
+ public:
+ // charactor nameと対応するUnicode値の固定値を列挙します。
+ static const std::pair<unicode::UniString, int> kNul;
+ static const std::pair<unicode::UniString, int> kAlarm;
+ static const std::pair<unicode::UniString, int> kBackspace;
+ static const std::pair<unicode::UniString, int> kTab;
+ static const std::pair<unicode::UniString, int> kLinefeed;
+ static const std::pair<unicode::UniString, int> kNewline;
+ static const std::pair<unicode::UniString, int> kVTab;
+ static const std::pair<unicode::UniString, int> kPage;
+ static const std::pair<unicode::UniString, int> kReturn;
+ static const std::pair<unicode::UniString, int> kEsc;
+ static const std::pair<unicode::UniString, int> kSpace;
+ static const std::pair<unicode::UniString, int> kDelete;
// 渡されたstringがCharctor Nameであるかどうかを判別します。
// ここで許可されるCharactor Nameは次の通りです。
// 渡されたunicodeの内容と一致するunicodeを返します。
// CharactorNameに該当しない場合、0x11ffffが返されます。
// 0x11ffffは、unicode:UniChar::kOutOfUnicodeとして定義されています。
- static unsigned int GetCodeFromCharactorName(
- const unicode::UniString& string);
+ static int GetCodeFromCharactorName(const unicode::UniString& string);
+
+ private:
+
+ // 検索用mapを初期化します。この初期化の際には、このクラスで宣言されている
+ // 定数を利用します。
+ static void InitializeCharactorMap();
+
+ // 文字名と文字に対応するunicodeを保持するmapです。
+ // いずれかの関数が実行された際に一度だけ初期化が行われます。
+ static std::map<unicode::UniString, int> charactor_map_;
};
class CharactorLexer : public IPartsOfLexer {
void ConvertHexValueToCode(const unicode::UniString& string,
unicode::UniChar* code);
};
+
+class CharactorLexerFactory : public ILexerFactory {
+ // CharactorLexerをIPartsOfLexerとして生成するファクトリです。
+ public:
+ CharactorLexerFactory() {}
+ virtual ~CharactorLexerFactory() {}
+
+ // ChractorLexerを新たに割り当てて返します。
+ // 返されたインスタンスは、取得側で開放する必要があります。
+ virtual IPartsOfLexer* Create() const {return new CharactorLexer();}
+};
}
}
-// lexer内部で利用されるデリミタ
+// lexer内部で利用されるデリミタ群
//
// lexer::Lexer内部で利用される、各非終端記号及び終端記号を定義
// しています。
// 各デリミタは、unicode::UniCharを渡すことで、各非終端記号、及び
// 終端記号であるかを表すような関数オブジェクトとしてのみ振舞います。
-// 判定のために複数文字列が必要であるデータについては、StreamReader
+// 判定のために複数文字列が必要であるデータについては、例外的にStreamReader
// へのconstではないポインタを渡す必要があります。
// (これはsmart_ptrによって隠蔽されます。)
//
--- /dev/null
+// Scheme構文におけるidentityの解釈を行うlexerを定義します。
+// ここで定義されるLexerは、IPartsOfLexerから派生しており、以下の条件
+// をもってLexerDispatcherからディスパッチします。
+// :検索対象文字列の先頭 = <identifier> の場合:
+#ifndef _UTAKATA_SRC_LEXER_IDENTIFIER_LEXER_H_
+#define _UTAKATA_SRC_LEXER_IDENTIFIER_LEXER_H_
+
+#include "src/lexer/lexer_interface.h"
+
+namespace utakata {
+namespace unicode {
+class UniString;
+class UniChar;
+};
+
+namespace lexeme {
+class ILexeme;
+}
+
+namespace reader {
+class EncodingReader;
+}
+
+namespace lexer {
+class IdentifierDispatchTerm {
+ public:
+ IdentifierDispatchTerm() {}
+ virtual ~IdentifierDispatchTerm() {}
+
+ // ディスパッチを行うかどうかを判定します。
+ virtual bool IsDispatch(const unicode::UniString& string) const;
+};
+
+class IdentifierLexer : public IPartsOfLexer {
+ // Scheme構文における識別子のチェックを行います。
+ // Scheme構文における識別子は、以下の形式を取ります。
+ // ・先頭が次のいずれかである。
+ // ! $ % & * / : < = > ? ^ _ ~ ->
+ // ・識別子全体が以下である。
+ // + - ...
+ // ・先頭に続けた、デリミタ以外のunicode及びinline hex escapeを含めた
+ // 文字。
+ // inline hex escape は \x<hex>;の形式を取ります。
+ // inline hex escapeについては、inline_hex_escape_lexer.h において定義
+ // されているInlineHexEscapeLexerを参照してください。
+ public:
+
+ IdentifierLexer() {}
+ virtual ~IdentifierLexer() {}
+
+ // 読出しストリームへのポインタを受け取って、結果として生成した
+ // ILexemeインターフェースの派生クラスを返します。
+ virtual lexeme::ILexeme* Lex(const unicode::UniString& string,
+ reader::EncodingReader* reader);
+
+ // このIPartOfLexerへとDispatchする条件を記載したDispatchTermを作成して
+ // 返します。返されたポインタは、取得側で削除する必要があります。
+ // 返された値の保持については、utility::scoped_ptrの利用を推奨します。
+ virtual ILexerDispatchTerm* GetTerm() const;
+};
+
+class IdentifierLexerFactory : public ILexerFactory {
+ // IdentifierLexerをIPartsOfLexerとして生成するファクトリです。
+ public:
+ IdentifierLexerFactory() {}
+ virtual ~IdentifierLexerFactory() {}
+
+ // ChractorLexerを新たに割り当てて返します。
+ // 返されたインスタンスは、取得側で開放する必要があります。
+ virtual IPartsOfLexer* Create() const {return new IdentifierLexer();}
+};
+}
+}
+
+#endif /* _UTAKATA_SRC_LEXER_IDENTIFIER_LEXER_H_ */
// 返された値の保持については、utility::scoped_ptrの利用を推奨します。
virtual ILexerDispatchTerm* GetTerm() const;
};
+
+class StringLexerFactory : public ILexerFactory {
+ // StringLexerをIPartOfLexerのポインタで返すファクトリです。
+ // このファクトリは、Lexerから利用されることが想定されています。
+ public:
+
+ // StringLexerを生成して返します。
+ // 返されたインスタンスは、取得側で開放する必要があります。
+ virtual IPartsOfLexer* Create() const {return new StringLexer();}
+};
}
}
#include <string>
#include <vector>
#include "src/exception.h"
-#include "src/unicode,h"
+#include "src/unicode.h"
namespace utakata {
#include <vector>
#include "src/string_reader.h"
#include "src/exception_macro.h"
+#include "src/unicode.h"
namespace reader = utakata::reader;
void reader::StringReader::CheckInternal() {
if (iterator_ == buffer_.end()) {
THROW_EXCEPTION_(reader::EndOfDeviceException,
- "end of String `" + buffer_ + "`");
+ unicode::Convert("end of String `" + buffer_ + "`"));
}
}
+++ /dev/null
-SRCS = utf8_string_test ../utf8_string ../simpletest ../utf8
-TARGET = utf8_string_test
-
-CXXFLAGS += -g -I../common -I.. -Igtest -lgtest -Wall
-LDFLAGS +=
-
-.DEFAULT: $(CXXProgram string_reader_test, ../string_reader)
-
class IReader;
}
+namespace unicode {
+class UniString;
+}
+
namespace transcoder {
class EncodeException : public exception::Exception {
// 例外が発生した場合に返すことが想定されている例外です。
public:
// 表示する文字列と、例外が発生した位置を設定します。
- EncodeException(const std::string& message,
+ EncodeException(const unicode::UniString& message,
const utakata::exception::ExceptionInfo& info) :
Exception(message, info) {}
EncodeException(const utakata::exception::Exception& exception,
- const std::string& message,
+ const unicode::UniString& message,
const utakata::exception::ExceptionInfo& info) :
Exception(exception, message, info) {}
// 例外が発生した場合に返すことが想定されている例外です。
public:
// 表示する文字列と、例外が発生した位置を設定します。
- DecodeException(const std::string& message,
+ DecodeException(const unicode::UniString& message,
const utakata::exception::ExceptionInfo& info) :
Exception(message, info) {}
DecodeException(const utakata::exception::Exception& exception,
- const std::string& message,
+ const unicode::UniString& message,
const utakata::exception::ExceptionInfo& info) :
Exception(exception, message, info) {}
- virtual const char* what() const throw() {reutrn "DecodeException";}
+ virtual const char* what() const throw() {return "DecodeException";}
};
class ITranscoder {
unicode::UniString unicode::Convert(const std::string& target) {
unicode::UniString s;
std::string::const_iterator it = target.begin(), end = target.end();
- for (; it != end; ++it) {
+ for (; it != end;) {
s.Append(UniChar(*it++));
}
return s;
bin_PROGRAMS = string_reader_test$(EXEEXT) file_reader_test$(EXEEXT) \
utf8_transcoder_test$(EXEEXT) unicode_test$(EXEEXT) \
encoding_reader_test$(EXEEXT) type_test$(EXEEXT) \
- textarrayformat_test$(EXEEXT)
+ textarrayformat_test$(EXEEXT) charactor_lexer_test$(EXEEXT)
subdir = src/test
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__installdirs = "$(DESTDIR)$(bindir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
+am_charactor_lexer_test_OBJECTS = textarrayformat.$(OBJEXT) \
+ charactor_lexer_test.$(OBJEXT) gtest-all.$(OBJEXT)
+charactor_lexer_test_OBJECTS = $(am_charactor_lexer_test_OBJECTS)
+charactor_lexer_test_LDADD = $(LDADD)
am_encoding_reader_test_OBJECTS = encoding_reader.$(OBJEXT) \
string_reader.$(OBJEXT) utf8_transcoder.$(OBJEXT) \
- encoding_reader_test.$(OBJEXT) gtest-all.$(OBJEXT)
+ encoding_reader_test.$(OBJEXT) gtest-all.$(OBJEXT) \
+ unicode.$(OBJEXT)
encoding_reader_test_OBJECTS = $(am_encoding_reader_test_OBJECTS)
encoding_reader_test_LDADD = $(LDADD)
am_file_reader_test_OBJECTS = file_reader_test.$(OBJEXT) \
- file_reader.$(OBJEXT) gtest-all.$(OBJEXT)
+ file_reader.$(OBJEXT) gtest-all.$(OBJEXT) unicode.$(OBJEXT)
file_reader_test_OBJECTS = $(am_file_reader_test_OBJECTS)
file_reader_test_LDADD = $(LDADD)
am_string_reader_test_OBJECTS = string_reader_test.$(OBJEXT) \
- string_reader.$(OBJEXT) gtest-all.$(OBJEXT)
+ string_reader.$(OBJEXT) gtest-all.$(OBJEXT) unicode.$(OBJEXT)
string_reader_test_OBJECTS = $(am_string_reader_test_OBJECTS)
string_reader_test_LDADD = $(LDADD)
am_textarrayformat_test_OBJECTS = textarrayformat.$(OBJEXT) \
unicode_test_LDADD = $(LDADD)
am_utf8_transcoder_test_OBJECTS = utf8_transcoder.$(OBJEXT) \
utf8_transcoder_test.$(OBJEXT) string_reader.$(OBJEXT) \
- gtest-all.$(OBJEXT)
+ gtest-all.$(OBJEXT) unicode.$(OBJEXT)
utf8_transcoder_test_OBJECTS = $(am_utf8_transcoder_test_OBJECTS)
utf8_transcoder_test_LDADD = $(LDADD)
DEFAULT_INCLUDES = -I. -I$(top_builddir)
CXXLD = $(CXX)
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-o $@
-SOURCES = $(encoding_reader_test_SOURCES) $(file_reader_test_SOURCES) \
+SOURCES = $(charactor_lexer_test_SOURCES) \
+ $(encoding_reader_test_SOURCES) $(file_reader_test_SOURCES) \
+ $(string_reader_test_SOURCES) $(textarrayformat_test_SOURCES) \
+ $(type_test_SOURCES) $(unicode_test_SOURCES) \
+ $(utf8_transcoder_test_SOURCES)
+DIST_SOURCES = $(charactor_lexer_test_SOURCES) \
+ $(encoding_reader_test_SOURCES) $(file_reader_test_SOURCES) \
$(string_reader_test_SOURCES) $(textarrayformat_test_SOURCES) \
$(type_test_SOURCES) $(unicode_test_SOURCES) \
$(utf8_transcoder_test_SOURCES)
-DIST_SOURCES = $(encoding_reader_test_SOURCES) \
- $(file_reader_test_SOURCES) $(string_reader_test_SOURCES) \
- $(textarrayformat_test_SOURCES) $(type_test_SOURCES) \
- $(unicode_test_SOURCES) $(utf8_transcoder_test_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /cygdrive/c/meadow/develop/utakata/missing --run aclocal-1.10
-AMTAR = ${SHELL} /cygdrive/c/meadow/develop/utakata/missing --run tar
-AUTOCONF = ${SHELL} /cygdrive/c/meadow/develop/utakata/missing --run autoconf
-AUTOHEADER = ${SHELL} /cygdrive/c/meadow/develop/utakata/missing --run autoheader
-AUTOMAKE = ${SHELL} /cygdrive/c/meadow/develop/utakata/missing --run automake-1.10
+ACLOCAL = ${SHELL} /home/derui/develop/utakata/missing --run aclocal-1.10
+AMTAR = ${SHELL} /home/derui/develop/utakata/missing --run tar
+AUTOCONF = ${SHELL} /home/derui/develop/utakata/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/derui/develop/utakata/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/derui/develop/utakata/missing --run automake-1.10
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
CXX = g++
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -g -O2
-CYGPATH_W = cygpath -w
+CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
-EXEEXT = .exe
+EXEEXT =
GREP = /bin/grep
-INSTALL = /bin/install -c
+INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
LIBOBJS =
LIBS =
LTLIBOBJS =
-MAKEINFO = ${SHELL} /cygdrive/c/meadow/develop/utakata/missing --run makeinfo
+MAKEINFO = ${SHELL} /home/derui/develop/utakata/missing --run makeinfo
MKDIR_P = /bin/mkdir -p
OBJEXT = o
PACKAGE = utakata
PACKAGE_NAME = utakata
PACKAGE_STRING = utakata 0.0.1
PACKAGE_TARNAME = utakata
-PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = 0.0.1
PATH_SEPARATOR = :
SET_MAKE =
SHELL = /bin/sh
STRIP =
VERSION = 0.0.1
-abs_builddir = /cygdrive/c/meadow/develop/utakata/src/test
-abs_srcdir = /cygdrive/c/meadow/develop/utakata/src/test
-abs_top_builddir = /cygdrive/c/meadow/develop/utakata
-abs_top_srcdir = /cygdrive/c/meadow/develop/utakata
+abs_builddir = /home/derui/develop/utakata/src/test
+abs_srcdir = /home/derui/develop/utakata/src/test
+abs_top_builddir = /home/derui/develop/utakata
+abs_top_srcdir = /home/derui/develop/utakata
ac_ct_CC = gcc
ac_ct_CXX = g++
am__include = include
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
-install_sh = $(SHELL) /cygdrive/c/meadow/develop/utakata/install-sh
+install_sh = $(SHELL) /home/derui/develop/utakata/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
LC_ALL = C
check_PROGRANS = $(bin_PROGRAMS)
TESTS = $(bin_PROGRAMS)
-string_reader_test_SOURCES = string_reader_test.cpp ../string_reader.cpp gtest/gtest-all.cc
-file_reader_test_SOURCES = file_reader_test.cpp ../file_reader.cpp gtest/gtest-all.cc
-utf8_transcoder_test_SOURCES = ../utf8_transcoder.cpp utf8_transcoder_test.cpp ../string_reader.cpp gtest/gtest-all.cc
+string_reader_test_SOURCES = string_reader_test.cpp ../string_reader.cpp gtest/gtest-all.cc \
+ ../unicode.cpp
+
+file_reader_test_SOURCES = file_reader_test.cpp ../file_reader.cpp gtest/gtest-all.cc \
+ ../unicode.cpp
+
+utf8_transcoder_test_SOURCES = ../utf8_transcoder.cpp utf8_transcoder_test.cpp ../string_reader.cpp gtest/gtest-all.cc \
+ ../unicode.cpp
+
unicode_test_SOURCES = unicode_test.cpp ../unicode.cpp ../utf8_transcoder.cpp ../string_reader.cpp gtest/gtest-all.cc
encoding_reader_test_SOURCES = ../encoding_reader.cpp ../string_reader.cpp ../utf8_transcoder.cpp \
- encoding_reader_test.cpp gtest/gtest-all.cc
+ encoding_reader_test.cpp gtest/gtest-all.cc ../unicode.cpp
type_test_SOURCES = ../type.cpp type_test.cpp gtest/gtest-all.cc
textarrayformat_test_SOURCES = ../common/textarrayformat.cpp textarrayformat_test.cpp gtest/gtest-all.cc
+charactor_lexer_test_SOURCES = ../common/textarrayformat.cpp charactor_lexer_test.cpp gtest/gtest-all.cc
all: all-am
.SUFFIXES:
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+charactor_lexer_test$(EXEEXT): $(charactor_lexer_test_OBJECTS) $(charactor_lexer_test_DEPENDENCIES)
+ @rm -f charactor_lexer_test$(EXEEXT)
+ $(CXXLINK) $(charactor_lexer_test_OBJECTS) $(charactor_lexer_test_LDADD) $(LIBS)
encoding_reader_test$(EXEEXT): $(encoding_reader_test_OBJECTS) $(encoding_reader_test_DEPENDENCIES)
@rm -f encoding_reader_test$(EXEEXT)
$(CXXLINK) $(encoding_reader_test_OBJECTS) $(encoding_reader_test_LDADD) $(LIBS)
distclean-compile:
-rm -f *.tab.c
+include ./$(DEPDIR)/charactor_lexer_test.Po
include ./$(DEPDIR)/encoding_reader.Po
include ./$(DEPDIR)/encoding_reader_test.Po
include ./$(DEPDIR)/file_reader.Po
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+textarrayformat.o: ../common/textarrayformat.cpp
+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT textarrayformat.o -MD -MP -MF $(DEPDIR)/textarrayformat.Tpo -c -o textarrayformat.o `test -f '../common/textarrayformat.cpp' || echo '$(srcdir)/'`../common/textarrayformat.cpp
+ mv -f $(DEPDIR)/textarrayformat.Tpo $(DEPDIR)/textarrayformat.Po
+# source='../common/textarrayformat.cpp' object='textarrayformat.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o textarrayformat.o `test -f '../common/textarrayformat.cpp' || echo '$(srcdir)/'`../common/textarrayformat.cpp
+
+textarrayformat.obj: ../common/textarrayformat.cpp
+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT textarrayformat.obj -MD -MP -MF $(DEPDIR)/textarrayformat.Tpo -c -o textarrayformat.obj `if test -f '../common/textarrayformat.cpp'; then $(CYGPATH_W) '../common/textarrayformat.cpp'; else $(CYGPATH_W) '$(srcdir)/../common/textarrayformat.cpp'; fi`
+ mv -f $(DEPDIR)/textarrayformat.Tpo $(DEPDIR)/textarrayformat.Po
+# source='../common/textarrayformat.cpp' object='textarrayformat.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o textarrayformat.obj `if test -f '../common/textarrayformat.cpp'; then $(CYGPATH_W) '../common/textarrayformat.cpp'; else $(CYGPATH_W) '$(srcdir)/../common/textarrayformat.cpp'; fi`
+
+gtest-all.o: gtest/gtest-all.cc
+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gtest-all.o -MD -MP -MF $(DEPDIR)/gtest-all.Tpo -c -o gtest-all.o `test -f 'gtest/gtest-all.cc' || echo '$(srcdir)/'`gtest/gtest-all.cc
+ mv -f $(DEPDIR)/gtest-all.Tpo $(DEPDIR)/gtest-all.Po
+# source='gtest/gtest-all.cc' object='gtest-all.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gtest-all.o `test -f 'gtest/gtest-all.cc' || echo '$(srcdir)/'`gtest/gtest-all.cc
+
+gtest-all.obj: gtest/gtest-all.cc
+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gtest-all.obj -MD -MP -MF $(DEPDIR)/gtest-all.Tpo -c -o gtest-all.obj `if test -f 'gtest/gtest-all.cc'; then $(CYGPATH_W) 'gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/gtest/gtest-all.cc'; fi`
+ mv -f $(DEPDIR)/gtest-all.Tpo $(DEPDIR)/gtest-all.Po
+# source='gtest/gtest-all.cc' object='gtest-all.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gtest-all.obj `if test -f 'gtest/gtest-all.cc'; then $(CYGPATH_W) 'gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/gtest/gtest-all.cc'; fi`
+
encoding_reader.o: ../encoding_reader.cpp
$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT encoding_reader.o -MD -MP -MF $(DEPDIR)/encoding_reader.Tpo -c -o encoding_reader.o `test -f '../encoding_reader.cpp' || echo '$(srcdir)/'`../encoding_reader.cpp
mv -f $(DEPDIR)/encoding_reader.Tpo $(DEPDIR)/encoding_reader.Po
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o utf8_transcoder.obj `if test -f '../utf8_transcoder.cpp'; then $(CYGPATH_W) '../utf8_transcoder.cpp'; else $(CYGPATH_W) '$(srcdir)/../utf8_transcoder.cpp'; fi`
-gtest-all.o: gtest/gtest-all.cc
- $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gtest-all.o -MD -MP -MF $(DEPDIR)/gtest-all.Tpo -c -o gtest-all.o `test -f 'gtest/gtest-all.cc' || echo '$(srcdir)/'`gtest/gtest-all.cc
- mv -f $(DEPDIR)/gtest-all.Tpo $(DEPDIR)/gtest-all.Po
-# source='gtest/gtest-all.cc' object='gtest-all.o' libtool=no \
+unicode.o: ../unicode.cpp
+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unicode.o -MD -MP -MF $(DEPDIR)/unicode.Tpo -c -o unicode.o `test -f '../unicode.cpp' || echo '$(srcdir)/'`../unicode.cpp
+ mv -f $(DEPDIR)/unicode.Tpo $(DEPDIR)/unicode.Po
+# source='../unicode.cpp' object='unicode.o' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gtest-all.o `test -f 'gtest/gtest-all.cc' || echo '$(srcdir)/'`gtest/gtest-all.cc
+# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unicode.o `test -f '../unicode.cpp' || echo '$(srcdir)/'`../unicode.cpp
-gtest-all.obj: gtest/gtest-all.cc
- $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gtest-all.obj -MD -MP -MF $(DEPDIR)/gtest-all.Tpo -c -o gtest-all.obj `if test -f 'gtest/gtest-all.cc'; then $(CYGPATH_W) 'gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/gtest/gtest-all.cc'; fi`
- mv -f $(DEPDIR)/gtest-all.Tpo $(DEPDIR)/gtest-all.Po
-# source='gtest/gtest-all.cc' object='gtest-all.obj' libtool=no \
+unicode.obj: ../unicode.cpp
+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unicode.obj -MD -MP -MF $(DEPDIR)/unicode.Tpo -c -o unicode.obj `if test -f '../unicode.cpp'; then $(CYGPATH_W) '../unicode.cpp'; else $(CYGPATH_W) '$(srcdir)/../unicode.cpp'; fi`
+ mv -f $(DEPDIR)/unicode.Tpo $(DEPDIR)/unicode.Po
+# source='../unicode.cpp' object='unicode.obj' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gtest-all.obj `if test -f 'gtest/gtest-all.cc'; then $(CYGPATH_W) 'gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/gtest/gtest-all.cc'; fi`
+# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unicode.obj `if test -f '../unicode.cpp'; then $(CYGPATH_W) '../unicode.cpp'; else $(CYGPATH_W) '$(srcdir)/../unicode.cpp'; fi`
file_reader.o: ../file_reader.cpp
$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT file_reader.o -MD -MP -MF $(DEPDIR)/file_reader.Tpo -c -o file_reader.o `test -f '../file_reader.cpp' || echo '$(srcdir)/'`../file_reader.cpp
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o file_reader.obj `if test -f '../file_reader.cpp'; then $(CYGPATH_W) '../file_reader.cpp'; else $(CYGPATH_W) '$(srcdir)/../file_reader.cpp'; fi`
-textarrayformat.o: ../common/textarrayformat.cpp
- $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT textarrayformat.o -MD -MP -MF $(DEPDIR)/textarrayformat.Tpo -c -o textarrayformat.o `test -f '../common/textarrayformat.cpp' || echo '$(srcdir)/'`../common/textarrayformat.cpp
- mv -f $(DEPDIR)/textarrayformat.Tpo $(DEPDIR)/textarrayformat.Po
-# source='../common/textarrayformat.cpp' object='textarrayformat.o' libtool=no \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o textarrayformat.o `test -f '../common/textarrayformat.cpp' || echo '$(srcdir)/'`../common/textarrayformat.cpp
-
-textarrayformat.obj: ../common/textarrayformat.cpp
- $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT textarrayformat.obj -MD -MP -MF $(DEPDIR)/textarrayformat.Tpo -c -o textarrayformat.obj `if test -f '../common/textarrayformat.cpp'; then $(CYGPATH_W) '../common/textarrayformat.cpp'; else $(CYGPATH_W) '$(srcdir)/../common/textarrayformat.cpp'; fi`
- mv -f $(DEPDIR)/textarrayformat.Tpo $(DEPDIR)/textarrayformat.Po
-# source='../common/textarrayformat.cpp' object='textarrayformat.obj' libtool=no \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o textarrayformat.obj `if test -f '../common/textarrayformat.cpp'; then $(CYGPATH_W) '../common/textarrayformat.cpp'; else $(CYGPATH_W) '$(srcdir)/../common/textarrayformat.cpp'; fi`
-
type.o: ../type.cpp
$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT type.o -MD -MP -MF $(DEPDIR)/type.Tpo -c -o type.o `test -f '../type.cpp' || echo '$(srcdir)/'`../type.cpp
mv -f $(DEPDIR)/type.Tpo $(DEPDIR)/type.Po
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o type.obj `if test -f '../type.cpp'; then $(CYGPATH_W) '../type.cpp'; else $(CYGPATH_W) '$(srcdir)/../type.cpp'; fi`
-unicode.o: ../unicode.cpp
- $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unicode.o -MD -MP -MF $(DEPDIR)/unicode.Tpo -c -o unicode.o `test -f '../unicode.cpp' || echo '$(srcdir)/'`../unicode.cpp
- mv -f $(DEPDIR)/unicode.Tpo $(DEPDIR)/unicode.Po
-# source='../unicode.cpp' object='unicode.o' libtool=no \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unicode.o `test -f '../unicode.cpp' || echo '$(srcdir)/'`../unicode.cpp
-
-unicode.obj: ../unicode.cpp
- $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unicode.obj -MD -MP -MF $(DEPDIR)/unicode.Tpo -c -o unicode.obj `if test -f '../unicode.cpp'; then $(CYGPATH_W) '../unicode.cpp'; else $(CYGPATH_W) '$(srcdir)/../unicode.cpp'; fi`
- mv -f $(DEPDIR)/unicode.Tpo $(DEPDIR)/unicode.Po
-# source='../unicode.cpp' object='unicode.obj' libtool=no \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unicode.obj `if test -f '../unicode.cpp'; then $(CYGPATH_W) '../unicode.cpp'; else $(CYGPATH_W) '$(srcdir)/../unicode.cpp'; fi`
-
.cpp.o:
$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-binPROGRAMS
+ ../encoding_reader.cpp ../string_reader.cpp ../unicode.cpp ../lexer/charactor_lexer.cpp ../utf8_transcoder.h
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
# SIBDIRS = .
bin_PROGRAMS = string_reader_test file_reader_test utf8_transcoder_test unicode_test \
- encoding_reader_test type_test textarrayformat_test
+ encoding_reader_test type_test textarrayformat_test charactor_lexer_test
check_PROGRANS = $(bin_PROGRAMS)
TESTS = $(bin_PROGRAMS)
-string_reader_test_SOURCES = string_reader_test.cpp ../string_reader.cpp gtest/gtest-all.cc
-file_reader_test_SOURCES = file_reader_test.cpp ../file_reader.cpp gtest/gtest-all.cc
-utf8_transcoder_test_SOURCES = ../utf8_transcoder.cpp utf8_transcoder_test.cpp ../string_reader.cpp gtest/gtest-all.cc
+string_reader_test_SOURCES = string_reader_test.cpp ../string_reader.cpp gtest/gtest-all.cc \
+ ../unicode.cpp
+file_reader_test_SOURCES = file_reader_test.cpp ../file_reader.cpp gtest/gtest-all.cc \
+ ../unicode.cpp
+utf8_transcoder_test_SOURCES = ../utf8_transcoder.cpp utf8_transcoder_test.cpp ../string_reader.cpp gtest/gtest-all.cc \
+ ../unicode.cpp
unicode_test_SOURCES = unicode_test.cpp ../unicode.cpp ../utf8_transcoder.cpp ../string_reader.cpp gtest/gtest-all.cc
encoding_reader_test_SOURCES = ../encoding_reader.cpp ../string_reader.cpp ../utf8_transcoder.cpp \
- encoding_reader_test.cpp gtest/gtest-all.cc
+ encoding_reader_test.cpp gtest/gtest-all.cc ../unicode.cpp
type_test_SOURCES = ../type.cpp type_test.cpp gtest/gtest-all.cc
textarrayformat_test_SOURCES = ../common/textarrayformat.cpp textarrayformat_test.cpp gtest/gtest-all.cc
+charactor_lexer_test_SOURCES = ../common/textarrayformat.cpp charactor_lexer_test.cpp gtest/gtest-all.cc \
+ ../encoding_reader.cpp ../string_reader.cpp ../unicode.cpp ../lexer/charactor_lexer.cpp ../utf8_transcoder.h
bin_PROGRAMS = string_reader_test$(EXEEXT) file_reader_test$(EXEEXT) \
utf8_transcoder_test$(EXEEXT) unicode_test$(EXEEXT) \
encoding_reader_test$(EXEEXT) type_test$(EXEEXT) \
- textarrayformat_test$(EXEEXT)
+ textarrayformat_test$(EXEEXT) charactor_lexer_test$(EXEEXT)
subdir = src/test
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__installdirs = "$(DESTDIR)$(bindir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
+am_charactor_lexer_test_OBJECTS = textarrayformat.$(OBJEXT) \
+ charactor_lexer_test.$(OBJEXT) gtest-all.$(OBJEXT)
+charactor_lexer_test_OBJECTS = $(am_charactor_lexer_test_OBJECTS)
+charactor_lexer_test_LDADD = $(LDADD)
am_encoding_reader_test_OBJECTS = encoding_reader.$(OBJEXT) \
string_reader.$(OBJEXT) utf8_transcoder.$(OBJEXT) \
- encoding_reader_test.$(OBJEXT) gtest-all.$(OBJEXT)
+ encoding_reader_test.$(OBJEXT) gtest-all.$(OBJEXT) \
+ unicode.$(OBJEXT)
encoding_reader_test_OBJECTS = $(am_encoding_reader_test_OBJECTS)
encoding_reader_test_LDADD = $(LDADD)
am_file_reader_test_OBJECTS = file_reader_test.$(OBJEXT) \
- file_reader.$(OBJEXT) gtest-all.$(OBJEXT)
+ file_reader.$(OBJEXT) gtest-all.$(OBJEXT) unicode.$(OBJEXT)
file_reader_test_OBJECTS = $(am_file_reader_test_OBJECTS)
file_reader_test_LDADD = $(LDADD)
am_string_reader_test_OBJECTS = string_reader_test.$(OBJEXT) \
- string_reader.$(OBJEXT) gtest-all.$(OBJEXT)
+ string_reader.$(OBJEXT) gtest-all.$(OBJEXT) unicode.$(OBJEXT)
string_reader_test_OBJECTS = $(am_string_reader_test_OBJECTS)
string_reader_test_LDADD = $(LDADD)
am_textarrayformat_test_OBJECTS = textarrayformat.$(OBJEXT) \
unicode_test_LDADD = $(LDADD)
am_utf8_transcoder_test_OBJECTS = utf8_transcoder.$(OBJEXT) \
utf8_transcoder_test.$(OBJEXT) string_reader.$(OBJEXT) \
- gtest-all.$(OBJEXT)
+ gtest-all.$(OBJEXT) unicode.$(OBJEXT)
utf8_transcoder_test_OBJECTS = $(am_utf8_transcoder_test_OBJECTS)
utf8_transcoder_test_LDADD = $(LDADD)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
CXXLD = $(CXX)
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-o $@
-SOURCES = $(encoding_reader_test_SOURCES) $(file_reader_test_SOURCES) \
+SOURCES = $(charactor_lexer_test_SOURCES) \
+ $(encoding_reader_test_SOURCES) $(file_reader_test_SOURCES) \
+ $(string_reader_test_SOURCES) $(textarrayformat_test_SOURCES) \
+ $(type_test_SOURCES) $(unicode_test_SOURCES) \
+ $(utf8_transcoder_test_SOURCES)
+DIST_SOURCES = $(charactor_lexer_test_SOURCES) \
+ $(encoding_reader_test_SOURCES) $(file_reader_test_SOURCES) \
$(string_reader_test_SOURCES) $(textarrayformat_test_SOURCES) \
$(type_test_SOURCES) $(unicode_test_SOURCES) \
$(utf8_transcoder_test_SOURCES)
-DIST_SOURCES = $(encoding_reader_test_SOURCES) \
- $(file_reader_test_SOURCES) $(string_reader_test_SOURCES) \
- $(textarrayformat_test_SOURCES) $(type_test_SOURCES) \
- $(unicode_test_SOURCES) $(utf8_transcoder_test_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
LC_ALL = C
check_PROGRANS = $(bin_PROGRAMS)
TESTS = $(bin_PROGRAMS)
-string_reader_test_SOURCES = string_reader_test.cpp ../string_reader.cpp gtest/gtest-all.cc
-file_reader_test_SOURCES = file_reader_test.cpp ../file_reader.cpp gtest/gtest-all.cc
-utf8_transcoder_test_SOURCES = ../utf8_transcoder.cpp utf8_transcoder_test.cpp ../string_reader.cpp gtest/gtest-all.cc
+string_reader_test_SOURCES = string_reader_test.cpp ../string_reader.cpp gtest/gtest-all.cc \
+ ../unicode.cpp
+
+file_reader_test_SOURCES = file_reader_test.cpp ../file_reader.cpp gtest/gtest-all.cc \
+ ../unicode.cpp
+
+utf8_transcoder_test_SOURCES = ../utf8_transcoder.cpp utf8_transcoder_test.cpp ../string_reader.cpp gtest/gtest-all.cc \
+ ../unicode.cpp
+
unicode_test_SOURCES = unicode_test.cpp ../unicode.cpp ../utf8_transcoder.cpp ../string_reader.cpp gtest/gtest-all.cc
encoding_reader_test_SOURCES = ../encoding_reader.cpp ../string_reader.cpp ../utf8_transcoder.cpp \
- encoding_reader_test.cpp gtest/gtest-all.cc
+ encoding_reader_test.cpp gtest/gtest-all.cc ../unicode.cpp
type_test_SOURCES = ../type.cpp type_test.cpp gtest/gtest-all.cc
textarrayformat_test_SOURCES = ../common/textarrayformat.cpp textarrayformat_test.cpp gtest/gtest-all.cc
+charactor_lexer_test_SOURCES = ../common/textarrayformat.cpp charactor_lexer_test.cpp gtest/gtest-all.cc
all: all-am
.SUFFIXES:
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+charactor_lexer_test$(EXEEXT): $(charactor_lexer_test_OBJECTS) $(charactor_lexer_test_DEPENDENCIES)
+ @rm -f charactor_lexer_test$(EXEEXT)
+ $(CXXLINK) $(charactor_lexer_test_OBJECTS) $(charactor_lexer_test_LDADD) $(LIBS)
encoding_reader_test$(EXEEXT): $(encoding_reader_test_OBJECTS) $(encoding_reader_test_DEPENDENCIES)
@rm -f encoding_reader_test$(EXEEXT)
$(CXXLINK) $(encoding_reader_test_OBJECTS) $(encoding_reader_test_LDADD) $(LIBS)
distclean-compile:
-rm -f *.tab.c
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/charactor_lexer_test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encoding_reader.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encoding_reader_test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_reader.Po@am__quote@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+textarrayformat.o: ../common/textarrayformat.cpp
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT textarrayformat.o -MD -MP -MF $(DEPDIR)/textarrayformat.Tpo -c -o textarrayformat.o `test -f '../common/textarrayformat.cpp' || echo '$(srcdir)/'`../common/textarrayformat.cpp
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/textarrayformat.Tpo $(DEPDIR)/textarrayformat.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../common/textarrayformat.cpp' object='textarrayformat.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o textarrayformat.o `test -f '../common/textarrayformat.cpp' || echo '$(srcdir)/'`../common/textarrayformat.cpp
+
+textarrayformat.obj: ../common/textarrayformat.cpp
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT textarrayformat.obj -MD -MP -MF $(DEPDIR)/textarrayformat.Tpo -c -o textarrayformat.obj `if test -f '../common/textarrayformat.cpp'; then $(CYGPATH_W) '../common/textarrayformat.cpp'; else $(CYGPATH_W) '$(srcdir)/../common/textarrayformat.cpp'; fi`
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/textarrayformat.Tpo $(DEPDIR)/textarrayformat.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../common/textarrayformat.cpp' object='textarrayformat.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o textarrayformat.obj `if test -f '../common/textarrayformat.cpp'; then $(CYGPATH_W) '../common/textarrayformat.cpp'; else $(CYGPATH_W) '$(srcdir)/../common/textarrayformat.cpp'; fi`
+
+gtest-all.o: gtest/gtest-all.cc
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gtest-all.o -MD -MP -MF $(DEPDIR)/gtest-all.Tpo -c -o gtest-all.o `test -f 'gtest/gtest-all.cc' || echo '$(srcdir)/'`gtest/gtest-all.cc
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/gtest-all.Tpo $(DEPDIR)/gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gtest/gtest-all.cc' object='gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gtest-all.o `test -f 'gtest/gtest-all.cc' || echo '$(srcdir)/'`gtest/gtest-all.cc
+
+gtest-all.obj: gtest/gtest-all.cc
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gtest-all.obj -MD -MP -MF $(DEPDIR)/gtest-all.Tpo -c -o gtest-all.obj `if test -f 'gtest/gtest-all.cc'; then $(CYGPATH_W) 'gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/gtest/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/gtest-all.Tpo $(DEPDIR)/gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gtest/gtest-all.cc' object='gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gtest-all.obj `if test -f 'gtest/gtest-all.cc'; then $(CYGPATH_W) 'gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/gtest/gtest-all.cc'; fi`
+
encoding_reader.o: ../encoding_reader.cpp
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT encoding_reader.o -MD -MP -MF $(DEPDIR)/encoding_reader.Tpo -c -o encoding_reader.o `test -f '../encoding_reader.cpp' || echo '$(srcdir)/'`../encoding_reader.cpp
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/encoding_reader.Tpo $(DEPDIR)/encoding_reader.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o utf8_transcoder.obj `if test -f '../utf8_transcoder.cpp'; then $(CYGPATH_W) '../utf8_transcoder.cpp'; else $(CYGPATH_W) '$(srcdir)/../utf8_transcoder.cpp'; fi`
-gtest-all.o: gtest/gtest-all.cc
-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gtest-all.o -MD -MP -MF $(DEPDIR)/gtest-all.Tpo -c -o gtest-all.o `test -f 'gtest/gtest-all.cc' || echo '$(srcdir)/'`gtest/gtest-all.cc
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/gtest-all.Tpo $(DEPDIR)/gtest-all.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gtest/gtest-all.cc' object='gtest-all.o' libtool=no @AMDEPBACKSLASH@
+unicode.o: ../unicode.cpp
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unicode.o -MD -MP -MF $(DEPDIR)/unicode.Tpo -c -o unicode.o `test -f '../unicode.cpp' || echo '$(srcdir)/'`../unicode.cpp
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/unicode.Tpo $(DEPDIR)/unicode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../unicode.cpp' object='unicode.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gtest-all.o `test -f 'gtest/gtest-all.cc' || echo '$(srcdir)/'`gtest/gtest-all.cc
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unicode.o `test -f '../unicode.cpp' || echo '$(srcdir)/'`../unicode.cpp
-gtest-all.obj: gtest/gtest-all.cc
-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gtest-all.obj -MD -MP -MF $(DEPDIR)/gtest-all.Tpo -c -o gtest-all.obj `if test -f 'gtest/gtest-all.cc'; then $(CYGPATH_W) 'gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/gtest/gtest-all.cc'; fi`
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/gtest-all.Tpo $(DEPDIR)/gtest-all.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gtest/gtest-all.cc' object='gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+unicode.obj: ../unicode.cpp
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unicode.obj -MD -MP -MF $(DEPDIR)/unicode.Tpo -c -o unicode.obj `if test -f '../unicode.cpp'; then $(CYGPATH_W) '../unicode.cpp'; else $(CYGPATH_W) '$(srcdir)/../unicode.cpp'; fi`
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/unicode.Tpo $(DEPDIR)/unicode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../unicode.cpp' object='unicode.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gtest-all.obj `if test -f 'gtest/gtest-all.cc'; then $(CYGPATH_W) 'gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/gtest/gtest-all.cc'; fi`
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unicode.obj `if test -f '../unicode.cpp'; then $(CYGPATH_W) '../unicode.cpp'; else $(CYGPATH_W) '$(srcdir)/../unicode.cpp'; fi`
file_reader.o: ../file_reader.cpp
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT file_reader.o -MD -MP -MF $(DEPDIR)/file_reader.Tpo -c -o file_reader.o `test -f '../file_reader.cpp' || echo '$(srcdir)/'`../file_reader.cpp
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o file_reader.obj `if test -f '../file_reader.cpp'; then $(CYGPATH_W) '../file_reader.cpp'; else $(CYGPATH_W) '$(srcdir)/../file_reader.cpp'; fi`
-textarrayformat.o: ../common/textarrayformat.cpp
-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT textarrayformat.o -MD -MP -MF $(DEPDIR)/textarrayformat.Tpo -c -o textarrayformat.o `test -f '../common/textarrayformat.cpp' || echo '$(srcdir)/'`../common/textarrayformat.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/textarrayformat.Tpo $(DEPDIR)/textarrayformat.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../common/textarrayformat.cpp' object='textarrayformat.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o textarrayformat.o `test -f '../common/textarrayformat.cpp' || echo '$(srcdir)/'`../common/textarrayformat.cpp
-
-textarrayformat.obj: ../common/textarrayformat.cpp
-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT textarrayformat.obj -MD -MP -MF $(DEPDIR)/textarrayformat.Tpo -c -o textarrayformat.obj `if test -f '../common/textarrayformat.cpp'; then $(CYGPATH_W) '../common/textarrayformat.cpp'; else $(CYGPATH_W) '$(srcdir)/../common/textarrayformat.cpp'; fi`
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/textarrayformat.Tpo $(DEPDIR)/textarrayformat.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../common/textarrayformat.cpp' object='textarrayformat.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o textarrayformat.obj `if test -f '../common/textarrayformat.cpp'; then $(CYGPATH_W) '../common/textarrayformat.cpp'; else $(CYGPATH_W) '$(srcdir)/../common/textarrayformat.cpp'; fi`
-
type.o: ../type.cpp
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT type.o -MD -MP -MF $(DEPDIR)/type.Tpo -c -o type.o `test -f '../type.cpp' || echo '$(srcdir)/'`../type.cpp
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/type.Tpo $(DEPDIR)/type.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o type.obj `if test -f '../type.cpp'; then $(CYGPATH_W) '../type.cpp'; else $(CYGPATH_W) '$(srcdir)/../type.cpp'; fi`
-unicode.o: ../unicode.cpp
-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unicode.o -MD -MP -MF $(DEPDIR)/unicode.Tpo -c -o unicode.o `test -f '../unicode.cpp' || echo '$(srcdir)/'`../unicode.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/unicode.Tpo $(DEPDIR)/unicode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../unicode.cpp' object='unicode.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unicode.o `test -f '../unicode.cpp' || echo '$(srcdir)/'`../unicode.cpp
-
-unicode.obj: ../unicode.cpp
-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unicode.obj -MD -MP -MF $(DEPDIR)/unicode.Tpo -c -o unicode.obj `if test -f '../unicode.cpp'; then $(CYGPATH_W) '../unicode.cpp'; else $(CYGPATH_W) '$(srcdir)/../unicode.cpp'; fi`
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/unicode.Tpo $(DEPDIR)/unicode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../unicode.cpp' object='unicode.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unicode.obj `if test -f '../unicode.cpp'; then $(CYGPATH_W) '../unicode.cpp'; else $(CYGPATH_W) '$(srcdir)/../unicode.cpp'; fi`
-
.cpp.o:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-binPROGRAMS
+ ../encoding_reader.cpp ../string_reader.cpp ../unicode.cpp ../lexer/charactor_lexer.cpp ../utf8_transcoder.h
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
--- /dev/null
+.PHONY: test
+
+# SRCS = utf8_string_test ../utf8_string ../simpletest ../utf8
+# TARGET = utf8_string_test
+
+INCLUDES += test/gtest/gtest.h $(SRCDIR)
+LDFLAGS += -L$(ROOTDIR)/src -L$(ROOTDIR)/src/common -L$(ROOTDIR)/src/lexer -Ltest/gtest
+INCLUDE_SRCS = $(removesuffix $(ls R,$(ROOTDIR)/src/*cpp))
+
+# enumeration test program names
+TEST_PROGRAMS[] =
+ string_reader_test
+ file_reader_test
+ encoding_reader_test
+ textarrayformat_test
+
+.DEFAULT: $(CXXProgram string_reader_test, string_reader_test ../src/unicode ../src/string_reader gtest/gtest-all)
+.DEFAULT: $(CXXProgram file_reader_test, file_reader_test ../src/unicode ../src/file_reader gtest/gtest-all)
+.DEFAULT: $(CXXProgram encoding_reader_test, encoding_reader_test ../src/unicode ../src/string_reader ../src/encoding_reader ../src/utf8_transcoder gtest/gtest-all)
+.DEFAULT: $(CXXProgram textarrayformat_test, textarrayformat_test ../src/common/textarrayformat gtest/gtest-all)
+
+# executing test that enumeration test program from `TEST_PROGRAMS`
+test: .DEFAULT
+ foreach(i, $(TEST_PROGRAMS)):
+ ./$(i) --gtest_color=yes
--- /dev/null
+#include <gtest/gtest.h>
+#include "src/common/textarrayformat.h"
+#include "src/lexer/charactor_lexer.h"
+#include "src/encoding_reader.h"
+#include "src/string_reader.h"
+#include "src/unicode.h"
+#include "src/common/scoped_ptr.h"
+#include "src/utf8_transcoder.h"
+
+namespace textarrayformat = utility::textarrayformat;
+namespace lexer = utakata::lexer;
+namespace unicode = utakata::unicode;
+namespace reader = utakata::reader;
+namespace transcoder = utakata::transcoder;
+
+class CharactorLexerTest : public ::testing::Test {
+ protected:
+ virtual void SetUp() {
+ gen.reset(new textarrayformat::TextArrayGenerator("========="));
+ gen->Punctuate('#\a #\z #\x( #\xo');
+ gen->Punctuate('#\x001 #\x7f8f');
+ gen->Punctuate('#\nul');
+ gen->Punctuate('#\alarm');
+ gen->Punctuate('#\backspace');
+ gen->Punctuate('#\tab #\linefeed');
+ gen->Punctuate('#\newline #\vtab #\page');
+ gen->Punctuate('#\return #\esc' + "\n" + '#\space');
+ gen->Punctuate('#\delete');
+ }
+
+ private:
+ utility::scoped_ptr<textarrayformat::TextArrayGenerator> gen;
+};
+
+TEST_F(CharactorLexerTest, SingleCharactorLex) {
+ textarrayformat::TextArrayReader textarray(*gen);
+
+ reader::StringReader sr(textarray.GetBlockAt(0));
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+
+ lexer::CharactorLexer lexer;
+
+ utility::scoped_ptr<lexer::ILexerDispatchTerm> term(lexer.GetTerm());
+
+ EXPECT_TRUE(term->IsDispatch(unicode::Convert("#\\")));
+
+ reader->Read(2);
+ utility::scoped_ptr<lexeme::ILexeme> l(lexer.Lex(unicode::UniString(),
+ &reader));
+ EXPECT_EQ(l->content.At(0).rawcode(), 'a');
+ EXPECT_EQ(l->content.GetSize(), 1);
+
+ reader->Read(3);
+ l.reset(lexer.Lex(unicode::UniString(), &reader));
+ EXPECT_EQ(l->content.At(0).rawcode(), 'z');
+ EXPECT_EQ(l->content.GetSize(), 1);
+
+ reader->Read(3);
+ l.reset(lexer.Lex(unicode::UniString(), &reader));
+ EXPECT_EQ(l->content.At(0).rawcode(), 'x');
+ EXPECT_EQ(l->content.GetSize(), 1);
+
+ EXPECT_THROW(l.reset(lexer.lex(unicode::UniString(), &reader)),
+ lexer::LexException);
+}
+
+TEST_F(CharactorLexerTest, HexCharactorTest) {
+ textarrayformat::TextArrayReader textarray(*gen);
+
+ reader::StringReader sr(textarray.GetBlockAt(1));
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+
+ lexer::CharactorLexer lexer;
+
+ reader->Read(2);
+ utility::scoped_ptr<lexeme::ILexeme> l(lexer.Lex(unicode::UniString(),
+ &reader));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x01);
+ EXPECT_EQ(l->content.GetSize(), 1);
+
+ reader->Read(3);
+ l.reset(lexer.Lex(unicode::UniString(), &reader));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x7f8f);
+ EXPECT_EQ(l->content.GetSize(), 1);
+}
+
+TEST_F(CharactorLexerTest, NameLexingNul) {
+ textarrayformat::TextArrayReader textarray(*gen);
+ utility::scoped_ptr<lexeme::ILexeme> l;
+ {
+ reader::StringReader sr(textarray.GetBlockAt(2));
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+
+ reader->Read(2);
+
+ EXPECT_NO_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x0);
+ EXPECT_EQ(l->content.GetSize(), 1);
+ }
+
+ {
+ reader::StringReader sr("null");
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+
+ EXPECT_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)),
+ lexer::LexException);
+ }
+
+ {
+ reader::StringReader sr("nu");
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+ EXPECT_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)),
+ lexer::LexException);
+ }
+}
+
+TEST_F(CharactorLexerTest, NameLexingAlarm) {
+ textarrayformat::TextArrayReader textarray(*gen);
+ utility::scoped_ptr<lexeme::ILexeme> l;
+ {
+ reader::StringReader sr(textarray.GetBlockAt(3));
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+
+ reader->Read(2);
+
+ EXPECT_NO_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x07);
+ EXPECT_EQ(l->content.GetSize(), 1);
+ }
+
+ {
+ reader::StringReader sr("alar");
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+
+ EXPECT_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)),
+ lexer::LexException);
+ }
+
+ {
+ reader::StringReader sr("alarms");
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+ EXPECT_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)),
+ lexer::LexException);
+ }
+}
+
+TEST_F(CharactorLexerTest, NameLexingBackspace) {
+ textarrayformat::TextArrayReader textarray(*gen);
+ utility::scoped_ptr<lexeme::ILexeme> l;
+ {
+ reader::StringReader sr(textarray.GetBlockAt(4));
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+
+ reader->Read(2);
+
+ EXPECT_NO_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x08);
+ EXPECT_EQ(l->content.GetSize(), 1);
+ }
+
+ {
+ reader::StringReader sr("Backspace");
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+
+ EXPECT_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)),
+ lexer::LexException);
+ }
+
+ {
+ reader::StringReader sr("backspa");
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+ EXPECT_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)),
+ lexer::LexException);
+ }
+}
+
+TEST_F(CharactorLexerTest, NameLexingTabAndLinefeed) {
+ textarrayformat::TextArrayReader textarray(*gen);
+ utility::scoped_ptr<lexeme::ILexeme> l;
+ {
+ reader::StringReader sr(textarray.GetBlockAt(5));
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+
+ reader->Read(2);
+
+ EXPECT_NO_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x09);
+ EXPECT_EQ(l->content.GetSize(), 1);
+
+ reader->Read(3);
+ EXPECT_NO_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x0a);
+ EXPECT_EQ(l->content.GetSize(), 1);
+ }
+
+ {
+ reader::StringReader sr("Tab");
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+
+ EXPECT_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)),
+ lexer::LexException);
+ }
+
+ {
+ reader::StringReader sr("line");
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+ EXPECT_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)),
+ lexer::LexException);
+ }
+}
+
+TEST_F(CharactorLexerTest, NameLexing) {
+ textarrayformat::TextArrayReader textarray(*gen);
+ utility::scoped_ptr<lexeme::ILexeme> l;
+ {
+ reader::StringReader sr(textarray.GetBlockAt(6));
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+
+ reader->Read(2);
+
+ EXPECT_NO_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x0A);
+ EXPECT_EQ(l->content.GetSize(), 1);
+
+ reader->Read(3);
+
+ EXPECT_NO_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x0B);
+ EXPECT_EQ(l->content.GetSize(), 1);
+
+ reader->Read(3);
+ EXPECT_NO_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x0C);
+ EXPECT_EQ(l->content.GetSize(), 1);
+ }
+
+ {
+ reader::StringReader sr(textarray.GetBlockAt(7));
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+
+ reader->Read(2);
+
+ EXPECT_NO_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x0D);
+ EXPECT_EQ(l->content.GetSize(), 1);
+
+ reader->Read(3);
+
+ EXPECT_NO_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x1B);
+ EXPECT_EQ(l->content.GetSize(), 1);
+
+ reader->Read(3);
+ EXPECT_NO_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x20);
+ EXPECT_EQ(l->content.GetSize(), 1);
+ }
+}
+
+TEST_F(CharactorLexerTest, NameLexingDelete) {
+ textarrayformat::TextArrayReader textarray(*gen);
+ utility::scoped_ptr<lexeme::ILexeme> l;
+ {
+ reader::StringReader sr(textarray.GetBlockAt(8));
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+
+ reader->Read(2);
+
+ EXPECT_NO_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)));
+ EXPECT_EQ(l->content.At(0).rawcode(), 0x7f);
+ EXPECT_EQ(l->content.GetSize(), 1);
+ }
+
+ {
+ reader::StringReader sr("del");
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+
+ EXPECT_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)),
+ lexer::LexException);
+ }
+
+ {
+ reader::StringReader sr("Delete");
+ reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
+ lexer::CharactorLexer lexer;
+ EXPECT_THROW(l.reset(lexer.Lex(unicode::UniString(), &reader)),
+ lexer::LexException);
+ }
+}
+
+int main(int argc, char** argv) {
+ testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
EXPECT_EQ(s.size(), static_cast<unsigned int>(2));
}
+TEST(TextArrayFormatTest, FastConstructBlock) {
+ textarrayformat::TextArrayGenerator gen("======");
+
+ gen.Append("test");
+ gen.Append("test");
+ EXPECT_EQ(gen.construct_text(), "======\n");
+
+ gen.Punctuate();
+ EXPECT_EQ(gen.construct_text(), gen.separator() +
+ "test\ntest\n" + gen.separator());
+
+ gen.Append("hoge");
+ gen.Punctuate("huga");
+
+ gen.Punctuate(gen.separator());
+
+ textarrayformat::TextArrayReader reader(gen);
+ EXPECT_EQ(reader.GetBlockAt(0), "test\ntest\n");
+ EXPECT_EQ(reader.GetBlockAt(1), "hoge\n");
+ EXPECT_EQ(reader.GetBlockAt(2), "huga\n");
+
+ std::vector<std::string> s = reader.text_blocks();
+ EXPECT_EQ(s.size(), static_cast<unsigned int>(3));
+}
+
int main(int argc, char** argv) {
testing::InitGoogleTest(&argc, argv);