13 research outputs found

    Design and Implementation of a Profiler for ASIPs

    Get PDF
    Hlavným cieľom tejto práce je analyzovať možnosti profilovania aplikačne špecifických procesorov, preskúmať bežne používané profilovacie techniky a využiť získané informácie pri návrhu a implementácii nového profilovacieho nástroja použiteľného pri vývoji a optimalizácii procesorov. Táto bakalárska práca prezentuje požiadavky na nový profiler a popisuje jeho hlavné časti z pohľadu procesu návrhu a implementácie.The major objective of this work is to analyse possibilities of profiling application specific instruction-set processors, to explore some common profiling techniques and to use the collected information to design and implement a new profiling tool suitable for utilization in the processors development and optimization. This bachelor thesis presents requirements on the new profiler and describes its key parts from the design and the implementation perspective.

    Declarative visitors to ease fine-grained source code mining with full history on billions of AST nodes

    Get PDF
    Software repositories contain a vast wealth of information about software development. Mining these repositories has proven useful for detecting patterns in software development, testing hypotheses for new software engineering approaches, etc. Specifically, mining source code has yielded significant insights into software development artifacts and processes. Unfortunately, mining source code at a large-scale remains a difficult task. Previous approaches had to either limit the scope of the projects studied, limit the scope of the mining task to be more coarse-grained, or sacrifice studying the history of the code due to both human and computational scalability issues. In this paper we address the substantial challenges of mining source code: a) at a very large scale; b) at a fine-grained level of detail; and c) with full history information. To address these challenges, we present domain-specific language features for source code mining. Our language features are inspired by object-oriented visitors and provide a default depth-first traversal strategy along with two expressions for defining custom traversals. We provide an implementation of these features in the Boa infrastructure for software repository mining and describe a code generation strategy into Java code. To show the usability of our domain-specific language features, we reproduced over 40 source code mining tasks from two large-scale previous studies in just 2 person-weeks. The resulting code for these tasks show between 2.0x--4.8x reduction in code size. Finally we perform a small controlled experiment to gain insights into how easily mining tasks written using our language features can be understood, with no prior training. We show a substantial number of tasks (77%) were understood by study participants, in about 3 minutes per task

    Scrap your boilerplate with object algebras

    Get PDF
    htmlabstractTraversing complex Abstract Syntax Trees (ASTs) typically requires large amounts of tedious boilerplate code. For many operations most of the code simply walks the structure, and only a small portion of the code implements the functional- ity that motivated the traversal in the first place. This paper presents a type-safe Java framework called Shy that removes much of this boilerplate code. In Shy Object Algebras are used to describe complex and extensible AST structures. Using Java annotations Shy generates generic boilerplate code for various types of traversals. For a concrete traversal, users of Shy can then inherit from the generated code and over- ride only the interesting cases. Consequently, the amount of code that users need to write is significantly smaller. Moreover, traversals using the Shy framework are also much more structure shy, becoming more adaptive to future changes or extensions to the AST structure. To prove the effectiveness of the approach, we applied Shy in the implementation of a domain-specific questionnaire language. Our results show that for a large number of traversals there was a significant reduction in the amount of user-defined code

    EVF: An Extensible and Expressive Visitor Framework for Programming Language Reuse

    Get PDF

    Parsing Raptarchis’ legislative documents for Nomothesi@ platform

    Get PDF
    Με την ανάπτυξη της τεχνολογίας και του Internet υπάρχει μια τεράστια αύξηση στον όγκο των δεδομένων που είναι προσβάσιμα στους χρήστες του. Τα τελευταία χρόνια, όλο και περισσότερες χώρες συμμετέχουν σε μια προσπάθεια εμπλουτισμού της κατηγορίας των διασυνδεδεμένων δεδομένων που σχετίζονται με τη νομοθετική γνώση. Την πρόσβαση στις γνώσεις αυτές την παρέχει η Nomothesi@, μια ηλεκτρονική πλατφόρμα αναζήτησης πάνω στην ελληνική νομοθεσία και η οποία είναι υλοποιημένη με χρήση REST τεχνολογιών και τροφοδοτείται από ένα μεγάλο όγκο πληροφοριών βασισμένο πάνω στον μοντέλο δεδομένων RDF περιγράφοντας τις νομοθετικές σχέσεις σύμφωνα με την μοντελοποίησή τους πάνω σε μια OWL οντολογία. Σκοπός της εργασίας αυτής είναι να επεκτείνει τα ήδη υπάρχοντα δεδομένα της πλατφόρμας με τους νομοθετικούς τόμους του Ραπτάρχη και να προσφέρει στους χρήστες της ένα μεγαλύτερο εύρος νομικών αρχείων συμβάλλοντας με τον τρόπο αυτό στην αναπαράσταση της νομικής γνώσης που συμπεριλαμβάνεται στα ανοιχτά δεδομένα σχετικά με την ελληνική νομοθεσία. Η νομοθετική συλλογή του Ραπτάρχη αποτελείται από τόμους χωρισμένους σύμφωνα με θεματικές ενότητες, καθένας από τους οποίους περιέχει μια συλλογή από νομοθετικές πηγές. Στα πλαίσια της εργασίας, για να επιτευχθεί η εξαγωγή των δεδομένων που θα τροφοδοτήσουν την πλατφόρμα Nomothesi@, οι τόμοι διασπάστηκαν σε μεμονωμένες νομοθετικές πηγές ανά αρχείο κειμένου και στη συνέχεια υλοποιήθηκε ένας συντακτικός αναλυτής σε γλώσσα προγραμματισμού Java για την αναγνώριση των ιεραρχικών συστατικών δομών που αποτελούν μια νομοθετική πηγή. Ως αποτέλεσμα το έργο αυτό συμβάλλει στην διεύρυνση του όγκου των νομοθετικών κειμένων που είναι προσβάσιμα στα ανοιχτά δεδομένα για πληροφόρηση και ενθαρρύνει την περαιτέρω αξιοποίηση τους.With the growth of technology and Internet’s scope there is a huge increase in the volume of data which is accessible to its users. In the last few years, more and more countries are participating in attempts to enrich the category of interconnected data that is associated with legislative knowledge. Access to this knowledge is provided by Nomothesi@, a web search platform for Greek Legislation, implemented using REST technologies and powered by a large amount of information based on the RDF data model describing the legislative relationships that are modeled based on an OWL ontology. The purpose of this work is to extend the platform's existing data with Raptarchis’ legal volumes and to provide its users with a wider range of legal archives, thereby contributing to the representation of the legal knowledge contained in open data related to Greek Legislation. The Raptarchis’ Legislative Collection consists of volumes divided into thematic sections, each containing a collection of legislative sources. In the context of the work, in order to obtain the data that would feed the Nomothesi@ platform, the volumes were broken down into individual legislative sources per text file and a parser written in Java programming language was implemented in order to identify the hierarchical component structures that constitute a legislative source. As a result, this project contributes to expanding the volume of legislative texts accessible to open data for information and encourages their further exploitation

    Scrap your boilerplate with object algebras

    Get PDF
    International audienceTraversing complex Abstract Syntax Trees (ASTs) typically requires large amounts of tedious boilerplate code. For many operations most of the code simply walks the structure, and only a small portion of the code implements the functional- ity that motivated the traversal in the first place. This paper presents a type-safe Java framework called Shy that removes much of this boilerplate code. In Shy Object Algebras are used to describe complex and extensible AST structures. Using Java annotations Shy generates generic boilerplate code for various types of traversals. For a concrete traversal, users of Shy can then inherit from the generated code and over- ride only the interesting cases. Consequently, the amount of code that users need to write is significantly smaller. Moreover, traversals using the Shy framework are also much more structure shy, becoming more adaptive to future changes or extensions to the AST structure. To prove the effectiveness of the approach, we applied Shy in the implementation of a domain-specific questionnaire language. Our results show that for a large number of traversals there was a significant reduction in the amount of user-defined code

    The VISITOR Pattern as a Reusable, Generic, Type-Safe Component

    No full text
    The Visitor design pattern shows how to separate the structure of an object hierarchy from the behaviour of traversals over that hierarchy. The pattern is very flexible; this very flexibility makes it difficult to capture the pattern as anything more formal than prose, pictures and prototypes. We show how to capture the essence of the Visitor pattern as a reusable software library, by using advanced type system features appearing in modern object-oriented languages such as Scala. We preserve type-safety statically and modularly: no reflection or similar mechanisms are used and modules can be independently compiled. The library is generic, in two senses: not only is it parametrised by both the return type and the shape of the object hierarchy, but also it allows a number of implementation choices (internal versus external control, imperative versus functional behaviour, orthogonal aspects such as tracing and memoisation) to be specified by parameters rather than fixed in early design decisions. Finally, we propose a generalised datatype-like notation, on top of our visitor library: this provides a convenient functional decomposition style in object-oriented languages. Copyright © 2008 ACM

    The VISITOR Pattern as a Reusable, Generic, Type-Safe Component

    No full text
    The visitor design pattern shows how to separate the structure of an object hierarchy from the behaviour of traversals over that hierarchy. the pattern is very flexible; this very flexibility makes it difficult to capture the pattern as anything more formal than prose, pictures and prototypes. we show how to capture the essence of the visitor pattern as a reusable software library, by using advanced type system features appearing in modern object-oriented languages such as scala. we preserve type-safety statically and modularly: no reflection or similar mechanisms are used and modules can be independently compiled. the library is generic, in two senses: not only is it parametrised by both the return type and the shape of the object hierarchy, but also it allows a number of implementation choices (internal versus external control, imperative versus functional behaviour, orthogonal aspects such as tracing and memoisation) to be specified by parameters rather than fixed in early design decisions. finally, we propose a generalised datatype-like notation, on top of our visitor library: this provides a convenient functional decomposition style in object-oriented languages. Copyright © 2008 ACM
    corecore