logo back up home forward   further reading more topics »

XES - Programmers Guide - parsing

The parser for this program was generated by javacc and jjtree as follows:

I have loaded Java1.5.zip from here.

Load javacc-3.2.zip (or later version) from here. This contains both javacc and jjtree.

run jjtree

run javacc

This parser does not generate XES directtly but generates a tree structure which this program then converts into XES.

I have draw out part of the tree structure this javacc parsor will create here.

The convertion between these tree structures is described below:

Variables, declaration and assign.

Variables may be defined, initialised and used in the same statement or in seperate statements. Any variables may also be used in arrays.

All of these things are based on variable node, even assignment will allways have a varible on the left hand side.

When a variable is used we need a quick way to link it back to its definition, how do we define such a link? we need to do this both for local variables, class varibles and varibles in other classes, how do we implement late binding of variables?

Should all node names be expanded out to their full path name?

 

 

Java example java1.5.zip tree structure XES tree structure XES
int var1;
     
<variable name="var1" type="int"/>
var1 = 1;
<variable name="var1">
  <assign operator="=">
    <constant intConst="1"/>
  </assign>
</variable>
int var2 =2;
<variable name="var1" type="int">
  <assign operator="=">
    <constant intConst="2"/>
  </assign>
</variable>
int[] array1;
<variable name="array1" type="int" array="true"/>
array1 = new int[1];
<variable name="array1">
  <assign operator="=">
    <array>
      <constant intConst="1"/>
    </array>
  </assign>
</variable>
array1[0]=3;
<variable name="array1">
  <array>
    <constant intConst="0"/>
  </array>
  <assign operator="=">
    <constant intConst="3"/>
  </assign>
</variable>
int[] array2=new int[2];
 
<variable name="array2" type="int" array="true">
  <array>
    <constant intConst="2"/>
  </array>
</variable>
double x,y,z;
is:
<variable name="x.y.z"/>
should be:
<declare type=double>x</declare>
         <declare type=double>y</declare>
         <declare type=double>z</declare>

JDK 1.5 allows Generic Types:

ArrayList<Integer> list = new ArrayList<Integer>();

JDK 1.5 also allows enum:

public enum StopLight { red, amber, green };

   
<assign name="list" declare="ArrayList" generic="Integer">
  ArrayList
</assign>
<declare type=enum values="red, amber, green">
  StopLight
</declare>
String values[] = (String []) names;    

<assign name="values" declare="String" array=true>(String []) names</assign>

other possible parameters:

type = "=" default
type = "++pre"
type = "++post"
type = "--pre"
type = "--post"
type = "+="
type = "-="
type = "*="
type = "/="
type = "%="
type = "&="
type = "|="
type = "^="
type = "<<="
type = ">>="
type = "<<<="

       
       

Statements

Java example java1.5.zip tree structure XES tree structure XES
Math.abs(1);
 
 
a++
 
 
++a
   
 
 
   
 
 
   
 
 
   
 
 
   
 
     
 

 

   
 
     

 

       
       

metadata block
see also:
Correspondence about this page

Book Shop - Further reading.

Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them.

cover Processing XML with Java: A Guide to SAX, DOM, JDOM, JAXP, and TrAX

Other Java books

Commercial Software Shop

Where I can, I have put links to Amazon for commercial software, not directly related to this site, but related to the subject being discussed, click on the appropriate country flag to get more details of the software or to buy it from them.

cover JBuilder - There is also a free version of Jbuilder at borland website . However its licence conditions are quite restrictive so you may prefer another java IDE.

Can this page be improved?

Please send me any improvements to here. I would appreciate ideas to make the pages more useful including error correction, ideas for new pages, improvements to wording. It helps if you quote the full URL of the page.

 

progam

I am working on a project which uses these principles, if you would like to help me with this you are welcome to join in, here:

for xml encoding: http://sourceforge.net/projects/xes/

This site may have errors. Don't use for critical systems.

Copyright (c) 1998-2008 Martin John Baker - All rights reserved - privacy policy.