public void ResolvedSinglePartToToken(ISoftReferenceTokenItem item, IOilexerGrammarTokenEntry primary)
 {
     if (item.PrimaryToken != null)
     {
         this.handler.ReclassifyToken(item.PrimaryToken, primary);
     }
 }
 public void ResolvedDualPartToTokenItem(ISoftReferenceTokenItem item, IOilexerGrammarTokenEntry primary, ITokenItem secondary)
 {
     if (item.PrimaryToken != null)
     {
         this.handler.ReclassifyToken(item.PrimaryToken, primary);
     }
     if (item.SecondaryToken != null)
     {
         this.handler.ReclassifyToken(item.SecondaryToken, secondary);
     }
 }
 private static ITokenItem ResolveSoftReference(this ISoftReferenceTokenItem item, IOilexerGrammarTokenEntry entry, OilexerGrammarFile file, ICompilerErrorCollection errors)
 {
     IOilexerGrammarTokenEntry tokenE = tokenEntries.OilexerGrammarFindScannableEntry(item.PrimaryName);
     if (tokenE != null)
     {
         if (item.SecondaryName != null)
         {
             ITokenItem iti = tokenE.FindTokenItem(item.SecondaryName);
             if (iti != null)
             {
                 if (iti is ILiteralCharTokenItem)
                 {
                     LiteralCharReferenceTokenItem result = new LiteralCharReferenceTokenItem(tokenE, ((ILiteralCharTokenItem)(iti)), item.Column, item.Line, item.Position);
                     if (!(string.IsNullOrEmpty(item.Name)))
                         result.Name = item.Name;
                     if (resolutionAid != null)
                         resolutionAid.ResolvedDualPartToTokenItem(item, tokenE, iti);
                     return result;
                 }
                 else if (iti is ILiteralStringTokenItem)
                 {
                     LiteralStringReferenceTokenItem result = new LiteralStringReferenceTokenItem(tokenE, ((ILiteralStringTokenItem)(iti)), item.Column, item.Line, item.Position);
                     if (!(string.IsNullOrEmpty(item.Name)))
                         result.Name = item.Name;
                     if (resolutionAid != null)
                         resolutionAid.ResolvedDualPartToTokenItem(item, tokenE, iti);
                     return result;
                 }
                 else
                 {
                     errors.SourceModelError<ISoftReferenceTokenItem>(OilexerGrammarCore.CompilerErrors.UndefinedTokenReference, new LineColumnPair(item.Line, item.Column), new LineColumnPair(item.Line, item.Column + item.PrimaryName.Length), new Uri(entry.FileName, UriKind.RelativeOrAbsolute), item, string.Format(" '{0}'", item.PrimaryName));
                 }
             }
         }
         else
         {
             TokenReferenceTokenItem result = new TokenReferenceTokenItem(tokenE, item.Column, item.Line, item.Position);
             ((SoftReferenceTokenItem)(item)).CloneData(result);
             if (resolutionAid != null)
                 resolutionAid.ResolvedSinglePartToToken(item, tokenE);
             return result;
         }
     }
     else if (item.SecondaryName == null)
         errors.SourceModelError<ISoftReferenceTokenItem>(OilexerGrammarCore.CompilerErrors.UndefinedTokenReference, new LineColumnPair(item.Line, item.Column), new LineColumnPair(item.Line, item.Column + item.PrimaryName.Length), new Uri(entry.FileName, UriKind.RelativeOrAbsolute), item, string.Format(" '{0}'", item.PrimaryName));
     else
         errors.SourceModelError<ISoftReferenceTokenItem>(OilexerGrammarCore.CompilerErrors.UndefinedTokenReference, new LineColumnPair(item.Line, item.Column), new LineColumnPair(item.SecondaryToken.Line, item.SecondaryToken.Column + item.SecondaryToken.Length), new Uri(entry.FileName, UriKind.RelativeOrAbsolute), item, string.Format(" '{0}'", item.PrimaryName));
     return item;
 }