00001 #pragma once
00002 #include <string>
00003 #include "StatelessFeatureFunction.h"
00004
00005 namespace Moses
00006 {
00007
00008
00009 class RuleScope : public StatelessFeatureFunction
00010 {
00011 public:
00012 RuleScope(const std::string &line);
00013
00014 virtual bool IsUseable(const FactorMask &mask) const {
00015 return true;
00016 }
00017
00018 virtual void EvaluateInIsolation(const Phrase &source
00019 , const TargetPhrase &targetPhrase
00020 , ScoreComponentCollection &scoreBreakdown
00021 , ScoreComponentCollection &estimatedScores) const;
00022
00023 virtual void EvaluateWithSourceContext(const InputType &input
00024 , const InputPath &inputPath
00025 , const TargetPhrase &targetPhrase
00026 , const StackVec *stackVec
00027 , ScoreComponentCollection &scoreBreakdown
00028 , ScoreComponentCollection *estimatedScores = NULL) const {
00029 }
00030
00031 void EvaluateTranslationOptionListWithSourceContext(const InputType &input
00032 , const TranslationOptionList &translationOptionList) const {
00033 }
00034
00035
00036 virtual void EvaluateWhenApplied(const Hypothesis& hypo,
00037 ScoreComponentCollection* accumulator) const {
00038 }
00039
00040 virtual void EvaluateWhenApplied(const ChartHypothesis &hypo,
00041 ScoreComponentCollection* accumulator) const {
00042 }
00043
00044 void SetParameter(const std::string& key, const std::string& value);
00045
00046 protected:
00047 bool m_sourceSyntax;
00048 bool m_perScope;
00049 bool m_futureCostOnly;
00050
00051 bool IsGlueRule(const Phrase &source) const;
00052
00053 };
00054
00055 }
00056