From: <kea...@na...> - 2003-02-12 22:35:46
|
This is where we enter the world of javacc which is terra incognito to = me, but AFAICT we'd need to make a "lookahead production" that determines = if something is indeed a directive/macro and then push it back on the = stream if it isn't. Along the way the EEH could decide whether to spew, or let = this stand as text. Any idea how to do this? Keats > -----Original Message----- > From: Eric B. Ridge [mailto:eb...@tc...] > Sent: Wednesday, February 12, 2003 5:29 PM > To: kea...@na... > Cc: la...@op...; br...@qu...; ma...@an...; > web...@li... > Subject: Re: [Webmacro-devel] Handling Dreamweaver stuff >=20 >=20 > On Wednesday, February 12, 2003, at 05:26 PM,=20 > kea...@na... wrote: >=20 > > I guess I was a bit hasty in my post ... it appears the solution is = > > not quite as trivial as I had thought.=A0 The problem is how=20 > to recreate=20 > > the original template text after it has already been=20 > parsed, with all=20 > > the proper whitespace, etc.=A0 This seems like a parser hack,=20 > i.e., if=20 > > the MacroBuilder spews a NoSuchDirectiveException, then the parser=20 > > needs to push back all the whitespace and the # directive name.=A0 > > > > Bleck! >=20 > eww, I didn't even consider the <WS> eating. Bleck! is right. >=20 > Now what? >=20 > eric >=20 > > > > Keats > > > > > -----Original Message----- > > > From: Keats Kirsch > > > Sent: Wednesday, February 12, 2003 5:10 PM > > > To: 'Eric B. Ridge'; Keats Kirsch > > > Cc: la...@op...; br...@qu...; ma...@an...; > > > web...@li... > > > Subject: RE: [Webmacro-devel] Handling Dreamweaver stuff > > > > > > > > > You're right, I was mislead by some apparently dead code in > > > the parser: > > > > > >=A0=A0=A0=A0 throw new ParseException("No such directive #" + = directive); > > > > > > Apparently, this now gets handled by the > > > MacroBuilder.build(), which throws: > > > > > >=A0=A0=A0=A0=A0=A0=A0=A0=A0 throw new BuildException ("#" + name + = ": no such > > > Macro or Directive"); > > >=A0=A0 > > > This should make things much simpler. > > > > > > So you could just say: > > > > > >=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 = bc.getEvaluationExceptionHandler().evaluate(null, bc, > > >=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 new BuildException ("#" + = name + ": no such Macro > > > or Directive")); > > > > > > This would actually fail with the DefaultEEH, as it currently > > > doesn't check for a null variable arg.=A0 Easily fixed, but > > > better would be to create a new PropertyException, like > > > PropertyException.NoSuchDirectiveOrMacro and throw that. > > > > > > I could try to make these changes if you'd like. > > > > > > Keats > > > > > > > -----Original Message----- > > > > From: Eric B. Ridge [mailto:eb...@tc...] > > > > Sent: Wednesday, February 12, 2003 4:36 PM > > > > To: kea...@na... > > > > Cc: la...@op...; br...@qu...; ma...@an...; > > > > web...@li... > > > > Subject: Re: [Webmacro-devel] Handling Dreamweaver stuff > > > > > > > > > > > > On Wednesday, February 12, 2003, at 04:01=A0 PM, > > > > kea...@na... wrote: > > > > > > > > > I think using the EEH would be great, but it does present = some > > > > > challenges as Eric has pointed out.=A0 The unknown directive > > > > exceptions > > > > > are thrown by the parser.=A0 The parser does have a > > > reference to the > > > > > broker, so it should be able to get the EEH and pass > > > > exceptions back > > > > > to it. > > > > > > > > Technically, it's a BuildException, not a ParseException. > > > > > > > > > > > > > > Unfortunately the EEH interface was designed to=20 > handle evaluation > > > > > exceptions (hence the name).=A0 To handle parse=20 > exceptions we would > > > > > probably want a new method in the interface (like > > > "parse()").=A0 This > > > > > would require a change in all existing EEH = implementations.=A0 > > > >=A0 Probably > > > > > not a huge problem, but something to consider.=A0 > > > > > > > > > > Also the name wouldn't be quite appropriate if we expand > > > > the scope of > > > > > this.=A0 It should probably be just ExceptionHandler or > > > > > WMExceptionHandler.=A0 Maybe an o.w.ExceptionHandler > > > interface could > > > > > extend EvaluationExceptionHandler and add the new method.=A0 > > > > Then if you > > > > > configure an ExceptionHandler, it would automatically set > > > > the EEH as > > > > > well.=A0 This should preserve backwards compatability. > > > > > > > > I don't think we'll need to change the interface for=20 > EEH.=A0 But we > > > > could/should change the name... > > > > > > > > > > > > > > In any case, someone would need to tweek the parser -- and > > > > I know of > > > > > only two candidates ... > > > > > > > > The parser won't need to be touched.=A0 I don't believe. > > > > > > > > > > > > > > Keats > > > > > > > > > > > -----Original Message----- > > > > > > From: Eric B. Ridge [mailto:eb...@tc...] > > > > > > Sent: Tuesday, February 11, 2003 8:05 PM > > > > > > To: la...@op... > > > > > > Cc: Brian Goetz; ma...@an...; > > > > > > web...@li... > > > > > > Subject: Re: [Webmacro-devel] Handling Dreamweaver stuff > > > > > > > > > > > > > > > > > > On Tuesday, February 11, 2003, at 04:12=A0 PM, Lane Sharman = > > wrote: > > > > > > > > > > > > > ebr: > > > > > > > > > > > > > > Can you make a stab at modifying eeh so that we can try > > > > this out? > > > > > > > > > > > > I can, yes... when I find the time. > > > > > > > > > > > > The issue here is that EEH is used as a "runtime"=20 > thing, not a > > > > > > "buildtime" thing, so I'm not sure how it will=20 > interact with=20 > > the > > > > > > BuildContext (if it all). > > > > > > > > > > > > Assuming I can work that out, I guess we want: > > > > > > =A0=A0=A0=A0=A0 CrankyEEH to *always* throw on #unknown = directives > > > > > > =A0=A0=A0=A0=A0 DefaultEEH to *always* pass #unknown = directives to the > > > > > > stream as > > > > > > string literals > > > > > >=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 MarcEEH to do whatever Marc = wants, to be > > > > written by him.=A0 > > > > > :) > > > > > > > > > > > > eric > > > > > > > > > > > > > > > > > > > > -l > > > > > > > > > > > > > > Eric B. Ridge wrote: > > > > > > > > > > > > > >> On Tuesday, February 11, 2003, at 03:35=A0 PM, Brian > > > Goetz wrote: > > > > > > >> > > > > > > >>>> This problem is elegantly solved thru the=20 > introduction of=20 > > a > > > > > > >>>> property, > > > > > > >>>> StrictDirectiveTypeChecking. Invariably, there will be > > > > > > times when > > > > > > >>>> you > > > > > > >>>> cannot "include as text" a DW file because you will > > > > want to add > > > > > > >>>> some WM > > > > > > >>>> var reference to it! > > > > > > >>> > > > > > > >>> > > > > > > >>> I'd rather see "strict directive checking"=20 > rolled in with > > > > > > other forms > > > > > > >>> of strict checking (like the Cranky EEH), rather than > > > > have seven > > > > > > >>> different > > > > > > >>> things a user would have to do to get strict checking. > > > > > > >> > > > > > > >> > > > > > > >> Better yet (maybe), roll this thing through EEH... if > > > > that's even > > > > > > >> possible. > > > > > > >> > > > > > > >> eric > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> ------------------------------------------------------- > > > > > > >> This SF.NET email is sponsored by: > > > > > > >> SourceForge Enterprise Edition + IBM + LinuxWorld =3D > > > > > > Something 2 See! > > > > > > >> http://www.vasoftware.com > > > > > > >> _______________________________________________ > > > > > > >> Webmacro-devel mailing list > > > > > > >> Web...@li... > > > > > > >>=20 > https://lists.sourceforge.net/lists/listinfo/webmacro-devel > > > > > > >> > > > > > > > > > > > > > > -- > > > > > > > Lane Sharman > > > > > > > http://opendoors.com Conga, GoodTimes and Application > > > > > > Hosting Services > > > > > > > http://opendoors.com/lane.pdf BIO > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > > > > > This SF.NET email is sponsored by: > > > > > > > SourceForge Enterprise Edition + IBM + LinuxWorld =3D > > > Something 2 > > > > > See! > > > > > > > http://www.vasoftware.com > > > > > > > _______________________________________________ > > > > > > > Webmacro-devel mailing list > > > > > > > Web...@li... > > > > > > >=20 > https://lists.sourceforge.net/lists/listinfo/webmacro-devel > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > > > > This SF.NET email is sponsored by: > > > > > > SourceForge Enterprise Edition + IBM + LinuxWorld =3D > > > > Something 2 See! > > > > > > http://www.vasoftware.com > > > > > > _______________________________________________ > > > > > > Webmacro-devel mailing list > > > > > > Web...@li... > > > > > > https://lists.sourceforge.net/lists/listinfo/webmacro-devel > > > > > > > > > > > > > > > > > > > > >=20 |