Transcript Slides
XAWK
John Cieslewicz
Shi Tak Man
Gabriela Cretu
Prashant Puri
Introduction
XAWK is inspired by the AWK
programming language by Aho, et al.
Goal: Provide an easy to use XML
processing language whose syntax
resembles AWK
Instead of matching text patterns (AWK),
match patterns of XML elements (XAWK).
Language Features
XML Pattern Matching
(XPath)
Associative Arrays
Undeclared variables
OK!
Fully featured control
statements
for(x in array)
Implicit promotion
between strings and
numbers
Concatenation by
juxtaposition
Example XML File
<students>
<group name=“XAWK”>
<student fname=“John” mt=“45.0”/>
<student fname=“Gabriela” mt=“88.9”/>
<student fname=“Shi Tak” mt=“66.6”/>
<student fname=“Prashant” mt=“67”/>
</group>
</students>
Example Grading Program
/doc(“roster.xml”)/students/group/{
print “Group name: “, @name;
/student/{
print “Student name: “, CA[“fname”];
print “Midterm score: “, @mt;
}
}
Grading with Descendent
/doc(“roster.xml”)//group/{
print “Group name: “, @name;
/student/{
print “Student name: “, CA[“fname”];
print “Midterm score: “, @mt;
}
}
More Language Examples
j =0;
/student/{
name = @fname;
studentName[j] = name;
grades[name] = @mt;
grades[name] += @final;
j++;
}
XAWK Implementation
XAWK Implementation
XAWK Testing
ant build file for robust compiling and test
execution
Shell script for testing ‘failure cases’
Test cases:
Pattern matching
Control statements
Arrays
Mathematical and Relational Operators
Concatenation
Promotion
Conclusion and Lessons
Learned
Antlr can be made to do just about
anything, but you might need a crowbar
Testing is very important
Coding in pairs helps catch errors and
solve problems
Constant code refactoring keeps it clear
and clean
Get to work early, make a good plan