Sender: |
|
Date: |
Sun, 28 Feb 2010 15:26:47 -0500 |
MIME-version: |
1.0 (Apple Message framework v936) |
Reply-To: |
|
Content-type: |
text/plain; charset=US-ASCII; format=flowed; delsp=yes |
Subject: |
|
From: |
|
In-Reply-To: |
|
Content-transfer-encoding: |
7bit |
Comments: |
|
Parts/Attachments: |
|
|
On Feb 28, 2010, at 12:46 PM, Beto Roth wrote:
> The problem I have is how to tell ECJ to build a tree with that
> specific
> structure. When ECJ creates a tree, it puts the terminals on the
> leaves, and
> non-terminals on the remainder nodes. But how can I specify that the
> nodes
> previous to the leaves have to have a comparator?
Norberto, ECJ's set types are good for this. I'm going to presume
from your diagram that you want to have terminals on the left of the
">" or "<" and numbers on the right. It's easy to modify if this is
not the case. Here's what you do:
ATOMIC TYPE 1: numbers
ATOMIC TYPE 2: variables
ATOMIC TYPE 3: comparisons
ATOMIC TYPE 4: logic
SET TYPE 1: booleans = {comparisons, logic}
TREE RETURN TYPE: logic
"&" RETURN TYPE: logic
"&" CHILD TYPES: booleans (that is, either comparisons or logic)
">" etc. RETURN TYPE: comparisons
">" etc. LEFT CHILD TYPE: variables
">" etc. RIGHT CHILD TYPE: numbers
"A" etc. RETURN TYPE: variables
"5" etc. RETURN TYPE: numbers
This sets things up so that "&" nodes can have *either* "<" etc. *or*
"&" nodes as their children. But the tree must have an "&" node as
its root. Furthermore, "<" etc. must have variables as their left
children and numbers as their right children.
Sean
|
|
|