james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joachim Draeger ...@joachim-draeger.de>
Subject Re: ANTLR
Date Mon, 11 Dec 2006 18:36:01 GMT
Hi Robert,

robert burrell donkin schrieb:

>> This could be done by achieving a nearly 1:1 relation between the
>> entities from the ABNF and ANTLR rules.
>> This allows a straight forward development and makes review for
>> correctness quite effective.
> +1
>
> anything i can do to help?

You could start a grammar for the Search command. At best along with 
unit tests.
Not too much validation for the beginning but just the information "the 
parser can parse this string without errors".
IMO and AFAIK Antlr is well suited for unit testing. It produces one 
java method for each sub-rule, so it can be tested separately.
tree.toStringTree() could be useful and sufficient to make first assertions.

One note to object tree construction, because it was hard for me to find 
out:
You can mark tokens to be a tree-node with a ^ and ignore tokens with !.
While working with the fetch command I noticed that it is not very 
tree-friendly because different kinds of information just come in a row. 
(Maybe another design deficiency?)
The object-tree should be well structured and easy to evaluate without 
"searching" for information.
That's why I made much use of virtual tree nodes:
1. define it in the tokens { RULE; } section
2. add a  {#rule= #([RULE, "RULE"], #rule);}  line to the rule 
definition to make it a node.

What still needs to be done and could be shared by Search, fetch and 
other commands, is to adopt the definition for atoms/strings/quoted 
strings  from the ABNF. (Maybe we need a more relaxed definition because 
clients don't follow RFC exactly.)
For the first tests WORD: ('a'..'z' | 'A'..'Z' | '.')+ ; seems to be 
sufficient.
Another issue is case insensitive parsing.  I'm sure there is a solution 
for ANTLR.

Joachim

P.S.: Lost in moderation? I replied already on sunday by a different address, sorry for sending
twice










---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Mime
View raw message