00001 #include <iostream>
00002
00003 #include "LinguisticDefinition/LingDef.h"
00004 #include "LinguisticDefinition/LingFeaturesSet.h"
00005
00006 using namespace std;
00007 using namespace LinguisticDefinition;
00008
00012 int main(int argc, char *argv[]) {
00013
00014 LingDef lingDef("ar");
00015
00016
00017 {
00018 {
00019 LingDef::Pos &basePos = lingDef.createVirtualPos();
00020 LingDef::Pos &nounPos = basePos.createSubPos("NOUN");
00021 {
00022 LingDef::Feature &helloFeature =
00023 basePos.createFeature("hello",
00024 LingDef::Feature::MISC,
00025 LingDef::Feature::BOOLEAN);
00026 }
00027
00028 {
00029 LingDef::Feature &numberFeature =
00030 nounPos.createFeature("number",
00031 LingDef::Feature::MISC,
00032 LingDef::Feature::ENUM);
00033
00034 LingDef::Feature &singularFeature =
00035 numberFeature.createEnumValueFeature("singular");
00036 singularFeature.setDefault(true);
00037
00038 LingDef::Feature &pluralFeature =
00039 numberFeature.createEnumValueFeature("plural");
00040 }
00041
00042 {
00043 LingDef::Feature &genderFeature =
00044 nounPos.createFeature("gender",
00045 LingDef::Feature::MISC,
00046 LingDef::Feature::ENUM);
00047
00048 LingDef::Feature &singularFeature =
00049 genderFeature.createEnumValueFeature("masculine");
00050 singularFeature.setDefault(true);
00051
00052 LingDef::Feature &pluralFeature =
00053 genderFeature.createEnumValueFeature("feminine");
00054 }
00055
00056 LingDef::Pos &verbPos = basePos.createSubPos("VERB");
00057 {
00058 LingDef::Feature &numberFeature =
00059 verbPos.createFeature("number",
00060 LingDef::Feature::MISC,
00061 LingDef::Feature::ENUM);
00062
00063 LingDef::Feature &singularFeature =
00064 numberFeature.createEnumValueFeature("singular");
00065 singularFeature.setDefault(true);
00066
00067 LingDef::Feature &pluralFeature =
00068 numberFeature.createEnumValueFeature("plural");
00069 }
00070 }
00071 }
00072
00073 {
00074 const LingDef::Pos *nounPos = lingDef.getPos("NOUN");
00075 const LingDef::Pos *verbPos = lingDef.getPos("VERB");
00076
00077 LingFeaturesSet featuresSet;
00078 {
00079 LingFeatures features(*nounPos);
00080 featuresSet.add(features);
00081 }
00082
00083 {
00084 LingFeatures features(*nounPos);
00085 features += "hello";
00086 featuresSet.add(features);
00087 }
00088
00089
00090
00091
00092
00093
00094
00095 featuresSet.set("singular");
00096 featuresSet.set("plural");
00097 featuresSet.set("masculine");
00098 featuresSet.set("feminine");
00099 featuresSet.set("hello");
00100 {
00101 set<const LingDef::Feature *> enumValues;
00102 featuresSet.getEnumValues("number", enumValues);
00103 {for (set<const LingDef::Feature *>::iterator it = enumValues.begin();
00104 it != enumValues.end(); ++it) {
00105 cerr << (*it)->getName() << endl;
00106 }}
00107 }
00108
00109 }
00110 }