Results 1 -
5 of
5
Pure and declarative syntax definition: paradise lost and regained
, 2010
"... year = {2010}, booktitle = {Proceedings of Onward! 2010}, publisher = {ACM}, ..."
Abstract
-
Cited by 16 (2 self)
- Add to MetaCart
(Show Context)
year = {2010}, booktitle = {Proceedings of Onward! 2010}, publisher = {ACM},
Parsing in a Broad Sense
- In MoDELS, volume 8767 of LNCS
, 2014
"... Abstract. Having multiple representations of the same instance is com-mon in software language engineering: models can be visualised as graphs, edited as text, serialised as XML. When mappings between such repre-sentations are considered, terms “parsing ” and “unparsing ” are often used with incompa ..."
Abstract
-
Cited by 9 (8 self)
- Add to MetaCart
(Show Context)
Abstract. Having multiple representations of the same instance is com-mon in software language engineering: models can be visualised as graphs, edited as text, serialised as XML. When mappings between such repre-sentations are considered, terms “parsing ” and “unparsing ” are often used with incompatible meanings and varying sets of underlying assumptions. We investigate 12 classes of artefacts found in software language pro-cessing, present a case study demonstrating their implementations and state-of-the-art mappings among them, and systematically explore the technical research space of bidirectional mappings to build on top of the existing body of work and discover as of yet unused relationships.
Building call graphs for embedded client-side code in dynamic web applications
- In Proc. Int’l Symposium Foundations of Software Engineering (FSE
, 2014
"... ABSTRACT When developing and maintaining a software system, programmers often rely on IDEs to provide editor services such as syntax highlighting, auto-completion, and "jump to declaration". In dynamic web applications, such tool support is currently limited to either the server-side code ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
(Show Context)
ABSTRACT When developing and maintaining a software system, programmers often rely on IDEs to provide editor services such as syntax highlighting, auto-completion, and "jump to declaration". In dynamic web applications, such tool support is currently limited to either the server-side code or to hand-written or generated client-side code. Our goal is to build a call graph for providing editor services on client-side code while it is still embedded as string literals within server-side code. First, we symbolically execute the server-side code to identify all possible client-side code variations. Subsequently, we parse the generated client-side code with all its variations into a VarDOM that compactly represents all DOM variations for further analysis. Based on the VarDOM, we build conditional call graphs for embedded HTML, CSS, and JS. Our empirical evaluation on real-world web applications show that our analysis achieves 100% precision in identifying call-graph edges. 62% of the edges cross PHP strings, and 17% of them cross files-in both situations, navigation without tool support is tedious and error prone.
Integrated Language Definition Testing Enabling Test-Driven Language Development
"... title = {Integrated Language Definition Testing: ..."
(Show Context)
Natural and flexible error recovery . . .
, 2012
"... Integrated development environments (IDEs) increase programmer productivity, providing rapid, interactive feedback based on the syntax and semantics of a language. Unlike conventional parsing algorithms, scannerless generalized-LR parsing supports the full set of context-free grammars, which is clos ..."
Abstract
- Add to MetaCart
Integrated development environments (IDEs) increase programmer productivity, providing rapid, interactive feedback based on the syntax and semantics of a language. Unlike conventional parsing algorithms, scannerless generalized-LR parsing supports the full set of context-free grammars, which is closed under composition, and hence can parse languages composed from separate grammar modules. To apply this algorithm in an interactive environment, this paper introduces a novel error recovery mechanism. Our approach is language-independent, and relies on automatic derivation of recovery rules from