예제 #1
0
        public virtual SequencePattern.PatternExpr GetSequencePatternExpr(string name, bool copy)
        {
            object obj = variables[name];

            if (obj != null)
            {
                if (obj is SequencePattern)
                {
                    SequencePattern seqPattern = (SequencePattern)obj;
                    return(seqPattern.GetPatternExpr());
                }
                else
                {
                    if (obj is SequencePattern.PatternExpr)
                    {
                        SequencePattern.PatternExpr pe = (SequencePattern.PatternExpr)obj;
                        return((copy) ? pe.Copy() : pe);
                    }
                    else
                    {
                        if (obj is NodePattern)
                        {
                            return(new SequencePattern.NodePatternExpr((NodePattern)obj));
                        }
                        else
                        {
                            if (obj is string)
                            {
                                try
                                {
                                    return(parser.ParseSequence(this, (string)obj));
                                }
                                catch (Exception pex)
                                {
                                    throw new Exception("Error parsing " + obj + " to sequence pattern", pex);
                                }
                            }
                            else
                            {
                                throw new Exception("Invalid sequence pattern variable class: " + obj.GetType());
                            }
                        }
                    }
                }
            }
            return(null);
        }
 /// <summary>
 /// Compiles a sequence of regular expressions into a TokenSequencePattern
 /// using the specified environment.
 /// </summary>
 /// <param name="env">Environment to use</param>
 /// <param name="strings">List of regular expression to be compiled</param>
 /// <returns>Compiled TokenSequencePattern</returns>
 public static Edu.Stanford.Nlp.Ling.Tokensregex.TokenSequencePattern Compile(Env env, params string[] strings)
 {
     try
     {
         IList <SequencePattern.PatternExpr> patterns = new List <SequencePattern.PatternExpr>();
         foreach (string @string in strings)
         {
             // TODO: Check token sequence parser?
             SequencePattern.PatternExpr pattern = env.parser.ParseSequence(env, @string);
             patterns.Add(pattern);
         }
         SequencePattern.PatternExpr nodeSequencePattern = new SequencePattern.SequencePatternExpr(patterns);
         return(new Edu.Stanford.Nlp.Ling.Tokensregex.TokenSequencePattern(StringUtils.Join(strings), nodeSequencePattern));
     }
     catch (Exception ex)
     {
         throw new Exception(ex);
     }
 }
 /// <summary>Compiles a PatternExpr into a TokenSequencePattern.</summary>
 /// <param name="nodeSequencePattern">A sequence pattern expression (before translation into a NFA)</param>
 /// <returns>Compiled TokenSequencePattern</returns>
 protected internal static SequencePattern <T> Compile(SequencePattern.PatternExpr nodeSequencePattern)
 {
     return(new Edu.Stanford.Nlp.Ling.Tokensregex.TokenSequencePattern(null, nodeSequencePattern));
 }
 public TokenSequencePattern(string patternStr, SequencePattern.PatternExpr nodeSequencePattern, ISequenceMatchAction <ICoreMap> action)
     : base(patternStr, nodeSequencePattern, action)
 {
 }
 public TokenSequencePattern(string patternStr, SequencePattern.PatternExpr nodeSequencePattern)
     : base(patternStr, nodeSequencePattern)
 {
 }