2010-12-27 4 views
1

これだけの非常に単純なantlr文法を評価する方法。Antlrを使ったJava3dの形状

Box(1,2,4) 
Cylinder(1,2) 

とJava3Dの形状を構築し、(私はすでに、おそらくこのような何かをJava3Dのためのキャンバスを構築し、Javaで各要素を作成するためのコードを持って、

protected static BranchGroup addBox1(Float a, Float b, Float C){ 
    // create branch for display 
    TransformGroup bodyTransform = new TransformGroup(); 
    BranchGroup bg = new BranchGroup(); 
    bg.setCapability(BranchGroup.ALLOW_DETACH); 
    bg.setUserData(shapeId); 
    // set transformation 
    bodyTransform = setTransformShape(0,0,0,0,0,0,0); 
    // create box 
    Box tmpBox = new Box(a,b,c, Primitive.GENERATE_NORMALS | 
        Primitive.GENERATE_TEXTURE_COORDS,setAppearance(color));  
    getCoords(tmpBox); 

    bodyTransform.addChild(tmpBox); 
    trFormList.add(bodyTransform); 
    shapeId++; 
    //add box to branch 
    bg.addChild(bodyTransform); 
    return bg; 
    } 
) 

おかげ

+0

"builds java3d shapes"の意味がわかりません。例を挙げてくださいか、またはtrans 'Box(1,2,4)'と 'Cylinder(1,2)'を保護された 'addBox1'メソッドに追加しましたか? –

+0

返信ありがとう、私は言語でJavaコードを呼び出す/埋め込むようにしたいので、ボックス(1,2,4)を書くと、アプリケーションの中でaddBox1というメソッドが呼び出されます。 、2)addCylinder(1,2)と呼ばれる別のメソッドを呼び出します。 – Eldeus

答えて

0

ている与えられましたか?

// ... 

parse 
    : shape+ EOF 
    ; 

shape 
    : BOX '(' a=INT ',' b=INT ',' c=INT ')' { 
     YourClass.addBox(Float.parseFloat($a.text), Float.parseFloat($b.text), Float.parseFloat($c.text)); 
    } 
    | CYL '(' a=INT ',' b=INT ')' { 
     YourClass.addCylinder(Float.parseFloat($a.text), Float.parseFloat($b.text)); 
    } 
    ; 

BOX : 'Box'; 
CYL : 'Cylinder'; 
INT : '0'..'9'+; 
SPACE : (' ' | '\t' | '\r' | '\n'){skip();}; 

// ... 
関連する問題