Hi Marc,

thanks for the patch. Would you mind to file a JIRA with the patch and select the ASF License grant check box? Otherwise we cannot directly incorporate it...

Thanks,
  Tammo

Marc Bischof wrote:
Hej devs,

here is the patch for the grammar and the tree-grammar.

Marc

On Thursday 29 May 2008 17:57:30 Alex Boisvert wrote:
Hi Marc,

Yes, you're right about the cardinality issue in the grammar.  A patch
would be greatly appreciated!

alex

On Thu, May 29, 2008 at 8:23 AM, Marc Bischof <[EMAIL PROTECTED]> wrote:
Hello devs,

I'am a student at the IAAS and working on a BPEL2SimPEL translator.

I looked at the SimPEL-Grammar and I think you've missed something when
modeling non-empty lists.

I also propose that the rewrite-rules should be correct in the grammar
so the translation into tree-grammar would be clearer and less error
prone.

Here a short example:

In the param_block-rule you've modeled an optional ID-list. But in the
rewrite-rule this is missing. So I think that there should be $in* (in
general this should be a $in+, but in this special case the complete list
is
optional).
When this was done in the proposed way in the grammar, it would also
affect the tree-grammar. There, the param-block-rule is currently modeled
with $ID+
instead of $ID*.

So I went over the grammar and looked for these errors (changes in
tree-grammar analog):

* param_block : '{' ('|' in+=ID (',' in+=ID)* '|')? proc_stmt+ '}' ->
^(SEQUENCE $in proc_stmt+);

param_block : '{' ('|' in+=ID (',' in+=ID)* '|')? proc_stmt+ '}' ->
^(SEQUENCE $in* proc_stmt+);

* flow : 'parallel' b+=body ('and' b+=body)* -> ^(FLOW $b);

   flow : 'parallel' b+=body ('and' b+=body)* -> ^(FLOW $b+);
* join : 'join' '(' k+=ID (',' k+=ID)* (',' expr)? ')' -> ^(JOIN $k
expr?);

   join : 'join' '(' k+=ID (',' k+=ID)* (',' expr)? ')' -> ^(JOIN $k+
expr?);

* with_ex : 'with' '(' wm+=with_map (',' wm+=with_map)* ')' body ->
^(WITH $wm* body);

   with_ex : 'with' '(' wm+=with_map (',' wm+=with_map)* ')' body ->
^(WITH
$wm+ body);

* partner_link : 'partnerLink' pl+=ID (',' pl+=ID)* -> ^(PARTNERLINK
$pl);

   partner_link : 'partnerLink' pl+=ID (',' pl+=ID)* -> ^(PARTNERLINK
$pl+);

* correlation : '{' corr_mapping (',' corr_mapping)* '}' -> ^(CORRELATION
corr_mapping*);

 >   correlation : '{' corr_mapping (',' corr_mapping)* '}' ->

^(CORRELATION
corr_mapping+);

* path_expr : pelmt+=ns_id ('.' pelmt+=ns_id)* -> ^(PATH $pelmt);

   path_expr : pelmt+=ns_id ('.' pelmt+=ns_id)* -> ^(PATH $pelmt+);
Do you think, I'm right. Should I file a patch?

Kind regards
    Marc Bischof



Reply via email to