1

これだけを行う非常に単純なantlr文法を評価する方法。

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;   
   }
)

ありがとう

4

1 に答える 1

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();};

// ...
于 2010-12-29T14:43:10.560 に答える