public void CreateSyntaxDefinition() { TestHelper.Init(); this.m_syntaxDefinition = new SyntaxDefinition("unitTest"); SyntaxContext context = this.m_syntaxDefinition.MainContext; this.m_syntaxDefinition.GetCluster("@cPreProcGroup", context).SetContentsTo("cUserLabel"); Region cDefine = new Region(context, "cDefine"); cDefine.Contains.SetContentsTo("ALLBUT,@CPreProcGroup,@Spell"); this.m_syntaxDefinition.AddHighlightLink("cDefine", "Macro"); cDefine.StartPatterns.Add(new Pattern("#define")); cDefine.EndPatterns.Add(new Pattern("#end")); new VimMatch(context, "cUserLabel", new Pattern(@"\w+")); this.m_syntaxDefinition.AddHighlightLink("cUserLabel", "Label"); this.m_syntaxDefinition.FinishSyntaxDefinition(); }
private static string DumpRegionPatterns(Region region) { StringBuilder lines = new StringBuilder(); foreach (Pattern pattern in region.StartPatterns) { lines.Append(DumpPattern(pattern, "start ")); } foreach (Pattern pattern in region.SkipPatterns) { lines.Append(DumpPattern(pattern, "skip ")); } foreach (Pattern pattern in region.EndPatterns) { lines.Append(DumpPattern(pattern, "end ")); } return lines.ToString(); }
private void AddRegion(Match m) { if(!this.IsProcessingTokens) { return; } string groupName = m.Groups["groupName"].Value; Region r = new Region(this.SourceFile.SyntaxContext, groupName); this.ProcessOptions(r, m); if (0 == r.StartPatterns.Count || 0 == r.EndPatterns.Count) { throw new AssertionViolationException("Invalid region. Region has 0 start patterns or 0 end patterns"); } }