I am an intern working on the Eclipse Advanced Visualization Project (EAVP), 
and we are using Xtext to parse files and import them into our data structures. 
Using Xtext, I was able to fairly easily accomplish this task with STL files 
STL (file format) - Wikipedia, the free encyclopedia. This is because STL has 
keywords followed by data, which is a simple Xtext grammar to write.

|   |
|   |  |   |   |   |   |   |
| STL (file format) - Wikipedia, the free encyclopediaSTL (STereoLithography) 
is a file format native to the stereolithography CAD software created by 3D 
Systems.[1][2][3] STL has several after-the-fact backronyms such... |
|  |
| View on en.wikipedia.org | Preview by Yahoo |
|  |
|   |

However, we are now focusing on IGES (Initial Graphics Exchange Specification) 
geometry files, which are not as easy to parse. The IGES files are ASCII 
records with 80 characters per line. These lines need to be split by either 
length (in characters) or by a delimiter. It seems difficult to get Xtext to 
read in files line by line or even character by character. More information on 
IGES can be found here: IGES - Wikipedia, the free encyclopedia 

|   |
|   |  |   |   |   |   |   |
| IGES - Wikipedia, the free encyclopediaThe Initial Graphics Exchange 
Specification (IGES) (pronounced eye-jess) is a vendor-neutral file format that 
allows the digital exchange of information among compu... |
|  |
| View on en.wikipedia.org | Preview by Yahoo |
|  |
|   |

The main difficulty is deciding the type of line the parser is currently 
reading. There are sections to the file, and the current section is specified 
by the 73rd character per line. I cannot find a way to easily read this 
character before starting to parse the rest of the line. For example, here is 
the file on the Wikipedia page:                                                 
                       S      1
1H,,1H;,4HSLOT,37H$1$DUA2:[IGESLIB.BDRAFT.B2I]SLOT.IGS;,                G      1
17HBravo3 BravoDRAFT,31HBravo3->IGES V3.002 (02-Oct-87),32,38,6,38,15,  G      2
4HSLOT,1.,1,4HINCH,8,0.08,13H871006.192927,1.E-06,6.,                   G      3
31HD. A. Harrod, Tel. 313/995-6333,24HAPPLICON - Ann Arbor, MI,4,0;     G      4
     116       1       0       1       0       0       0       0       1D      1
     116       1       5       1       0                               0D      2
     116       2       0       1       0       0       0       0       1D      3
     116       1       5       1       0                               0D      4
     100       3       0       1       0       0       0       0       1D      5
     100       1       2       1       0                               0D      6
     100       4       0       1       0       0       0       0       1D      7
     100       1       2       1       0                               0D      8
     110       5       0       1       0       0       0       0       1D      9
     110       1       3       1       0                               0D     10
     110       6       0       1       0       0       0       0       1D     11
     110       1       3       1       0                               0D     12
116,0.,0.,0.,0,0,0;                                                    1P      1
116,5.,0.,0.,0,0,0;                                                    3P      2
100,0.,0.,0.,0.,1.,0.,-1.,0,0;                                         5P      3
100,0.,5.,0.,5.,-1.,5.,1.,0,0;                                         7P      4
110,0.,-1.,0.,5.,-1.,0.,0,0;                                           9P      5
110,0.,1.,0.,5.,1.,0.,0,0;                                            11P      6
S      1G      4D     12P      6                                        T      1

Here I need to skip the S and G rows, and after that read each number from the 
D rows into fields- every 8 characters holds a record (after removing 
white-space). The P rows need to be read in as comma separated values, where 
the last bit (#P       #) is ignored. This is only a primitive parse of this 
file, but still good enough to read in the critical data. Do you think Xtext 
will be helpful or even usable to parse this kind of file? What kind of grammar 
could we write to handle these problems? Any help would be appreciated!

Thank you so much,
Kasper Gammeltoft
Oak Ridge National Laboratory,
Computer Science and Mathematics Division,
Computer Science Research Group
(865)-696-6625
[email protected]
_______________________________________________
xtext-dev mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/xtext-dev

Reply via email to