Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Westi on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

How to model definitions and declarations of a programming language

Status
Not open for further replies.

rikardland

Programmer
Oct 19, 2004
1
SE
I try to model a data definition language in XML. It can be seen as C without any executable statements other than variable assignments. I want to allow for:
(1) type declarations ("structs" in C), which can be nested, and where each member can be (optionally) associated with
a) a comment (as a help to the user who will enter data) and
b) a unit such as kg, cm, etc.
(2)variable declarations of ordinary types such as float, int, string, etc., as well as the types defined in (1), and
(3)assignments of values to variables.

Examples (in C-like syntax) would be:
(1)Type definitions:
struct Point {
float x, comment("X coordinate"), unit(m);
float y, comment("Y coordinate"), unit(m);
}
struct Z {
int a, comment("The amount of...");
float b, comment("The bla bla..."), unit(kg);
Point point, comment(“The point ...");
}

(2)Variable declarations:
Point p;
Z z;

(3)Assignments
p.x = 1.1;
p.y = 2.2;
z.a = 1
z.b = 3.3
z.point.x = 4.4
z.point.y = 5.5

I want to keep these in separate files to have a clean separation of these kinds/levels of data. (It must e.g. be possible to declare several instances of the same struct.) There will also be arrays. However, the problem is not to model this in XML syntax (that is straightforward), but my question is rather how to model the interrelationships between the files? At first sight, I thought it was obvious that (1) should be defined as a schema for (3), but there are some challenges that I cannot resolve:
* I want explicit variable declarations, mainly so that several instances of the same type can be defined. This gives by hand the inclusion of (2).
* I want to use the comment and unit in (1) for e.g. helping the user in a GUI. Isn’t a schema only a template for an XML file? Or can I put things in the schema (1) that are needed there, but _shall not_ be present in the XML file (3)?
* I want to resolve the names in (2), so that only declarations of types defined in (1) (or basic types, float etc) are valid.
* I also want to make sure the assignments are made correctly, so that e.g. “z.point.x = 4.4” is valid because z is of type Z which contains a member point of type Point, which in its turn contain a float named “x”.

I realize that I can do these things programmatically (people have been building compilers for some years now), but I first want to look for solutions utilizing the power of XML. I cannot find anywhere on the net someone who has attempted this – maybe I have used the wrong search terms or it is just a stupid thing to attempt…

Any help in solving any or part of the problems is highly appreciated.
Regards,
Rikard Land

 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top