fixed up bison conflicts in grammar

git-svn-id: svn://anubis/fart/trunk@111 7f9b0f55-74a9-4bce-be96-3c2cd072584d
This commit is contained in:
Josh Holtrop 2009-02-16 21:20:05 +00:00
parent 71a55378c4
commit 70c4785b43
2 changed files with 33 additions and 16 deletions

View File

@ -101,6 +101,22 @@ class PlaneNode : public Node
{ {
}; };
class PlanePositionNode : public Node
{
public:
PlanePositionNode(refptr<Vector> vec, double dist)
{
m_vector = vec;
m_dist = dist;
}
refptr<Vector> getVector() { return m_vector; }
double getNumber() { return m_dist; }
protected:
refptr<Vector> m_vector;
double m_dist;
};
class PositionNode : public Node class PositionNode : public Node
{ {
}; };

View File

@ -226,15 +226,22 @@ options_item: WIDTH DEC_NUMBER {
plane: PLANE LCURLY plane_items RCURLY { plane: PLANE LCURLY plane_items RCURLY {
$$ = new PlaneNode(); $$ = new PlaneNode();
$$->addChildren($3);
} }
; ;
plane_items: plane_item plane_items plane_items: /* empty */
| shape_item plane_items | plane_item plane_items {
$$ = new ItemsNode();
$$->addChild($1);
$$->addChildren($2);
}
; ;
plane_item: POSITION vector COMMA number plane_item: POSITION vector COMMA number {
| shape_item $$ = new PlanePositionNode($2->getVector(), $4->getNumber());
}
| shape_item { $$ = $1; }
; ;
radius: RADIUS number { radius: RADIUS number {
@ -272,8 +279,7 @@ shape_items: /* empty */
} }
; ;
shape_item: shape_item: material { $$ = $1; }
| material { $$ = $1; }
; ;
sphere: SPHERE LCURLY sphere_items RCURLY { sphere: SPHERE LCURLY sphere_items RCURLY {
@ -288,11 +294,6 @@ sphere_items: /* empty */
$$->addChild($1); $$->addChild($1);
$$->addChildren($2); $$->addChildren($2);
} }
| shape_item sphere_items {
$$ = new ItemsNode();
$$->addChild($1);
$$->addChildren($2);
}
; ;
sphere_item: radius { $$ = $1; } sphere_item: radius { $$ = $1; }
@ -306,11 +307,11 @@ union: UNION LCURLY boolean_items RCURLY
; ;
vector: LESS number COMMA number COMMA number GREATER { vector: LESS number COMMA number COMMA number GREATER {
refptr<Vector> vector = new Vector(); refptr<Vector> vec = new Vector();
(*vector)[0] = $2->getNumber(); (*vec)[0] = $2->getNumber();
(*vector)[1] = $4->getNumber(); (*vec)[1] = $4->getNumber();
(*vector)[2] = $6->getNumber(); (*vec)[2] = $6->getNumber();
$$ = new VectorNode(vector); $$ = new VectorNode(vec);
} }
; ;