That was it, thanks! I was able to generate what I think is the AST that I
want... but when I try to use it, it isn't working the way I expect.
Apparently, I don't understand at least some of the basic concepts here. If
you could clarify some points, I'd appreciate it.
I have an ast that looks like :
Abstract Syntax Tree
statements = statement statements
| {null}
;
statement =
{empty} new_line
| {assignment} lhs assign_operator expression
| {postop} lhs post_operator
| {label} identifier
;
lhs = {identifier} identifier
;
assign_operator = {assign} equals
| {star_assign} star_assign
| {slash_assign} slash_assign
| {plus_assign} plus_assign
| {minus_assign} minus_assign
;
And as I expected, SableCC generated various classes, including (looking at the
nodes)
AStatements.java
AAssignmentStatement.java
ALabelStatement.java
AAssignAssignOperator.java
and so on.
I created a little routine Interperter that I just want to simply echo the
statements as it sees them going through the tree:
public class Interperter extends DepthFirstAdapter {
public void caseAEmptyStatement (AEmptyStatement node) {
System.out.print("." );
}
public void caseAStatements (AStatements node) {
System.out.print(" Statements seen: " );
System.out.println(node.getStatement().toString());
}
public void caseAAssigmentStatement (AAssignmentStatement node) {
System.out.print(" Assignment Statement seen: " );
System.out.print(node.getLhs().toString());
System.out.print(node.getAssignOperator().toString());
System.out.println(node.getExpression().toString());
}
}
But what I don't understand is that it appears that CaseAAsignStatement is
never called; Looking at AStatements.java, I see getStatement() and
getStatements(), but I don't seem to see how AAssignmentStatement is invoked,
or, for that matter, how any of the other alternatives are accessed.
Can someone explain to me what I am missing?
Thanks !
Roger
> ----- Original Message -----
> From: "Etienne M. Gagnon" <[EMAIL PROTECTED]>
> To: "Discussion mailing list for the SableCC project"
> <[email protected]>
> Subject: Re: Trying to understand cst->ast transformations
> Date: Mon, 20 Oct 2008 20:32:12 -0400
>
>
> Hi Roger,
>
> SableCC 3 just caught a transformation bug in your grammar:
>
> unop {-> expression} = ...
>
> As unop is preserved in the AST, you should not transform it. Solution:
> Just remove the "{-> ...}".
>
> Have fun!
>
> Etienne
>
> Roger Pomeroy wrote:
> > I am now trying to understand how to do the CST->AST
> > transformations for my grammer. I was starting with just trying
> > to transform the expression section of my grammar (trying to
> > follow the sample in
> > http://nat.truemesh.com/archives/000531.html) I have a CST
> > section that looks like:
> > ...
> >
>
> --
> Etienne M. Gagnon, Ph.D.
> SableCC: http://sablecc.org
> << signature.asc >>
>
> _______________________________________________
> SableCC-Discussion mailing list
> [email protected]
> http://lists.sablecc.org/listinfo/sablecc-discussion
>
--
See Exclusive Video: Hollywood Life's 5th Annual Style Awards
http://www.hollywoodlife.net/Awards.aspx?AwardsID=style2008
_______________________________________________
SableCC-Discussion mailing list
[email protected]
http://lists.sablecc.org/listinfo/sablecc-discussion