- Subject: Re: DFA problem
 
- From: Morten Bo Johansen <mojo@xxxxxxxx>
 
- Date: Mon, 21 Jul 2003 20:34:20 +0200
 
Morten Bo Johansen <mojo@xxxxxxxx> wrote:
MBJ> Can anyone tell me why these two rules are mutually exclusive?
MBJ>    dfa_define_highlight_rule ("\".*[^\"]$", missquote, name);
MBJ>    dfa_define_highlight_rule ("\\\\n", lbreak, name);
MBJ>    
MBJ> The first highlights all lines that has a double quote
MBJ> somewhere in the line, followed by any characters and which 
MBJ> are not terminated by a double quote. The second just highlights 
MBJ> the newline literal "\n".
MBJ> They work individually but not together and I don't understand
MBJ> why.
I should be more precise: With the above two rules,
   "string       % 'string' is highlighted
    string\n     % '\n' is highlighted
    \"string\n"  % '\n' is highlighted
   "string\n"    % '\n' is nolonger highlighted
    str"ing\n"   % '\n' is nolonger highlighted
I.e., if I have these two rules together, then '\n' won't be
highlighted, if it is preceded by an unescaped double quote.
I have enclosed a small test file.
Morten
-- 
In capitalism, man exploits man.  In socialism, it's exactly the opposite.
                                 - Ben Tucker, famous vaudeville comedian
variable mode ="testdfa"; 
add_color_object("missquote");
add_color_object("lbreak");
set_color("lbreak", "green", "black");
set_color("missquote", "yellow", "black");
#ifdef HAS_DFA_SYNTAX
create_syntax_table (mode);
%%% DFA_CACHE_BEGIN %%%
static define setup_dfa_callback (mode)
{
   dfa_define_highlight_rule ("\".*[^\"]$", "missquote", mode);
   dfa_define_highlight_rule ("\\\\n", "lbreak", mode);
   dfa_build_highlight_table(mode);
}
dfa_set_init_callback (&setup_dfa_callback, mode);
%%% DFA_CACHE_END %%%
enable_dfa_syntax_for_mode(mode);
#endif
define testdfa_mode()
{
#ifdef HAS_DFA_SYNTAX
   use_syntax_table(mode);
   use_dfa_syntax(1);
#endif
}
  [2003 date index]
  [2003 thread index]
  
  [Thread Prev] [Thread Next]
      
  [Date Prev] [Date Next]