Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Design of XSLT Engine
http://www-sato.cc.u-tokyo.ac.jp/
schuko/XSLT-Engine.ppt
17, June, 2004
17/06/2004
1
Obtaining Result -- Engine
• Parse done, What remains?
XSLT source
XSLT stylesheet tree structure
Execution
XSLT Engine
Result
17/06/2004
2
Conventional Explanation
• Compile and Go on a Chip
Program
Compile
Executable Code
Execution
Processor
Result
17/06/2004
3
Executable Code and Engine
• What is “Executable Code”?
Depends on Execution Engine.
– CPU
• Pentium, Itanium,
• SPARC, Alpha, POWER
• …
– Virtual Machine
• Java VM
• PostScript
17/06/2004
4
Executable Code and Engine
• Engine + Supporting Functions
= Runtime Environment
CPU
OS Functions
Memory Management
Thread Management
Memory Management
including Garbage Collection
Engines for Many Functional
Thread Management
Languages
including Synchronization.
Java VM
17/06/2004
5
Compiler and Interpreter
( Note this discussion is Obsolete)
• Conversion to Executable Code on :
Compiler
Virtual Machine
OS
OS
CPU
17/06/2004
Interpreter
CPU
6
Java VM
• Stack Machine
– Code Size Dramatically Small
– Simple Mobility, Portability ◎
• A Small Number of Registers
• Instructions Operate on Stack
Specification:
http://java.sun.com/docs/books/vmspec/2ndedition/html/VMSpecTOC.doc.html
17/06/2004
7
“Compiling” Java Program
int add12and13() {
return addTwoStatic(12, 13);
}
Method
bipush 12
bipush 13
invokestatic #3
ireturn
17/06/2004
8
Frame Management
• Key Idea in Function Call/ Method
Invocation
– Keeping Information Local to Function/Method
• Arguments
• Local Variables
• Return Address
17/06/2004
9
Frame Management(2)
• Management Scope and Extent of Variables
Anyway, something is Necessary.
Stack for Frame (Access Here)
Stack for Saving Non-Local Values
Dedicated Area for each Subroutine (Oldfashioned Fortran) Recursion ×
17/06/2004
10
XSLT Engine
• Key Idea =
Template Instantiation (Function Call)
+
XPath Expression Evaluation
17/06/2004
11
Template Instantiation
1. Find Template to be Instantiated.
2. Allocate Frame for Local Variables.
Arguments and xsl:variable
3. Instantiate Template
17/06/2004
12
Value LookUp
• VARIABLE has its own Binding
– Mechanism of Extracting VALUE from the
Binding is Indispensable.
– For Conventional Imperative Language,
A Location is Assigned to a VARIABLE.
(Compiler Statically Resolves it)
Local Variable In Frame
Global Variable In Heap
17/06/2004
13
Value LookUp (2)
• EG.
y = x+z
s
w
z
y
x
add (SP), (SP+8) (SP+4)
In this case, value lookup is
implemented as the
SP
access to locations.
17/06/2004
14
Value LookUp (3)
• In a Call, …
fact(int n) : if (n = 0) 1 else n * fact(n-1)
fact(3)
ret
3
17/06/2004
fact(2) fact(1) fact(0)
ret
2
ret
1
ret
0
15
Value LookUp (4)
• In Simple Processor
– Value is Looked up with the Variable Name as
the Key.
Table for Variables
y=x+z
17/06/2004
x
y
z
w
1
3
5
3
16
Evaluation of XPATH
Expressions
• What is “EVALUATION”?
• Semantics for Expressions
Evaluation
Syntactic
Structure
17/06/2004
Semantic Domain Value
17
Formal Semantics
• If Semantics and Semantic Domain are
Given in terms of Mathematics,
there is NO ROOM for misunderstanding.
• Style of Semantics
– Operational Semantics
• Action on some Abstract Machine
– Denotational Semantics
• Mapping to some Mathematical Object
17/06/2004
18
Denotational Semantics of
XPATH
• Node Set --- A set of nodes in a Tree
-- Tree Traversal, and
-- Set Manipulation
17/06/2004
19
17/06/2004
20
17/06/2004
21
17/06/2004
22
StyleSheet Evaluation
• Interpretive Evaluation:
1. Find the template which matches ‘/’
2. Evaluate the template
Evaluate each child in order
if (child is LiteralResultElement) {
Make the same node, and
Evaluate Children as its children
(Depends on Recursive Structure of TREEs)
} else
17/06/2004
23
StyleSheet Evaluation (2)
<xsl:template match=“/”>
<root>
root
<child1>
<child2>
</root>
EVAL
EVAL
child2
child11
17/06/2004
24
StyleSheet Evaluation (3)
Else { // Instruction
Evaluate the Instruction
}
EG.
<xsl:for-each select=“SEL”>
Children
</xsl:for-each>
Foreach (s ∈ [| SEL |])
17/06/2004
Evaluate (Children)(current-node = s)
25
StyleSheet Evaluation (4)
Evaluation of template call
Be Sure to Make FRAME (Local
Environment)
17/06/2004
26
Need for Optimization
• So far, Simple Interpretation
• For Fast/Efficient Execution,
Optimization through Program Analysis
• Template Instantiation
• Evaluation of XPATH Expressions
17/06/2004
27