diff --git a/CMakeLists.txt b/CMakeLists.txt index 383e739..6a6f173 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -147,7 +147,7 @@ endif () include (CPack) ##### END initialize some vars ##### -file (COPY fsabuilder testfiles input test.sh DESTINATION .) +file (COPY fsabuilder testfiles input test.sh doTest.sh DESTINATION .) configure_file ( "${PROJECT_SOURCE_DIR}/morfeusz/morfeusz2_version.h.in" @@ -161,6 +161,19 @@ add_subdirectory (fsabuilder) ########## add tests ########## +macro (test_analyzer analyzerDir) + message ("adding test dir ${analyzerDir}") + get_filename_component (dirname ${analyzerTestDir} NAME) + add_test(TestAnalyzer_${dirname} ./doTest.sh morfeusz analyzer ${analyzerDir}) +endmacro() + +file (GLOB analyzerTestDirs "tests/analyzer/*") +if (UNIX) + foreach (analyzerTestDir ${analyzerTestDirs}) + test_analyzer(${analyzerTestDir}) + endforeach() +endif() + #macro (test_build_and_recognize fname method) # add_test (TestBuild-${method}-${fname} python fsabuilder/morfeusz_builder --analyzer --input-files testfiles/${fname} -o /tmp/test-${method}-${fname}.fsa --tagset-file=testfiles/polimorf.tagset --segments-file=testfiles/segmenty.dat --serialization-method=${method}) # add_test (TestBuild4Synth-${method}-${fname} python fsabuilder/morfeusz_builder --generator --input-files testfiles/${fname} -o /tmp/test-synth-${method}-${fname}.fsa --tagset-file=testfiles/polimorf.tagset --serialization-method=${method}) diff --git a/doTest.sh b/doTest.sh new file mode 100755 index 0000000..147749e --- /dev/null +++ b/doTest.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +WORKDIR=$1 +WHAT=$2 +CMD=$WORKDIR/morfeusz_$WHAT +DIR=$3 + +echo "build test FSA for $DIR" + +TMP_DICTIONARY=`mktemp` +python fsabuilder/morfeusz_builder \ + --$WHAT \ + --input-files $DIR/dictionary.tab \ + -o $TMP_DICTIONARY \ + --tagset-file=$DIR/tagset.dat \ + --segments-file=$DIR/segmentation.dat \ + --serialization-method=V1 + +echo "testing $DIR" + +INPUT=$DIR/input.txt +OUTPUT=$DIR/output.txt +TMP_OUTPUT=`mktemp` +ARGS=`cat $DIR/ARGS` + +$CMD -i $TMP_DICTIONARY $ARGS < $INPUT > $TMP_OUTPUT + +if [ $? -ne 0 ] +then + echo "command '$ARGS < $INPUT > $TMP_OUTPUT' returned non-zero exit status" >&2 + exit 1 +fi +diff=`diff --brief $OUTPUT $TMP_OUTPUT` +if [ "$diff" != "" ] +then + diff -u $OUTPUT $TMP_OUTPUT + echo "#### Output for '$INPUT' differs from '$OUTPUT' contents" >&2 + exit 1 +fi diff --git a/fsabuilder/morfeusz_builder b/fsabuilder/morfeusz_builder index 8a52981..264a0b8 100644 --- a/fsabuilder/morfeusz_builder +++ b/fsabuilder/morfeusz_builder @@ -146,7 +146,7 @@ def _concatFiles(inputFiles): if inputFile: with open(inputFile, 'r') as f: for line in f: - if not ' ' in ''.join(line.split('\t')[:2]): + if line and not ' ' in ''.join(line.split('\t')[:2]): yield line else: logging.warn(u'Ignoring line: "%s" - contains space in text form or lemma' % line.strip().decode('utf8')) @@ -258,11 +258,12 @@ def main(opts): if __name__ == '__main__': import os opts = _parseOptions() + main(opts) try: main(opts) except Exception as ex: print >> sys.stderr, u'Building dictionary file failed:', unicode(ex).encode('utf8'), 'type of error:', type(ex) -# raise ex + raise ex sys.exit(1) finally: pass diff --git a/fsabuilder/morfeuszbuilder/fsa/convertinput.py b/fsabuilder/morfeuszbuilder/fsa/convertinput.py index b0fd56e..2f4422c 100644 --- a/fsabuilder/morfeuszbuilder/fsa/convertinput.py +++ b/fsabuilder/morfeuszbuilder/fsa/convertinput.py @@ -24,7 +24,8 @@ def _mergeEntries(inputLines, lowercase): yield (prevKey, frozenset(prevInterps)) prevKey = key prevInterps = [interp] - yield (prevKey, frozenset(prevInterps)) + if prevInterps: + yield (prevKey, frozenset(prevInterps)) def _parseLine(line): splitLine = line.strip().split(u'\t') diff --git a/fsabuilder/morfeuszbuilder/fsa/fsa.py b/fsabuilder/morfeuszbuilder/fsa/fsa.py index f23a0bb..4e973fb 100644 --- a/fsabuilder/morfeuszbuilder/fsa/fsa.py +++ b/fsabuilder/morfeuszbuilder/fsa/fsa.py @@ -7,6 +7,7 @@ Created on Oct 8, 2013 import state import register import logging +from morfeuszbuilder.utils import exceptions class FSA(object): ''' @@ -47,7 +48,8 @@ class FSA(object): self.label2Freq[label] = self.label2Freq.get(label, 0) + 1 def close(self): - assert self.n > 0 + if self.n == 0: + raise exceptions.FSABuilderException('empty input') assert not self.closed self.initialState = self._replaceOrRegister(self.initialState, self.encodedPrevWord) self.encodedPrevWord = None diff --git a/fsabuilder/morfeuszbuilder/tagset/tagset.py b/fsabuilder/morfeuszbuilder/tagset/tagset.py index 7c43230..2b8d944 100644 --- a/fsabuilder/morfeuszbuilder/tagset/tagset.py +++ b/fsabuilder/morfeuszbuilder/tagset/tagset.py @@ -35,7 +35,8 @@ class Tagset(object): Tagset.NAMES: self._name2namenum}[addingTo] tagNum = line.split(Tagset.SEP)[0] tag = line.split(Tagset.SEP)[1] - assert tag not in res + if tag in res: + raise FSABuilderException('duplicate tag: "%s"' % tag) res[tag] = int(tagNum) def getAllTags(self): diff --git a/initializeAnalyzerTest.sh b/initializeAnalyzerTest.sh new file mode 100755 index 0000000..8f59731 --- /dev/null +++ b/initializeAnalyzerTest.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +set -exo pipefail + +DIR=$1 +shift +ARGS=`cat $DIR/ARGS` + +DICT_FILE=`mktemp` + +python fsabuilder/morfeusz_builder \ + --analyzer \ + --input-files $DIR/dictionary.tab \ + -o $DICT_FILE \ + --tagset-file=$DIR/tagset.dat \ + --segments-file=$DIR/segmentation.dat \ + --serialization-method=V1 + +build/morfeusz/morfeusz_analyzer -i $DICT_FILE $ARGS < $DIR/input.txt > $DIR/output.txt diff --git a/morfeusz/Environment.cpp b/morfeusz/Environment.cpp index 739f99e..e534592 100644 --- a/morfeusz/Environment.cpp +++ b/morfeusz/Environment.cpp @@ -9,7 +9,6 @@ #include <algorithm> #include "Environment.hpp" #include "deserialization/MorphDeserializer.hpp" -#include "exceptions.hpp" #include "deserialization/morphInterps/InterpretedChunksDecoder.hpp" #include "deserialization/morphInterps/InterpretedChunksDecoder4Analyzer.hpp" #include "deserialization/morphInterps/InterpretedChunksDecoder4Generator.hpp" diff --git a/morfeusz/MorfeuszInternal.hpp b/morfeusz/MorfeuszInternal.hpp index 9c14aa1..320d8cc 100644 --- a/morfeusz/MorfeuszInternal.hpp +++ b/morfeusz/MorfeuszInternal.hpp @@ -26,7 +26,6 @@ #include "InflexionGraph.hpp" #include "MorfeuszOptions.hpp" #include "const.hpp" -#include "exceptions.hpp" #include "Environment.hpp" #include "ResultsIteratorImpl.hpp" diff --git a/morfeusz/cli/cli.cpp b/morfeusz/cli/cli.cpp index 66dc133..de5575f 100644 --- a/morfeusz/cli/cli.cpp +++ b/morfeusz/cli/cli.cpp @@ -217,7 +217,7 @@ namespace morfeusz { default: break; } - printf("Using dictionary from %s\n", dictFile.c_str()); + cerr << "Using dictionary from " << dictFile << endl; } if (opt.isSet("-a")) { string aggl; diff --git a/morfeusz/exceptions.hpp b/morfeusz/exceptions.hpp deleted file mode 100644 index a9fc285..0000000 --- a/morfeusz/exceptions.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * File: exceptions.hpp - * Author: mlenart - * - * Created on 22 styczeń 2014, 13:16 - */ - -#ifndef EXCEPTIONS_HPP -#define EXCEPTIONS_HPP - -#include <exception> -#include <string> - -namespace morfeusz { - -//class MorfeuszException : public std::exception { -//public: -// -// MorfeuszException(const std::string& what) : msg(what.c_str()) { -// } -// -// virtual ~MorfeuszException() throw () { -// } -// -// virtual const char* what() const throw () { -// return this->msg.c_str(); -// } -//private: -// const std::string msg; -//}; - -} - -#endif /* EXCEPTIONS_HPP */ - diff --git a/nbproject/configurations.xml b/nbproject/configurations.xml index fcc97ab..c068e65 100644 --- a/nbproject/configurations.xml +++ b/nbproject/configurations.xml @@ -64,6 +64,8 @@ <in>test_result_equals.cpp</in> </df> <df name="tests"> + <in>TestCAPI.cpp</in> + <in>TestMorfeusz.cpp</in> <in>test_c_api.cpp</in> </df> <in>DefaultTagset.cpp</in> @@ -78,6 +80,7 @@ <in>morfeusz2_c.cpp</in> <in>morfeusz_analyzer.cpp</in> <in>morfeusz_generator.cpp</in> + <in>test_runner.cpp</in> </df> <logicalFolder name="morfeusz" displayName="morfeusz" @@ -165,9 +168,8 @@ <rebuildPropChanged>false</rebuildPropChanged> </toolsSet> <flagsDictionary> - <element flagsID="0" commonFlags="-std=c++98"/> + <element flagsID="0" commonFlags="-std=c++98 -O3"/> <element flagsID="1" commonFlags="-std=c++98 -O3 -fPIC"/> - <element flagsID="2" commonFlags="-std=c++98 -fPIC"/> </flagsDictionary> <codeAssistance> </codeAssistance> @@ -177,6 +179,12 @@ <buildCommand>${MAKE} -f Makefile</buildCommand> <cleanCommand>${MAKE} -f Makefile clean</cleanCommand> <executablePath>build/morfeusz/morfeusz_analyzer</executablePath> + <ccTool flags="-std=c++98"> + <incDir> + <pElem>build</pElem> + <pElem>morfeusz</pElem> + </incDir> + </ccTool> </makeTool> </makefileType> <item path="build/default_fsa.cpp" ex="false" tool="1" flavor2="4"> @@ -186,7 +194,6 @@ <pElem>build/fsa</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> <Elem>__PIC__=2</Elem> <Elem>__pic__=2</Elem> @@ -205,7 +212,6 @@ <pElem>build/fsa</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> <Elem>__PIC__=2</Elem> <Elem>__pic__=2</Elem> @@ -218,11 +224,15 @@ </ccTool> </item> <item path="build/morfeusz/default_fsa.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="build/morfeusz/default_synth_fsa.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="build/morfeusz/java/swigJAVA.cpp" ex="false" tool="1" flavor2="4"> </item> @@ -238,7 +248,6 @@ <pElem>build/morfeusz/java</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> <Elem>__PIC__=2</Elem> <Elem>__pic__=2</Elem> @@ -263,7 +272,6 @@ <pElem>build/morfeusz/perl</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> <Elem>morfeusz_perl_EXPORTS</Elem> </preprocessorList> @@ -284,7 +292,6 @@ <pElem>build/morfeusz/python</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> <Elem>__PIC__=2</Elem> <Elem>__pic__=2</Elem> @@ -306,12 +313,14 @@ ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="build/morfeusz/wrappers/morfeuszPERL_wrap.cxx" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>/usr/lib/perl/5.14/CORE</pElem> <pElem>build/morfeusz/wrappers/perl</pElem> @@ -331,7 +340,6 @@ <pElem>morfeusz/build/morfeusz</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> </preprocessorList> <undefinedList> @@ -347,7 +355,6 @@ <pElem>morfeusz/build/morfeusz</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> </preprocessorList> <undefinedList> @@ -355,97 +362,71 @@ </undefinedList> </ccTool> </item> - <folder path="0/c_api"> + <folder path="0"> <ccTool> <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> </incDir> + </ccTool> + </folder> + <folder path="0/c_api"> + <ccTool> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </folder> <folder path="0/case"> <ccTool> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </folder> <folder path="0/charset"> <ccTool> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </folder> <folder path="0/cli"> <ccTool> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </folder> <folder path="0/deserialization"> <ccTool> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </folder> <folder path="0/fsa"> <ccTool> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </folder> <folder path="0/segrules"> <ccTool> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </folder> <folder path="0/test"> <ccTool> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> <preprocessorList> <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> @@ -583,10 +564,9 @@ </folder> <folder path="build"> <ccTool> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - </incDir> + <preprocessorList> + <Elem>NDEBUG</Elem> + </preprocessorList> </ccTool> </folder> <folder path="build/morfeusz/wrappers/java"> @@ -602,8 +582,6 @@ <folder path="java"> <ccTool> <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> <pElem>build/fsa</pElem> <pElem>build1</pElem> @@ -622,11 +600,8 @@ </folder> <folder path="morfeusz"> <ccTool> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - </incDir> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> @@ -639,7 +614,6 @@ <pElem>/usr/lib/jvm/default-java/include</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> <Elem>libjmorfeusz_EXPORTS</Elem> </preprocessorList> @@ -656,134 +630,114 @@ </ccTool> </folder> <item path="morfeusz/DefaultTagset.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <ccTool flags="1"> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/Environment.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <ccTool flags="1"> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/InflexionGraph.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <ccTool flags="1"> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/Morfeusz.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <ccTool flags="1"> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/MorfeuszInternal.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <ccTool flags="1"> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/MorphInterpretation.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <ccTool flags="1"> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/Qualifiers.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <ccTool flags="1"> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/ResultsIteratorImpl.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <ccTool flags="1"> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/c_api/ResultsManager.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/case/CaseConverter.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/case/CasePatternHelper.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/case/caseconv.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/charset/CharsetConverter.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/charset/TextReader.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/charset/conversion_tables.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/cli/cli.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/const.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <ccTool flags="1"> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> @@ -792,62 +746,70 @@ ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/deserialization/MorphDeserializer.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/deserialization/morphInterps/InterpretedChunksDecoder.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/deserialization/morphInterps/InterpretedChunksDecoder4Analyzer.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/deserialization/morphInterps/InterpretedChunksDecoder4Generator.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/fsa/const.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/morfeusz2_c.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <ccTool flags="1"> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/morfeusz_analyzer.cpp" ex="false" tool="1" flavor2="4"> <ccTool flags="0"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <preprocessorList> + <Elem>NDEBUG</Elem> + </preprocessorList> </ccTool> </item> <item path="morfeusz/morfeusz_generator.cpp" ex="false" tool="1" flavor2="4"> <ccTool flags="0"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <preprocessorList> + <Elem>NDEBUG</Elem> + </preprocessorList> </ccTool> </item> <item path="morfeusz/segrules/SegrulesFSA.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/segrules/segrules.cpp" ex="false" tool="1" flavor2="4"> + <ccTool flags="1"> + </ccTool> </item> <item path="morfeusz/test/test_recognize_dict.cpp" ex="false" @@ -861,34 +823,28 @@ </item> <item path="morfeusz/test_runner.cpp" ex="false" tool="1" flavor2="4"> <ccTool flags="0"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <preprocessorList> + <Elem>NDEBUG</Elem> + </preprocessorList> </ccTool> </item> <item path="morfeusz/tests/.cpp" ex="true" tool="3" flavor2="0"> </item> <item path="morfeusz/tests/TestCAPI.cpp" ex="false" tool="1" flavor2="4"> <ccTool flags="0"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <preprocessorList> + <Elem>NDEBUG</Elem> + </preprocessorList> </ccTool> </item> <item path="morfeusz/tests/TestMorfeusz.cpp" ex="false" tool="1" flavor2="4"> <ccTool flags="0"> - <incDir> - <pElem>build</pElem> - <pElem>morfeusz</pElem> - <pElem>build/morfeusz</pElem> - </incDir> + <preprocessorList> + <Elem>NDEBUG</Elem> + </preprocessorList> </ccTool> </item> - <item path="morfeusz/tests/test_c_api.cpp" ex="false" tool="1" flavor2="0"> + <item path="morfeusz/tests/test_c_api.cpp" ex="false" tool="1" flavor2="4"> </item> </conf> </confs> diff --git a/tests/analyzer/test_digits/ARGS b/tests/analyzer/test_digits/ARGS new file mode 100644 index 0000000..4fd99ea --- /dev/null +++ b/tests/analyzer/test_digits/ARGS @@ -0,0 +1 @@ +--aggl permissive diff --git a/tests/analyzer/test_digits/dictionary.tab b/tests/analyzer/test_digits/dictionary.tab new file mode 100644 index 0000000..cfd1767 --- /dev/null +++ b/tests/analyzer/test_digits/dictionary.tab @@ -0,0 +1,10 @@ +0 0 dig +1 1 dig +2 2 dig +3 3 dig +4 4 dig +5 5 dig +6 6 dig +7 7 dig +8 8 dig +9 9 dig diff --git a/tests/analyzer/test_digits/input.txt b/tests/analyzer/test_digits/input.txt new file mode 100644 index 0000000..af63b3c --- /dev/null +++ b/tests/analyzer/test_digits/input.txt @@ -0,0 +1,7 @@ +1 +12 +123 +1234 +012341 +1234seasdfa +sdfa123 diff --git a/tests/analyzer/test_digits/output.txt b/tests/analyzer/test_digits/output.txt new file mode 100644 index 0000000..dd00cac --- /dev/null +++ b/tests/analyzer/test_digits/output.txt @@ -0,0 +1,8 @@ +[0,1,1,1,dig,_,_] +[0,1,12,12,dig,_,_] +[0,1,123,123,dig,_,_] +[0,1,1234,1234,dig,_,_] +[0,1,012341,012341,dig,_,_] +[0,1,1234seasdfa,1234seasdfa,ign,_,_] +[0,1,sdfa123,sdfa123,ign,_,_] + diff --git a/tests/analyzer/test_digits/segmentation.dat b/tests/analyzer/test_digits/segmentation.dat new file mode 100644 index 0000000..4bac5b3 --- /dev/null +++ b/tests/analyzer/test_digits/segmentation.dat @@ -0,0 +1,47 @@ +[options] +aggl=strict permissive isolated +praet=split composite + +[combinations] +#define wsz_interp (interp|kropka|przecinek|dywiz)* + +#define moze_interp(segmenty) wsz_interp segmenty wsz_interp + +# Segmenty występujące samodzielnie: +# +# domyślny typ segmentu samodzielnego: +moze_interp(samodz) + +# Pojedyncze znaki interpunkcyjne +moze_interp(interp|kropka|przecinek|dywiz) + +# Liczba zapisana jako ciąg cyfr: +moze_interp( dig>* dig ) + +[segment types] +interp +kropka +przecinek +dywiz +dig +samodz + +[lexemes] +kropka .:interp +przecinek ,:interp +dywiz -:interp + +[tags] +dig dig +interp interp +samodz % + +[separator chars] +# , +44 + +# . +46 + +# ; +59 diff --git a/tests/analyzer/test_digits/tagset.dat b/tests/analyzer/test_digits/tagset.dat new file mode 100644 index 0000000..7758137 --- /dev/null +++ b/tests/analyzer/test_digits/tagset.dat @@ -0,0 +1,757 @@ +#!MORFEUSZ-TAGSET 0.1 + +[TAGS] + +0 ign +1 sp +2 adja +3 adjc +4 adjp +5 adj:pl:acc:m1.p1:com +6 adj:pl:acc:m1.p1:pos +7 adj:pl:acc:m1.p1:sup +8 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:com +9 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:pos +10 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:sup +11 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:com +12 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +13 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +14 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:com +15 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +16 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +17 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:com +18 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +19 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +20 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:com +21 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +22 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +23 adj:pl:nom:m1.p1:pos +24 adj:pl:nom:m2.m3.f.n1.n2.p2.p3:pos +25 adj:pl:nom.voc:m1.p1:com +26 adj:pl:nom.voc:m1.p1:pos +27 adj:pl:nom.voc:m1.p1:sup +28 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:com +29 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:pos +30 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:sup +31 adj:sg:acc:f:com +32 adj:sg:acc:f:pos +33 adj:sg:acc:f:sup +34 adj:sg:acc:m1.m2:com +35 adj:sg:acc:m1.m2:pos +36 adj:sg:acc:m1.m2:sup +37 adj:sg:acc:m3:com +38 adj:sg:acc:m3:pos +39 adj:sg:acc:m3:sup +40 adj:sg:acc:n1.n2:com +41 adj:sg:acc:n1.n2:pos +42 adj:sg:acc:n1.n2:sup +43 adj:sg:dat:f:com +44 adj:sg:dat:f:pos +45 adj:sg:dat:f:sup +46 adj:sg:dat:m1.m2.m3.n1.n2:com +47 adj:sg:dat:m1.m2.m3.n1.n2:pos +48 adj:sg:dat:m1.m2.m3.n1.n2:sup +49 adj:sg:gen:f:com +50 adj:sg:gen:f:pos +51 adj:sg:gen:f:sup +52 adj:sg:gen:m1.m2.m3.n1.n2:com +53 adj:sg:gen:m1.m2.m3.n1.n2:pos +54 adj:sg:gen:m1.m2.m3.n1.n2:sup +55 adj:sg:inst:f:com +56 adj:sg:inst:f:pos +57 adj:sg:inst:f:sup +58 adj:sg:inst:m1.m2.m3.n1.n2:com +59 adj:sg:inst:m1.m2.m3.n1.n2:pos +60 adj:sg:inst:m1.m2.m3.n1.n2:sup +61 adj:sg:loc:f:com +62 adj:sg:loc:f:pos +63 adj:sg:loc:f:sup +64 adj:sg:loc:m1.m2.m3.n1.n2:com +65 adj:sg:loc:m1.m2.m3.n1.n2:pos +66 adj:sg:loc:m1.m2.m3.n1.n2:sup +67 adj:sg:nom:f:pos +68 adj:sg:nom:m1.m2.m3:pos +69 adj:sg:nom:n1.n2:pos +70 adj:sg:nom.voc:f:com +71 adj:sg:nom.voc:f:pos +72 adj:sg:nom.voc:f:sup +73 adj:sg:nom.voc:m1.m2.m3:com +74 adj:sg:nom.voc:m1.m2.m3:pos +75 adj:sg:nom.voc:m1.m2.m3:sup +76 adj:sg:nom.voc:n1.n2:com +77 adj:sg:nom.voc:n1.n2:pos +78 adj:sg:nom.voc:n1.n2:sup +79 adv +80 adv:com +81 adv:pos +82 adv:sup +83 aglt:pl:pri:imperf:nwok +84 aglt:pl:pri:imperf:wok +85 aglt:pl:sec:imperf:nwok +86 aglt:pl:sec:imperf:wok +87 aglt:sg:pri:imperf:nwok +88 aglt:sg:pri:imperf:wok +89 aglt:sg:sec:imperf:nwok +90 aglt:sg:sec:imperf:wok +91 bedzie:pl:pri:imperf +92 bedzie:pl:sec:imperf +93 bedzie:pl:ter:imperf +94 bedzie:sg:pri:imperf +95 bedzie:sg:sec:imperf +96 bedzie:sg:ter:imperf +97 brev:pun +98 burk +99 comp +100 cond:pl:m1.p1:pri:imperf +101 cond:pl:m1.p1:pri:imperf.perf +102 cond:pl:m1.p1:pri:perf +103 cond:pl:m1.p1:sec:imperf +104 cond:pl:m1.p1:sec:imperf.perf +105 cond:pl:m1.p1:sec:perf +106 cond:pl:m1.p1:ter:imperf +107 cond:pl:m1.p1:ter:imperf.perf +108 cond:pl:m1.p1:ter:perf +109 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf +110 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf +111 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:perf +112 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +113 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf +114 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:perf +115 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +116 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf +117 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:perf +118 cond:sg:f:pri:imperf +119 cond:sg:f:pri:imperf.perf +120 cond:sg:f:pri:perf +121 cond:sg:f:sec:imperf +122 cond:sg:f:sec:imperf.perf +123 cond:sg:f:sec:perf +124 cond:sg:f:ter:imperf +125 cond:sg:f:ter:imperf.perf +126 cond:sg:f:ter:perf +127 cond:sg:m1.m2.m3:pri:imperf +128 cond:sg:m1.m2.m3:pri:imperf.perf +129 cond:sg:m1.m2.m3:pri:perf +130 cond:sg:m1.m2.m3:sec:imperf +131 cond:sg:m1.m2.m3:sec:imperf.perf +132 cond:sg:m1.m2.m3:sec:perf +133 cond:sg:m1.m2.m3:ter:imperf +134 cond:sg:m1.m2.m3:ter:imperf.perf +135 cond:sg:m1.m2.m3:ter:perf +136 cond:sg:n1.n2:imperf +137 cond:sg:n1.n2:imperf.perf +138 cond:sg:n1.n2:perf +139 cond:sg:n1.n2:pri:imperf +140 cond:sg:n1.n2:pri:imperf.perf +141 cond:sg:n1.n2:pri:perf +142 cond:sg:n1.n2:sec:imperf +143 cond:sg:n1.n2:sec:imperf.perf +144 cond:sg:n1.n2:sec:perf +145 cond:sg:n1.n2:ter:imperf +146 cond:sg:n1.n2:ter:imperf.perf +147 cond:sg:n1.n2:ter:perf +148 conj +149 depr:pl:nom:m2 +150 depr:pl:voc:m2 +151 dig +152 emoticon +153 fin:pl:pri:imperf +154 fin:pl:pri:imperf.perf +155 fin:pl:pri:perf +156 fin:pl:sec:imperf +157 fin:pl:sec:imperf.perf +158 fin:pl:sec:perf +159 fin:pl:ter:imperf +160 fin:pl:ter:imperf.perf +161 fin:pl:ter:perf +162 fin:sg:pri:imperf +163 fin:sg:pri:imperf.perf +164 fin:sg:pri:perf +165 fin:sg:sec:imperf +166 fin:sg:sec:imperf.perf +167 fin:sg:sec:perf +168 fin:sg:ter:imperf +169 fin:sg:ter:imperf.perf +170 fin:sg:ter:perf +171 ger:pl:dat.loc:n2:imperf:aff +172 ger:pl:dat.loc:n2:imperf:neg +173 ger:pl:dat.loc:n2:imperf.perf:aff +174 ger:pl:dat.loc:n2:imperf.perf:neg +175 ger:pl:dat.loc:n2:perf:aff +176 ger:pl:dat.loc:n2:perf:neg +177 ger:pl:gen:n2:imperf:aff +178 ger:pl:gen:n2:imperf:neg +179 ger:pl:gen:n2:imperf.perf:aff +180 ger:pl:gen:n2:imperf.perf:neg +181 ger:pl:gen:n2:perf:aff +182 ger:pl:gen:n2:perf:neg +183 ger:pl:inst:n2:imperf:aff +184 ger:pl:inst:n2:imperf:neg +185 ger:pl:inst:n2:imperf.perf:aff +186 ger:pl:inst:n2:imperf.perf:neg +187 ger:pl:inst:n2:perf:aff +188 ger:pl:inst:n2:perf:neg +189 ger:pl:nom.acc:n2:imperf:aff +190 ger:pl:nom.acc:n2:imperf:neg +191 ger:pl:nom.acc:n2:imperf.perf:aff +192 ger:pl:nom.acc:n2:imperf.perf:neg +193 ger:pl:nom.acc:n2:perf:aff +194 ger:pl:nom.acc:n2:perf:neg +195 ger:sg:dat.loc:n2:imperf:aff +196 ger:sg:dat.loc:n2:imperf:neg +197 ger:sg:dat.loc:n2:imperf.perf:aff +198 ger:sg:dat.loc:n2:imperf.perf:neg +199 ger:sg:dat.loc:n2:perf:aff +200 ger:sg:dat.loc:n2:perf:neg +201 ger:sg:gen:n2:imperf:aff +202 ger:sg:gen:n2:imperf:neg +203 ger:sg:gen:n2:imperf.perf:aff +204 ger:sg:gen:n2:imperf.perf:neg +205 ger:sg:gen:n2:perf:aff +206 ger:sg:gen:n2:perf:neg +207 ger:sg:inst:n2:imperf:aff +208 ger:sg:inst:n2:imperf:neg +209 ger:sg:inst:n2:imperf.perf:aff +210 ger:sg:inst:n2:imperf.perf:neg +211 ger:sg:inst:n2:perf:aff +212 ger:sg:inst:n2:perf:neg +213 ger:sg:nom.acc:n2:imperf:aff +214 ger:sg:nom.acc:n2:imperf:neg +215 ger:sg:nom.acc:n2:imperf.perf:aff +216 ger:sg:nom.acc:n2:imperf.perf:neg +217 ger:sg:nom.acc:n2:perf:aff +218 ger:sg:nom.acc:n2:perf:neg +219 imps:imperf +220 imps:imperf.perf +221 imps:perf +222 impt:pl:pri:imperf +223 impt:pl:pri:imperf.perf +224 impt:pl:pri:perf +225 impt:pl:sec:imperf +226 impt:pl:sec:imperf.perf +227 impt:pl:sec:perf +228 impt:sg:sec:imperf +229 impt:sg:sec:imperf.perf +230 impt:sg:sec:perf +231 inf:imperf +232 inf:imperf.perf +233 inf:perf +234 interj +235 interp +236 naj +237 nie +238 num:comp +239 num:pl:acc:m1:rec +240 num:pl:dat.loc:n1.p1.p2:congr.rec +241 num:pl:dat:m1.m2.m3.n2.f:congr +242 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n1.n2.p1.p2:congr +243 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n2:congr +244 num:pl:gen.dat.loc:m1.m2.m3.n2.f:congr +245 num:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2:congr +246 num:pl:gen.loc:m1.m2.m3.n2.f:congr +247 num:pl:gen:n1.p1.p2:rec +248 num:pl:inst:f:congr +249 num:pl:inst:m1.m2.m3.f.n1.n2.p1.p2:congr +250 num:pl:inst:m1.m2.m3.f.n2:congr +251 num:pl:inst:m1.m2.m3.n2:congr +252 num:pl:inst:m1.m2.m3.n2.f:congr +253 num:pl:inst:n1.p1.p2:rec +254 num:pl:nom.acc:m1.m2.m3.f.n1.n2.p1.p2:rec +255 num:pl:nom.acc.voc:f:congr +256 num:pl:nom.acc.voc:m1:rec +257 num:pl:nom.acc.voc:m2.m3.f.n1.n2.p1.p2:rec +258 num:pl:nom.acc.voc:m2.m3.f.n2:rec +259 num:pl:nom.acc.voc:m2.m3.n2:congr +260 num:pl:nom.acc.voc:m2.m3.n2.f:congr +261 num:pl:nom.acc.voc:n1.p1.p2:rec +262 num:pl:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.f.n1.n2.p1.p2:rec +263 num:pl:nom.voc:m1:congr +264 num:pl:nom.voc:m1:rec +265 num:sg:nom.gen.dat.inst.acc.loc.voc:f:rec +266 num:sg:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.n1.n2:rec +267 pact:pl:acc:m1.p1:imperf:aff +268 pact:pl:acc:m1.p1:imperf:neg +269 pact:pl:acc:m1.p1:imperf.perf:aff +270 pact:pl:acc:m1.p1:imperf.perf:neg +271 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +272 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +273 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +274 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +275 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +276 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +277 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +278 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +279 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +280 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +281 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +282 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +283 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff +284 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg +285 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff +286 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg +287 pact:pl:nom.voc:m1.p1:imperf:aff +288 pact:pl:nom.voc:m1.p1:imperf:neg +289 pact:pl:nom.voc:m1.p1:imperf.perf:aff +290 pact:pl:nom.voc:m1.p1:imperf.perf:neg +291 pact:sg:acc.inst:f:imperf:aff +292 pact:sg:acc.inst:f:imperf:neg +293 pact:sg:acc.inst:f:imperf.perf:aff +294 pact:sg:acc.inst:f:imperf.perf:neg +295 pact:sg:acc:m1.m2:imperf:aff +296 pact:sg:acc:m1.m2:imperf:neg +297 pact:sg:acc:m1.m2:imperf.perf:aff +298 pact:sg:acc:m1.m2:imperf.perf:neg +299 pact:sg:acc:m3:imperf:aff +300 pact:sg:acc:m3:imperf:neg +301 pact:sg:acc:m3:imperf.perf:aff +302 pact:sg:acc:m3:imperf.perf:neg +303 pact:sg:dat:m1.m2.m3.n1.n2:imperf:aff +304 pact:sg:dat:m1.m2.m3.n1.n2:imperf:neg +305 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff +306 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg +307 pact:sg:gen.dat.loc:f:imperf:aff +308 pact:sg:gen.dat.loc:f:imperf:neg +309 pact:sg:gen.dat.loc:f:imperf.perf:aff +310 pact:sg:gen.dat.loc:f:imperf.perf:neg +311 pact:sg:gen:m1.m2.m3.n1.n2:imperf:aff +312 pact:sg:gen:m1.m2.m3.n1.n2:imperf:neg +313 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff +314 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg +315 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff +316 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg +317 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff +318 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg +319 pact:sg:nom.acc.voc:n1.n2:imperf:aff +320 pact:sg:nom.acc.voc:n1.n2:imperf:neg +321 pact:sg:nom.acc.voc:n1.n2:imperf.perf:aff +322 pact:sg:nom.acc.voc:n1.n2:imperf.perf:neg +323 pact:sg:nom.voc:f:imperf:aff +324 pact:sg:nom.voc:f:imperf:neg +325 pact:sg:nom.voc:f:imperf.perf:aff +326 pact:sg:nom.voc:f:imperf.perf:neg +327 pact:sg:nom.voc:m1.m2.m3:imperf:aff +328 pact:sg:nom.voc:m1.m2.m3:imperf:neg +329 pact:sg:nom.voc:m1.m2.m3:imperf.perf:aff +330 pact:sg:nom.voc:m1.m2.m3:imperf.perf:neg +331 pant:perf +332 pcon:imperf +333 ppas:pl:acc:m1.p1:imperf:aff +334 ppas:pl:acc:m1.p1:imperf:neg +335 ppas:pl:acc:m1.p1:imperf.perf:aff +336 ppas:pl:acc:m1.p1:imperf.perf:neg +337 ppas:pl:acc:m1.p1:perf:aff +338 ppas:pl:acc:m1.p1:perf:neg +339 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +340 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +341 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +342 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +343 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +344 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +345 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +346 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +347 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +348 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +349 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +350 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +351 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +352 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +353 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +354 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +355 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +356 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +357 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff +358 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg +359 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff +360 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg +361 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:aff +362 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:neg +363 ppas:pl:nom.voc:m1.p1:imperf:aff +364 ppas:pl:nom.voc:m1.p1:imperf:neg +365 ppas:pl:nom.voc:m1.p1:imperf.perf:aff +366 ppas:pl:nom.voc:m1.p1:imperf.perf:neg +367 ppas:pl:nom.voc:m1.p1:perf:aff +368 ppas:pl:nom.voc:m1.p1:perf:neg +369 ppas:sg:acc.inst:f:imperf:aff +370 ppas:sg:acc.inst:f:imperf:neg +371 ppas:sg:acc.inst:f:imperf.perf:aff +372 ppas:sg:acc.inst:f:imperf.perf:neg +373 ppas:sg:acc.inst:f:perf:aff +374 ppas:sg:acc.inst:f:perf:neg +375 ppas:sg:acc:m1.m2:imperf:aff +376 ppas:sg:acc:m1.m2:imperf:neg +377 ppas:sg:acc:m1.m2:imperf.perf:aff +378 ppas:sg:acc:m1.m2:imperf.perf:neg +379 ppas:sg:acc:m1.m2:perf:aff +380 ppas:sg:acc:m1.m2:perf:neg +381 ppas:sg:acc:m3:imperf:aff +382 ppas:sg:acc:m3:imperf:neg +383 ppas:sg:acc:m3:imperf.perf:aff +384 ppas:sg:acc:m3:imperf.perf:neg +385 ppas:sg:acc:m3:perf:aff +386 ppas:sg:acc:m3:perf:neg +387 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:aff +388 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:neg +389 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff +390 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg +391 ppas:sg:dat:m1.m2.m3.n1.n2:perf:aff +392 ppas:sg:dat:m1.m2.m3.n1.n2:perf:neg +393 ppas:sg:gen.dat.loc:f:imperf:aff +394 ppas:sg:gen.dat.loc:f:imperf:neg +395 ppas:sg:gen.dat.loc:f:imperf.perf:aff +396 ppas:sg:gen.dat.loc:f:imperf.perf:neg +397 ppas:sg:gen.dat.loc:f:perf:aff +398 ppas:sg:gen.dat.loc:f:perf:neg +399 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:aff +400 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:neg +401 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff +402 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg +403 ppas:sg:gen:m1.m2.m3.n1.n2:perf:aff +404 ppas:sg:gen:m1.m2.m3.n1.n2:perf:neg +405 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff +406 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg +407 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff +408 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg +409 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:aff +410 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:neg +411 ppas:sg:nom.acc.voc:n1.n2:imperf:aff +412 ppas:sg:nom.acc.voc:n1.n2:imperf:neg +413 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:aff +414 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:neg +415 ppas:sg:nom.acc.voc:n1.n2:perf:aff +416 ppas:sg:nom.acc.voc:n1.n2:perf:neg +417 ppas:sg:nom.voc:f:imperf:aff +418 ppas:sg:nom.voc:f:imperf:neg +419 ppas:sg:nom.voc:f:imperf.perf:aff +420 ppas:sg:nom.voc:f:imperf.perf:neg +421 ppas:sg:nom.voc:f:perf:aff +422 ppas:sg:nom.voc:f:perf:neg +423 ppas:sg:nom.voc:m1.m2.m3:imperf:aff +424 ppas:sg:nom.voc:m1.m2.m3:imperf:neg +425 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:aff +426 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:neg +427 ppas:sg:nom.voc:m1.m2.m3:perf:aff +428 ppas:sg:nom.voc:m1.m2.m3:perf:neg +429 ppron12:pl:acc:_:pri +430 ppron12:pl:acc:_:sec +431 ppron12:pl:dat:_:pri +432 ppron12:pl:dat:_:sec +433 ppron12:pl:gen:_:pri +434 ppron12:pl:gen:_:sec +435 ppron12:pl:inst:_:pri +436 ppron12:pl:inst:_:sec +437 ppron12:pl:loc:_:pri +438 ppron12:pl:loc:_:sec +439 ppron12:pl:nom:_:pri +440 ppron12:pl:nom:_:sec +441 ppron12:pl:voc:_:pri +442 ppron12:pl:voc:_:sec +443 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:akc +444 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:nakc +445 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:akc +446 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:nakc +447 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:akc +448 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:nakc +449 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:akc +450 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:nakc +451 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:akc +452 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:nakc +453 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:akc +454 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:nakc +455 ppron12:sg:inst:m1.m2.m3.f.n1.n2:pri +456 ppron12:sg:inst:m1.m2.m3.f.n1.n2:sec +457 ppron12:sg:loc:m1.m2.m3.f.n1.n2:pri +458 ppron12:sg:loc:m1.m2.m3.f.n1.n2:sec +459 ppron12:sg:nom:m1.m2.m3.f.n1.n2:pri +460 ppron12:sg:nom:m1.m2.m3.f.n1.n2:sec +461 ppron12:sg:voc:m1.m2.m3.f.n1.n2:sec +462 ppron3:pl:acc:m1.p1:ter:_:npraep +463 ppron3:pl:acc:m1.p1:ter:_:praep +464 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:npraep +465 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:praep +466 ppron3:pl:dat:_:ter:_:npraep +467 ppron3:pl:dat:_:ter:_:praep +468 ppron3:pl:gen:_:ter:_:npraep +469 ppron3:pl:gen:_:ter:_:praep +470 ppron3:pl:inst:_:ter:_:_ +471 ppron3:pl:loc:_:ter:_:_ +472 ppron3:pl:nom:m1.p1:ter:_:_ +473 ppron3:pl:nom:m2.m3.f.n1.n2.p2.p3:ter:_:_ +474 ppron3:sg:acc:f:ter:_:npraep +475 ppron3:sg:acc:f:ter:_:praep +476 ppron3:sg:acc:m1.m2.m3:ter:akc:npraep +477 ppron3:sg:acc:m1.m2.m3:ter:akc:praep +478 ppron3:sg:acc:m1.m2.m3:ter:nakc:npraep +479 ppron3:sg:acc:m1.m2.m3:ter:nakc:praep +480 ppron3:sg:acc:n1.n2:ter:_:npraep +481 ppron3:sg:acc:n1.n2:ter:_:praep +482 ppron3:sg:dat:f:ter:_:npraep +483 ppron3:sg:dat:f:ter:_:praep +484 ppron3:sg:dat:m1.m2.m3:ter:akc:npraep +485 ppron3:sg:dat:m1.m2.m3:ter:nakc:npraep +486 ppron3:sg:dat:m1.m2.m3:ter:_:praep +487 ppron3:sg:dat:n1.n2:ter:akc:npraep +488 ppron3:sg:dat:n1.n2:ter:nakc:npraep +489 ppron3:sg:dat:n1.n2:ter:_:praep +490 ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep +491 ppron3:sg:gen:f:ter:_:npraep +492 ppron3:sg:gen:f:ter:_:praep +493 ppron3:sg:gen:m1.m2.m3:ter:akc:npraep +494 ppron3:sg:gen:m1.m2.m3:ter:akc:praep +495 ppron3:sg:gen:m1.m2.m3:ter:nakc:npraep +496 ppron3:sg:gen:m1.m2.m3:ter:nakc:praep +497 ppron3:sg:gen:n1.n2:ter:akc:npraep +498 ppron3:sg:gen:n1.n2:ter:nakc:npraep +499 ppron3:sg:gen:n1.n2:ter:_:praep +500 ppron3:sg:inst:f:ter:_:praep +501 ppron3:sg:inst:m1.m2.m3:ter:_:_ +502 ppron3:sg:inst:n1.n2:ter:_:_ +503 ppron3:sg:loc:f:ter:_:_ +504 ppron3:sg:loc:m1.m2.m3:ter:_:_ +505 ppron3:sg:loc:n1.n2:ter:_:_ +506 ppron3:sg:nom:f:ter:_:_ +507 ppron3:sg:nom:m1.m2.m3:ter:_:_ +508 ppron3:sg:nom:n1.n2:ter:_:_ +509 praet:pl:m1.p1:imperf +510 praet:pl:m1.p1:imperf.perf +511 praet:pl:m1.p1:perf +512 praet:pl:m1.p1:pri:imperf +513 praet:pl:m1.p1:pri:imperf.perf +514 praet:pl:m1.p1:pri:perf +515 praet:pl:m1.p1:sec:imperf +516 praet:pl:m1.p1:sec:imperf.perf +517 praet:pl:m1.p1:sec:perf +518 praet:pl:m1.p1:ter:imperf +519 praet:pl:m1.p1:ter:imperf.perf +520 praet:pl:m1.p1:ter:perf +521 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf +522 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf.perf +523 praet:pl:m2.m3.f.n1.n2.p2.p3:perf +524 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf +525 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf +526 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:perf +527 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +528 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf +529 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:perf +530 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +531 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf +532 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:perf +533 praet:sg:f:imperf +534 praet:sg:f:imperf.perf +535 praet:sg:f:perf +536 praet:sg:f:pri:imperf +537 praet:sg:f:pri:imperf.perf +538 praet:sg:f:pri:perf +539 praet:sg:f:sec:imperf +540 praet:sg:f:sec:imperf.perf +541 praet:sg:f:sec:perf +542 praet:sg:f:ter:imperf +543 praet:sg:f:ter:imperf.perf +544 praet:sg:f:ter:perf +545 praet:sg:m1.m2.m3:imperf +546 praet:sg:m1.m2.m3:imperf:agl +547 praet:sg:m1.m2.m3:imperf:nagl +548 praet:sg:m1.m2.m3:imperf.perf +549 praet:sg:m1.m2.m3:perf +550 praet:sg:m1.m2.m3:perf:agl +551 praet:sg:m1.m2.m3:perf:nagl +552 praet:sg:m1.m2.m3:pri:imperf +553 praet:sg:m1.m2.m3:pri:imperf.perf +554 praet:sg:m1.m2.m3:pri:perf +555 praet:sg:m1.m2.m3:sec:imperf +556 praet:sg:m1.m2.m3:sec:imperf.perf +557 praet:sg:m1.m2.m3:sec:perf +558 praet:sg:m1.m2.m3:ter:imperf +559 praet:sg:m1.m2.m3:ter:imperf.perf +560 praet:sg:m1.m2.m3:ter:perf +561 praet:sg:n1.n2:imperf +562 praet:sg:n1.n2:imperf.perf +563 praet:sg:n1.n2:perf +564 praet:sg:n1.n2:pri:imperf +565 praet:sg:n1.n2:pri:imperf.perf +566 praet:sg:n1.n2:pri:perf +567 praet:sg:n1.n2:sec:imperf +568 praet:sg:n1.n2:sec:imperf.perf +569 praet:sg:n1.n2:sec:perf +570 praet:sg:n1.n2:ter:imperf +571 praet:sg:n1.n2:ter:imperf.perf +572 praet:sg:n1.n2:ter:perf +573 pred +574 prefa +575 prefppas +576 prefs +577 prefv +578 prep:acc +579 prep:acc:nwok +580 prep:acc:wok +581 prep:dat +582 prep:gen +583 prep:gen:nwok +584 prep:gen:wok +585 prep:inst +586 prep:inst:nwok +587 prep:inst:wok +588 prep:loc +589 prep:loc:nwok +590 prep:loc:wok +591 prep:nom +592 qub +593 romandig +594 siebie:acc +595 siebie:dat +596 siebie:gen +597 siebie:inst +598 siebie:loc +599 substa +600 subst:pl:acc:f +601 subst:pl:acc:m1 +602 subst:pl:acc:m2 +603 subst:pl:acc:m3 +604 subst:pl:acc:n1 +605 subst:pl:acc:n2 +606 subst:pl:acc:p1 +607 subst:pl:acc:p2 +608 subst:pl:acc:p3 +609 subst:pl:dat:f +610 subst:pl:dat:m1 +611 subst:pl:dat:m2 +612 subst:pl:dat:m3 +613 subst:pl:dat:n1 +614 subst:pl:dat:n2 +615 subst:pl:dat:p1 +616 subst:pl:dat:p2 +617 subst:pl:dat:p3 +618 subst:pl:gen:f +619 subst:pl:gen:m1 +620 subst:pl:gen:m2 +621 subst:pl:gen:m3 +622 subst:pl:gen:n1 +623 subst:pl:gen:n2 +624 subst:pl:gen:p1 +625 subst:pl:gen:p2 +626 subst:pl:gen:p3 +627 subst:pl:inst:f +628 subst:pl:inst:m1 +629 subst:pl:inst:m2 +630 subst:pl:inst:m3 +631 subst:pl:inst:n1 +632 subst:pl:inst:n2 +633 subst:pl:inst:p1 +634 subst:pl:inst:p2 +635 subst:pl:inst:p3 +636 subst:pl:loc:f +637 subst:pl:loc:m1 +638 subst:pl:loc:m2 +639 subst:pl:loc:m3 +640 subst:pl:loc:n1 +641 subst:pl:loc:n2 +642 subst:pl:loc:p1 +643 subst:pl:loc:p2 +644 subst:pl:loc:p3 +645 subst:pl:nom:f +646 subst:pl:nom:m1 +647 subst:pl:nom:m2 +648 subst:pl:nom:m3 +649 subst:pl:nom:n1 +650 subst:pl:nom:n2 +651 subst:pl:nom:p1 +652 subst:pl:nom:p2 +653 subst:pl:nom:p3 +654 subst:pl:voc:f +655 subst:pl:voc:m1 +656 subst:pl:voc:m2 +657 subst:pl:voc:m3 +658 subst:pl:voc:n1 +659 subst:pl:voc:n2 +660 subst:pl:voc:p1 +661 subst:pl:voc:p2 +662 subst:pl:voc:p3 +663 subst:sg:acc:f +664 subst:sg:acc:m1 +665 subst:sg:acc:m2 +666 subst:sg:acc:m3 +667 subst:sg:acc:n1 +668 subst:sg:acc:n2 +669 subst:sg:dat:f +670 subst:sg:dat:m1 +671 subst:sg:dat:m2 +672 subst:sg:dat:m3 +673 subst:sg:dat:n1 +674 subst:sg:dat:n2 +675 subst:sg:gen:f +676 subst:sg:gen:m1 +677 subst:sg:gen:m2 +678 subst:sg:gen:m3 +679 subst:sg:gen:n1 +680 subst:sg:gen:n2 +681 subst:sg:inst:f +682 subst:sg:inst:m1 +683 subst:sg:inst:m2 +684 subst:sg:inst:m3 +685 subst:sg:inst:n1 +686 subst:sg:inst:n2 +687 subst:sg:loc:f +688 subst:sg:loc:m1 +689 subst:sg:loc:m2 +690 subst:sg:loc:m3 +691 subst:sg:loc:n1 +692 subst:sg:loc:n2 +693 subst:sg:nom:f +694 subst:sg:nom:m1 +695 subst:sg:nom:m2 +696 subst:sg:nom:m3 +697 subst:sg:nom:n1 +698 subst:sg:nom:n2 +699 subst:sg:voc:f +700 subst:sg:voc:m1 +701 subst:sg:voc:m2 +702 subst:sg:voc:m3 +703 subst:sg:voc:n1 +704 subst:sg:voc:n2 +705 winien:pl:m1.p1:imperf +706 winien:pl:m1.p1:pri:imperf +707 winien:pl:m1.p1:sec:imperf +708 winien:pl:m1.p1:ter:imperf +709 winien:pl:m2.m3.f.n1.n2.p2.p3:imperf +710 winien:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +711 winien:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +712 winien:sg:f:imperf +713 winien:sg:f:pri:imperf +714 winien:sg:f:sec:imperf +715 winien:sg:f:ter:imperf +716 winien:sg:m1.m2.m3:imperf +717 winien:sg:m1.m2.m3:pri:imperf +718 winien:sg:m1.m2.m3:sec:imperf +719 winien:sg:m1.m2.m3:ter:imperf +720 winien:sg:n1.n2:imperf +721 winien:sg:n1.n2:pri:imperf +722 winien:sg:n1.n2:sec:imperf +723 winien:sg:n1.n2:ter:imperf + + +[NAMES] +0 +1 astr. +2 budowla +3 członek rodu +4 człon nazwiska +5 człon nazwiska (herb) +6 człon nazwy firmy +7 firma +8 geograficzna +9 imię +10 instytucja +11 język programowania +12 krój pisma +13 marka +14 nazwisko +15 oprogramowanie +16 organizacja +17 patronimicum +18 pospolita +19 przydomek +20 pseudonim +21 sufiks nazwiska +22 środek lokomocji +23 święto +24 tytuł +25 własna