Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[xtext-dev] Problems reading Geometry Files

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.
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
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
kaspergam@xxxxxxxxxxxxx

Back to the top