<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>full fathom five: Category Java/J2EE</title>
    <link>http://www.michaelstudman.com/fullfathomfive/articles/category/java-j2ee</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>the blog of Michael Studman</description>
    <item>
      <title>The true cost of exceptions</title>
      <description>Exception-throwing causing your application to run slower than molasses? Exception-wrapping causing you to loose the original problem like the proverbial needle in the haystack? Who cares? The true cost of exceptions is that you can never type "exchange" or "exchequer" or any other word starting with "exc" without your finger memory first overruling you.&lt;br /&gt; </description>
      <pubDate>Fri, 03 Mar 2006 14:59:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:2cf5e3a9-4c65-4ef5-8d1f-c9242bd600a5</guid>
      <author>Michael Studman</author>
      <link>http://www.michaelstudman.com/fullfathomfive/articles/2006/03/03/the-true-cost-of-exceptions</link>
      <category>Java</category>
      <category>Java/J2EE</category>
      <category>codegargle</category>
      <trackback:ping>http://www.michaelstudman.com/fullfathomfive/articles/trackback/8</trackback:ping>
    </item>
    <item>
      <title>Appledrama: I want my Mac (don't care what I have to do)*</title>
      <description>&lt;p&gt;
So I decided to make the big leap into the Apple world. Actually, it turned out to be more like a sideways wobble.
&lt;/p&gt;
&lt;p&gt;Suffering from the Apple halo effect, I was quite happy to throw down £1100 for a nice new 12&amp;#8221; Powerbook at the online Apple store. On their site, they state it&amp;#8217;s ready to ship in 24hrs. With the 3-7 days of delivery time that should have meant I received my new baby at most a week after purchasing.&lt;/p&gt;
&lt;p&gt;
So I key in my credit card details and click submit faster than I&amp;#8217;d accept a blow job from my gym instructor (Sammy, are you reading?) The first confirmation email I recieved gave a shipping date 48 business hours later (but I could have forgiven them that for just that).
&lt;/p&gt;
&lt;p&gt;
And then came the 4 days of Applean silence.
&lt;/p&gt;
&lt;p&gt;
After a rather shirty call to the Apple control centre and some fluffy appeasment by a call center operator with exactly the same information to hand as I had on my account screen at apple.com I was assured it would be ready to ship the next day.
&lt;/p&gt;
&lt;p&gt;
Well, if &amp;#8220;it&amp;#8221; meant &amp;#8220;disappointing news&amp;#8221; and &amp;#8220;ship&amp;#8221; mean &amp;#8220;send via &lt;span class="caps"&gt;SMTP&lt;/span&gt;&amp;#8221; then exactly that happened &amp;#8211; I received an email announcing that there had been &amp;#8220;unprecedented demand&amp;#8221; for my product, that the were &amp;#8220;shipping as fast as possible&amp;#8221; and were now likely to ship on or before the 11th April (9 days after I ordered it not including delivery time).
&lt;/p&gt;
&lt;p&gt;
All of this I can forgive (I&amp;#8217;m quite a forgiving kind of guy) except for one slight detail &amp;#8211; Apple are still advising their potential customers by way of http://www.apple.com/uk/thestore that the 12&amp;#8221; PowerBook Superdrive ships in 24hrs. This is patently not true so Apple are, by way of incompetence or intent, misrepresenting their shipping times. Since Apple haven&amp;#8217;t yet taken my money I imagine none of this is illegal but as a Mac newbie this is clearly a very bad opening to what I expected would be a thrilling and empowering (if costly) relationship.
&lt;/p&gt;
&lt;p&gt;
Anyway, once I get my Mac-fix I&amp;#8217;m sure my mouthy opinions will quickly retreat back into Cupertino crack haze.
&lt;/p&gt;
&lt;p&gt;
* Regarding the title, any self-respecting UK or Antipodean child of the eighties should remember Bananarama and their brilliantly plastic pop hit &amp;#8220;I wan&amp;#8217;t you back (don&amp;#8217;t care what I have to do)&amp;#8221; 
&lt;/p&gt;</description>
      <pubDate>Fri, 06 May 2005 23:00:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:37b67043-62ab-4dda-851d-2db9ab57a914</guid>
      <author>Michael Studman</author>
      <link>http://www.michaelstudman.com/fullfathomfive/articles/2005/05/06/appledrama-i-want-my-mac-dont-care-what-i-have-to-do</link>
      <category>Apple</category>
      <category>Java/J2EE</category>
      <category>Web</category>
      <category>Apple/Mac OSX</category>
      <category>codegargle</category>
      <trackback:ping>http://www.michaelstudman.com/fullfathomfive/articles/trackback/9</trackback:ping>
    </item>
    <item>
      <title>Lexing headache: Hex Floats and Doubles in Java 5</title>
      <description>&lt;p&gt;My brain&amp;#8217;s well and truely fried after a night of wrestling with Checkstyle&amp;#8217;s java.g to make it happily recognise hex floats and decimals. See what I have to deal with:&lt;/p&gt;


&lt;pre&gt;
      NUM_INT
          {boolean isDecimal=false; Token t=null;}
          :   '.' {_ttype = DOT;}
                  (
                      (('0'..'9')+ (EXPONENT)? (f1:FLOAT_SUFFIX {t=f1;})?
                      {
                      if (t != null &amp;amp;amp;&amp;amp;amp; t.getText().toUpperCase().indexOf('F')&amp;amp;gt;=0) {
                          _ttype = NUM_FLOAT;
                      }
                      else {
                          _ttype = NUM_DOUBLE; // assume double
                      }
                      })
                      |
                      // JDK 1.5 token for variable length arguments
                      (".." {_ttype = ELLIPSIS;})
                  )?

          |    (    '0' {isDecimal = true;} // special case for just '0'
                  (    ('x'|'X')
                      (    // hex
                          // the 'e'|'E' and float suffix stuff look
                          // like hex digits, hence the (...)+ doesn't
                          // know when to stop: ambig.  ANTLR resolves
                          // it correctly by matching immediately.  It
                          // is therefor ok to hush warning.
                          options {
                              warnWhenFollowAmbig=false;
                          }
                      :    HEX_DIGIT
                      )+

                  |    //float or double with leading zero
                      (('0'..'9')+ ('.'|EXPONENT|FLOAT_SUFFIX)) =&amp;amp;gt; ('0'..'9')+

                  |    ('0'..'7')+    // octal
                  )?
              |    ('1'..'9') ('0'..'9')*  {isDecimal=true;}        // non-zero decimal
              )
              (    ('l'|'L') { _ttype = NUM_LONG; }

              // only check to see if it's a float if looks like decimal so far
              |    {isDecimal}?
                  (   '.' ('0'..'9')* (EXPONENT)? (f2:FLOAT_SUFFIX {t=f2;})?
                  |   EXPONENT (f3:FLOAT_SUFFIX {t=f3;})?
                  |   f4:FLOAT_SUFFIX {t=f4;}
                  )
                  {
                  if (t != null &amp;amp;amp;&amp;amp;amp; t.getText().toUpperCase() .indexOf('F') &amp;amp;gt;= 0) {
                      _ttype = NUM_FLOAT;
                  }
                  else {
                         _ttype = NUM_DOUBLE; // assume double
                  }
                  }
              )?
          ;
&lt;/pre&gt;
&lt;p&gt;
Gack! This is at once a lexer rule that may return a &lt;span class="caps"&gt;NUM&lt;/span&gt;_FLOAT, &lt;span class="caps"&gt;NUM&lt;/span&gt;_DOUBLE, &lt;span class="caps"&gt;NUM&lt;/span&gt;_INT, &lt;span class="caps"&gt;NUM&lt;/span&gt;_LONG, &lt;span class="caps"&gt;DOT&lt;/span&gt; or &lt;span class="caps"&gt;ELIPSIS&lt;/span&gt; token. The most trouble I&amp;#8217;m having modifying this is making sure 0x.1P+127f is accepted as a float while 0x is not (0x is no longer necessarily followed by one or more &lt;span class="caps"&gt;HEX&lt;/span&gt;_DIGIT).
&lt;/p&gt;
&lt;p&gt;
I&amp;#8217;ll sleep on this one, I think. Cheers to &lt;a href="http://www.davidflanagan.com/"&gt;David Flanagan&lt;/a&gt; for &lt;a href="http://www.onjava.com/pub/a/onjava/2005/04/20/javaIAN5.html"&gt;indirectly alerting&lt;/a&gt; me to this Java 5 language feature.
&lt;/p&gt;</description>
      <pubDate>Thu, 05 May 2005 23:00:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:a7d37d34-4280-4abc-a5be-ac51272f7aac</guid>
      <author>Michael Studman</author>
      <link>http://www.michaelstudman.com/fullfathomfive/articles/2005/05/05/lexing-headache-hex-floats-and-doubles-in-java-5</link>
      <category>Java/J2EE</category>
      <category>codegargle</category>
      <trackback:ping>http://www.michaelstudman.com/fullfathomfive/articles/trackback/13</trackback:ping>
    </item>
    <item>
      <title>Marketing Guantanamo - A Thoughtworks Misadventure</title>
      <description>&lt;p&gt;
Thoughtworks are promoting an opensource tool contributed to by one of their Thoughtworks, a tool sharing the name of one of recent history's flashpoints for the systematic deprivation of basic human rights. Welcome to &lt;a href="http://opensource.thoughtworks.com/projects/guantanamo.jsp"&gt;Guantanamo&lt;/a&gt;...
&lt;/p&gt;
&lt;p&gt;
Associating the name Guatanamo with a product is very odd indeed, one might easily draw a parallel between the invalidity, misguided and ultimately self-defeating nature of the human rights abuses at Guatanamo Bay with the efficacy of this extreme eXtreme Programming tool. I suspect this is not the intention of Aslak (the tool's author).
&lt;/p&gt;
&lt;p&gt;
He does &lt;a href="http://blogs.codehaus.org/people/rinkrank/archives/000844_poor_test_coverage_send_your_code_to_guantanamo.html"&gt;try&lt;/a&gt; to make a (rather poorly argued) rationale for the product's name and at least this is based on his opinion that the actions by the US in Guantanamo Bay are questionable. He's no Neo-con, just someone with a misplaced sense of taste.
&lt;/p&gt;
&lt;p&gt;
Software and politics &lt;a href="http://www.cafeaulait.org"&gt;can&lt;/a&gt; mix, they just didn't this time. That a software consultancy let itself be associated with such a name may indicate just how ambivalent most of us are to the practices at Guantanamo Bay and thus how un-contraversial it is. Or maybe it just slipped under the corporate radar.
&lt;/p&gt;</description>
      <pubDate>Thu, 17 Mar 2005 00:00:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:c2570292-b11e-470c-8a81-6edef725c945</guid>
      <author>Michael Studman</author>
      <link>http://www.michaelstudman.com/fullfathomfive/articles/2005/03/17/marketing-guantanamo-a-thoughtworks-misadventure</link>
      <category>Java/J2EE</category>
      <category>codegargle</category>
      <trackback:ping>http://www.michaelstudman.com/fullfathomfive/articles/trackback/16</trackback:ping>
    </item>
    <item>
      <title>Jarwars: StarWars and Generics</title>
      <description>&lt;p&gt;class MadbeanBlogEntry&lt;br /&gt;
&amp;nbsp;&amp;nbsp;implements&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Pastiche&amp;lt;Trailer&amp;lt;StarWars.Revenge&amp;lt;Sith&amp;gt;&amp;gt;&amp;gt;,&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Editorial&amp;lt;Generics&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Check out &lt;a href="//www.madbean.com/blog/2004/30/&amp;#34;"&gt;MadBean&lt;/a&gt; for a high quality pastiche of the latest Star Wars trailer combined with a witty editorial on Java generics.&lt;br /&gt;
&lt;br /&gt;
Matt&amp;#39;s a man of many tallents.&lt;/p&gt;</description>
      <pubDate>Wed, 26 Jan 2005 00:00:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:a9af6c14-682c-4a0e-8623-5d8773609e4e</guid>
      <author>Michael Studman</author>
      <link>http://www.michaelstudman.com/fullfathomfive/articles/2005/01/26/jarwars-starwars-and-generics</link>
      <category>Java/J2EE</category>
      <category>codegargle</category>
      <trackback:ping>http://www.michaelstudman.com/fullfathomfive/articles/trackback/19</trackback:ping>
    </item>
    <item>
      <title>Are RSS Feeds the New Tear-a-Page Desk Calendars of Our Time?</title>
      <description>Tear-a-page desk calendars - I'm sure you've owned one - maybe a Dilbert or a Far-Side strip every day for 365 days a year? Except if you're anything like me you loose interest in them or don't integrate the daily ritual of the tear-a-page into your life and end up in May with 5 months of dead tree to toss out. I'm starting to feel like that with RSS feeds - when I miss a day or two or ten of checking a busy feed (typically through Bloglines) the task of scanning 300 or so blog entries becomes too much and I fall behind - way behind.</description>
      <pubDate>Fri, 07 Jan 2005 00:00:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4aa9a2a8-5c0b-43d9-b676-ebbb5612b92c</guid>
      <author>Michael Studman</author>
      <link>http://www.michaelstudman.com/fullfathomfive/articles/2005/01/07/are-rss-feeds-the-new-tear-a-page-desk-calendars-of-our-time</link>
      <category>Java/J2EE</category>
      <category>Web</category>
      <category>codegargle</category>
      <trackback:ping>http://www.michaelstudman.com/fullfathomfive/articles/trackback/21</trackback:ping>
    </item>
    <item>
      <title>The Sydney Morning Herald just doesn't get RSS</title>
      <description>&lt;p&gt;
It seems like some dumbfuckards at the Sydney Morning Herald don&amp;#8217;t like the hoi polloi syndicating their Really Simple &lt;em&gt;Syndication&lt;/em&gt; feeds.
&lt;/p&gt;
&lt;p&gt;
So I thought I&amp;#8217;d add the &lt;span class="caps"&gt;SMH RSS&lt;/span&gt; feed to my bloglines.com account since it&amp;#8217;s far more friendly than the &lt;span class="caps"&gt;HTML&lt;/span&gt; mess fairfax choose to vomit up every day. It seems that in doing so I may cause bloglines to violate &lt;span class="caps"&gt;SMH&lt;/span&gt;&amp;#8217;s terms of use:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.smh.com.au/rsschannels/"&gt;http://www.smh.com.au/rsschannels/&lt;/a&gt;
&lt;br /&gt;
These channels are for personal use and only in news reader applications. You may not publish headlines from these channels to a web page.
&lt;/p&gt;
&lt;p&gt;
And if you thought little old you could easily licence their headlines you&amp;#8217;re out of luck:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://news.f2.com.au/cgi-bin/SynApp.cgi?sy=smh&amp;amp;ac=initial"&gt;http://news.f2.com.au/cgi-bin/SynApp.cgi?sy=smh&amp;amp;ac=initial&lt;/a&gt;
&lt;br /&gt;
Please Note: Sites with less than 2,000 monthly unique users and intranets accessed by less than 100 employees will not be eligible.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
A spot check at &lt;a href="http://www.guardian.co.uk"&gt;The Guardian&lt;/a&gt; shows a similar policy.
&lt;/p&gt;
&lt;p&gt;
Of course, completely free &lt;span class="caps"&gt;RSS&lt;/span&gt; feeds directly challenge the existing syndication and advertising model of newspapers. And we know how much &lt;a href="http://www.riaa.com/"&gt;established players&lt;/a&gt; hate having their &lt;a href="http://www.suprnova.org"&gt;business&lt;/a&gt; &lt;a href="http://www.apple.com/ipod"&gt;models&lt;/a&gt; &lt;a href="http://www.kazaa.com"&gt;challenged&lt;/a&gt;. A unique group of 2000 monthly users (typically clustered around a topic) is a great source of targeted advertising as is a group of 100 employees or more. Not that there&amp;#8217;s anything wrong with that, of course, it&amp;#8217;s just that this ugly love child of technological bandwagonism and business model protectionism ought not to bear the &lt;span class="caps"&gt;RSS&lt;/span&gt; acronym when it is so blatantly at odds with the spirit of that technology.
&lt;/p&gt;
&lt;p&gt;
And while I&amp;#8217;m on my soap box, &lt;span class="caps"&gt;SMH&lt;/span&gt; would you please turn that auto refresh off your front page. I&amp;#8217;ll refresh when I feel like it!
&lt;/p&gt;</description>
      <pubDate>Tue, 21 Dec 2004 00:00:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:65cb65f5-4d20-429d-a1ff-aef754614fe6</guid>
      <author>Michael Studman</author>
      <link>http://www.michaelstudman.com/fullfathomfive/articles/2004/12/21/the-sydney-morning-herald-just-doesnt-get-rss</link>
      <category>Java/J2EE</category>
      <category>Web</category>
      <category>rss</category>
      <category>codegargle</category>
      <category>smh</category>
      <category>web</category>
      <category>media</category>
      <trackback:ping>http://www.michaelstudman.com/fullfathomfive/articles/trackback/23</trackback:ping>
    </item>
    <item>
      <title>SOAP Testing and the Meaning of Life</title>
      <description>&lt;p&gt;
I'm currently in search of a decent testing tool for web services and came across PushToTest's TestMaker. I'm still evaluating the product for my needs but its creator, Frank Cohen, gets full marks for giving me a Monday morning chuckle.
&lt;/p&gt;
&lt;p&gt;
On entering my particulars to register the product I noticed a field for any questions I may have. In a fit of Friday afternoon silliness my question became "What is the meaning of life?".
&lt;/p&gt;
&lt;p&gt;
Frank, a man obviously not afraid of a challenge, responded:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
Thank you for registering at the PushToTest web site. You asked the
question: "What is the meaning of life?"

From the perspective of a tool like TestMaker, the meaning of life is the 
satisfaction a software developer, QA analyst, and IT manager feels when they 
understand the performance and scalability of an information service. Of course 
the answer to life, the universe, and everything else is still 42.

Hope this helps.

-Frank
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Why can't all marketing communications be this much fun?
&lt;/p&gt;</description>
      <pubDate>Wed, 01 Dec 2004 00:00:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:b522be67-9900-4e05-9880-f014648a5ecb</guid>
      <author>Michael Studman</author>
      <link>http://www.michaelstudman.com/fullfathomfive/articles/2004/12/01/soap-testing-and-the-meaning-of-life</link>
      <category>Java/J2EE</category>
      <category>soap</category>
      <category>codegargle</category>
      <category>testing</category>
      <category>marketing</category>
      <trackback:ping>http://www.michaelstudman.com/fullfathomfive/articles/trackback/24</trackback:ping>
    </item>
    <item>
      <title>Amnesiac Java: language features I forgot existed</title>
      <description>&lt;p&gt;
I've been developing in Java for pretty much since Java 1.0. While working on the ANTLR Java 5 grammar I was suprised to rediscover some features of the language I'd just plain forgot.
&lt;/p&gt;
&lt;p&gt;
First up, while working on annotation array initialisers, I was pleasantly reminded that the final element of a regular array can have a trailing comma:
&lt;/p&gt;
&lt;pre&gt;
    String[] foo =
        new String[]
        {
            "qwerty1",
            "qwerty2",
            "qwerty3",
        };
&lt;/pre&gt;
&lt;p&gt;
This is a nice little convenience for when you need to expand or contract the array elements in the initialiser - it means you don't have to fiddle with the final element to make sure there is no trailing comma.
&lt;/p&gt;
&lt;p&gt;       
Later I was reminded that interfaces may be package protected. For some reason i'd deluded myself into thinking interfaces could only be public:
&lt;/p&gt;
&lt;pre&gt;
    package foo;
    interface Bar {}
    ...
    package foo2;
    class Bar2
    {
       foo.Bar b;
           //compilation error: foo.Bar can't
           //be accessed from outside its package
    }
&lt;/pre&gt;    
&lt;p&gt;
Duh! How could I have lived without that one? I often complained to co-workers that I couldn't do this - by their response they obviously didn't know you could either.
&lt;/p&gt;
&lt;p&gt;
Finally, I was recently reminded that you can use the .class 'field' on primitive types:
&lt;/p&gt;
&lt;pre&gt;
    Class c = int.class;
&lt;/pre&gt;
&lt;p&gt;
I've long been aware of this 'field' on regular classes and interfaces (e.g. String.class) but when faced with the need to get the class of a primitve type I'd use the helper fields (e.g. Integer.TYPE). This forgotten feature is nicely consistent.
&lt;/p&gt;
&lt;p&gt;
I use quotations around the word field here because it's not really a field, just a few grains of syntactic sugar (decompile a class that uses the .class 'field' to see what I mean).
&lt;/p&gt;
&lt;p&gt;
What's your forgotten language feature?
&lt;/p&gt;</description>
      <pubDate>Thu, 26 Aug 2004 23:00:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:9ed0ce8d-cb48-41e6-8666-49b1a95db65b</guid>
      <author>Michael Studman</author>
      <link>http://www.michaelstudman.com/fullfathomfive/articles/2004/08/26/amnesiac-java-language-features-i-forgot-existed</link>
      <category>Java</category>
      <category>Java/J2EE</category>
      <category>codegargle</category>
      <category>languages</category>
      <trackback:ping>http://www.michaelstudman.com/fullfathomfive/articles/trackback/25</trackback:ping>
    </item>
    <item>
      <title>My Java 5 Antlr grammar</title>
      <description>&lt;p&gt;
After years of toying with Antlr but never actually doing anything useful with it; and after months of merely skimming articles on new Java 5 language features I thought I&amp;#8217;d deepen my understanding of both and update the Antlr Java 1.4 grammar to recognize the new language features.
&lt;/p&gt;
&lt;p&gt;
Suprisingly it only took about a week to polish off, and most of that was spent just cleaning up the grammar and deciding between different ways to structure the output &lt;span class="caps"&gt;AST&lt;/span&gt; (rather than strugling with Antlr tool itself).
&lt;/p&gt;
&lt;p&gt;
For anyone interested, my grammar can be found on &lt;a href="http://www.michaelstudman.com/files/java15/index.html"&gt;my site&lt;/a&gt; and it&amp;#8217;s also hosted at &lt;a href="http://www.antlr.org/grammar/1090713067533/index.html"&gt;antlr.org&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
As for how well tested it is: I&amp;#8217;ve used it to successfully recognise the entire Java 5 source base, jdigraph&amp;#8217;s source base (an early adopter of generics) and some custom tests I developed. I found the accompanying &lt;span class="caps"&gt;AST&lt;/span&gt; recogniser (as opposed to the token stream recogniser) is a good tool for confirming your tree is structured as you expected it to be. I also visually inspected the &lt;span class="caps"&gt;AST&lt;/span&gt; to ensure its structure was what I expected. An alternative to visual inspection would be great to automatically ensure the grammar stays correct over a lifetime of modifications. I&amp;#8217;d love to hear from anyone who&amp;#8217;s worked on such a tool. A testing framework that used XQuery or XPath querying/assertions on &lt;span class="caps"&gt;DOM&lt;/span&gt;-adapted &lt;span class="caps"&gt;AST&lt;/span&gt; (similar to &lt;span class="caps"&gt;PMD&lt;/span&gt;&amp;#8217;s &lt;span class="caps"&gt;AST&lt;/span&gt; interface) would be my first approach. Comments or experience anyone?
&lt;/p&gt;
&lt;p&gt;
More comments on Antlr and Java 5&amp;#8217;s new language features later.
&lt;/p&gt;</description>
      <pubDate>Sat, 24 Jul 2004 23:00:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:9f39d8d3-0f2a-4a33-af5c-faea0b54dc73</guid>
      <author>Michael Studman</author>
      <link>http://www.michaelstudman.com/fullfathomfive/articles/2004/07/24/my-java-5-antlr-grammar</link>
      <category>Java</category>
      <category>Java/J2EE</category>
      <category>antlr</category>
      <category>grammar</category>
      <category>languages</category>
      <category>codegargle</category>
      <trackback:ping>http://www.michaelstudman.com/fullfathomfive/articles/trackback/45</trackback:ping>
    </item>
  </channel>
</rss>
