Results 1 -
6 of
6
XML goes native: Run-time representations for Xtatic
- In 14th International Conference on Compiler Construction
, 2004
"... Abstract. Xtatic is a lightweight extension of C ♯ offering native support for statically typed XML processing. XML trees are built-in values in Xtatic, and static analysis of the trees manipulated by programs is part of the ordinary job of the typechecker. “Tree grep ” pattern matching is used to i ..."
Abstract
-
Cited by 15 (6 self)
- Add to MetaCart
Abstract. Xtatic is a lightweight extension of C ♯ offering native support for statically typed XML processing. XML trees are built-in values in Xtatic, and static analysis of the trees manipulated by programs is part of the ordinary job of the typechecker. “Tree grep ” pattern matching is used to investigate and transform XML trees. Xtatic’s surface syntax and type system are tightly integrated with those of C ♯. Beneath the hood, however, an implementation of Xtatic must address a number of issues common to any language supporting a declarative style of XML processing (e.g., XQuery, XSLT, XDuce, CDuce, Xact, Xen, etc.). In particular, it must provide representations for XML tags, trees, and textual data that use memory efficiently, support efficient pattern matching, allow maximal sharing of common substructures, and permit separate compilation. We analyze these representation choices in detail and describe the solutions used by the Xtatic compiler. 1
Matching with Regular Constraints
- SUTCLIFFE G., VORONKOV A., Eds., Proceedings of LPAR’05
, 2005
"... We describe a sound, terminating, and complete matching algorithm for terms built over flexible arity function symbols and context, function, sequence, and individual variables. Context and sequence variables allow matching to move in term trees to arbitrary depth and breadth, respectively. The ..."
Abstract
-
Cited by 6 (6 self)
- Add to MetaCart
We describe a sound, terminating, and complete matching algorithm for terms built over flexible arity function symbols and context, function, sequence, and individual variables. Context and sequence variables allow matching to move in term trees to arbitrary depth and breadth, respectively. The values of variables can be constrained by regular expressions which are not necessarily linear. We describe heuristics for optimization, and discuss applications.
Paths into patterns
, 2004
"... The XML Path Language (XPath) is an industry standard notation for addressing parts of an XML document. It is supported by many XML processing libraries and has been used as the foundation for several dedicated XML processing languages. Regular patterns, an alternative way of investigating and destr ..."
Abstract
-
Cited by 6 (3 self)
- Add to MetaCart
The XML Path Language (XPath) is an industry standard notation for addressing parts of an XML document. It is supported by many XML processing libraries and has been used as the foundation for several dedicated XML processing languages. Regular patterns, an alternative way of investigating and destructing XML documents, were first proposed in the XDuce language and feature in a number of its descendants. The processing styles offered by XPath and by regular patterns are each quite convenient for certain sorts of tasks, and the designer of a future XML processing language might well like to provide both. This designer might wonder, however, to what extent these mechanisms can be based on a common foundation. Can one be implemented by translating it into the other? Can aspects of both be combined into a single notation? As a first step toward addressing these questions, we show in this paper that a language closely related to the “downward axis ” fragment of XPath can be accurately translated into ambiguous XDuce-style regular patterns with a “collect all matches ” interpretation. 1
Adapting Functional Programs to Higher-Order Logic
"... Abstract. Higher-order logic proof systems combine functional programming with logic, providing functional programmers with a comfortable setting for the formalization of programs, specifications, and proofs. However, a possibly unfamiliar aspect of working in such an environment is that formally es ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Abstract. Higher-order logic proof systems combine functional programming with logic, providing functional programmers with a comfortable setting for the formalization of programs, specifications, and proofs. However, a possibly unfamiliar aspect of working in such an environment is that formally establishing program termination is necessary. In many cases, termination can be automatically proved, but there are useful programs that diverge and others that always terminate but have difficult termination proofs. We discuss techniques that support the expression of such programs as logical functions. 1.
Outline of the talk 1 XML Programming in �Duce XML Regular Expression Types and Patterns
, 2007
"... �Duce functional core Extension to other type constructors 3 Beyond XML. Application of the theory to the π-calculus New results on Milner’s encoding SBLP ’07 logoP7 ..."
Abstract
- Add to MetaCart
�Duce functional core Extension to other type constructors 3 Beyond XML. Application of the theory to the π-calculus New results on Milner’s encoding SBLP ’07 logoP7
Compiling Regular Patterns to Sequential Machines
, 2004
"... this paper, we will give a formal model of the shortest match and derive our algorithms from it. This model is based on the metaphor that binding to a variable can be seen as tagging parts of the input with the variable to which they are bound. Let us agree on writing xa for appending input element ..."
Abstract
- Add to MetaCart
this paper, we will give a formal model of the shortest match and derive our algorithms from it. This model is based on the metaphor that binding to a variable can be seen as tagging parts of the input with the variable to which they are bound. Let us agree on writing xa for appending input element a to variable x.Thenmatching "From : jj@foo.net\n ..." against the email pattern above to yield the substitution {x ## "jj@foo.net"} is conceptually the same as transforming the input string to " From : x j x j x @ x f x o x o x . x n x e x t\n ..."

