Java3D форма с Antlr - PullRequest
       5

Java3D форма с Antlr

1 голос
/ 27 декабря 2010

Хорошо, как оценить очень простую грамматику 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;   
   }
)

спасибо

1 Ответ

0 голосов
/ 29 декабря 2010

Что-то вроде этого возможно?

// ...

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

// ...
...