Language Factories and Modular Interpreters
|
|
|
- Mervyn Lucas
- 10 years ago
- Views:
Transcription
1 Language Factories and Modular Interpreters Tony Clark June 16, 2010 or language pattern. This approach is motivated by the aim of creating libraries of language module definitions so that new languages can be created by instantiating a composing modules. 2 A State-Machine Factory 1 Introduction Figure 1: State Machine Languages have a syntax and semantics. Often, when we talk of a language, for example a state-machine language, an expression language or an action language, we might mean a particular syntax and semantics, and at other times we might want the named language to denote a family of related languages. For example, the term state-machine might be used in the context of deterministic machines whose nodes are labelled with simple states and whose edges are labelled with simple events, or state-machine might be used to denote any element of a set of possible languages including deterministic machines, non-deterministic machines, priority-driven machines, action-based machines etc. Most language definition systems do not support language families because the syntax and semantics of any language is fixed. A Language Factory approach is different because it aims to capture a family in a single definition so that individual languages in the family can be instantiated from the definition. Think of a language factory as a kind of template Consider figure 1 that shows a state machine with 3 states (labelled S1,S2,S3) and 4 transitions. The labels on the transitions are pairs of events (e1,e2,e3) and tags (p1,p2,p3,p4). The idea is that the tags can be used to encode extra information on the transitions - some interpretations of the state machine might use the tags and some might not. Therefore, the syntax of the machine in figure 1 is actually a family of syntaxes that differ in terms of whether labels are allowed or not. Each element of the syntax family defines its own well-formedness rules. Each element of the family must define a semantics. The semantics of each element will have common features: the machine always starts in S1; the machine is event-driven; an event causes a state change defined by the outgoing event labels on the transitions from the node labelled with the current state. Here are a few possible semantic options: The machine is deterministic: each outgoing transition from a state must have a unique event label. The machine is single-threaded: some strategy is used to select one amongst multiple outgoing transitions with the same event label (variations include the first, the last, random choice, prioritization via transition tags). 1
2 The machine is non-determinstic (multithreaded): all possible transitions with the same label are chosen causing the machine to be in one of any number of states at any given time. The machine counts steps: a (single- or multithreaded) machine keeps track of both its current state and the number of transitions it has performed. The rest of this article describes how to encode all of these choices using XPL using a Language Factories approach. Syntax families are implemented by parameterising over the concrete syntax of a state machine. Semantic families are implemented by defining a modular interpreter for a state machine. The modular interpreter is written using a monadic-style that abstracts the key interpretive steps of machine execution as a standardized package of machine operations. The semantic variations are implemented by supplying different packages of machine operations. 3 Syntax Factories Consider the representation of a simple statemachine: {states = [ S1, S2, S3 ]; trans = [ {source= S1 ;event= e1 ;tag= ;target= S2, {source= S2 ;event= e2 ;tag= ;target= S1, {source= S2 ;event= e2 ;tag= ;target= S3, {source= S3 ;event= e3 ;tag= ;target= S1 ] This representation is the abstract syntax of a statemachine. We would like a more user-friendly style that hides the use of records and lists to represent the machine. This is achieved in XPL using a grammar definition. The grammar will process a representation as follows: S1-(e1)->S2 S2-(e2)->S1 S2-(e2)->S3 S3-(e3)->S1 However, we want the syntax definition for statemachines to allow for a family of languages. Each member of the family differs in terms of the extra syntax used to represent transition labels. Therefore, we define the syntax of a state-machine as a function that maps a grammar of tags to a grammar of machines: machine(tag) = { machine -> machine ss=states { t=trans* { [ { states = ${listexp(ss); trans = ${listexp(t) ] ; states -> [ s=name ss=(, name)* ] { map(fun(s) s.lift(),s:ss) ; trans -> s=name e=event t=name x=tag { [ { source = ${s.lift(); event = ${e.lift(); target = ${t.lift(); tag = ${x ] ; event -> -( n=name )-> { n The function machine maps a grammar tag to a grammar that parses machines. The rule machine processes states, transitions and synthesizes a record containing fields states and trans. The function listexp transforms a sequence of expressions to a list expression. The rule states recognizes a sequence of names and returns a sequence of string expressions. The rule trans recognizes a source name, an event tag, a target name and a tag, and then synthesizes a record with named fields whose values are the appropriate values. Note that the tag rule is supplied as an argument. The event rule recognizes and returns an event name. The machine grammar synthesizes XPL expressions. An expression is constructed using quasiquotes [ and ] that surround concrete XPL syntax. Instead is parsing an evaluating the expression, the quotes cause the expression to be parsed and returns as a value of type abstract-syntax. Within the quasi-quotes, the drop quotes ${ and surround expressions that are parsed and evaluated as usual. Therefore, [ x + ${y ] constructs a binary expression whose operator is +, whose left hand operand 2
3 is the variable x and whose right hand operand is the value of variable y (which should be of type abstract-syntax). All values may be sent a message lift() that translates the receiver into an expression that recreates the receiver when the expression is evaluated. The operstor listexp([e1,e2,...,en]) maps a sequence of expressions [e1,e2,...,en] to an expression [ [e1,e2,...,en] ]. The machine operator is a language factory for producing state-machine grammars. The family members differ in terms of the tag syntax that is supplied as an argument to machine. Here are two members of the family: simplemachine = machine({ rule -> { [ ] ) proritymachine = machine({ rule -> priority n=[ 0, 9 ] { n.lift() ) The grammar simplemachine ignores tags; each transition has an empty string as its tag value. The grammar prioritymachine expects each transition to have a keyword priority followed by a number in the range 0 to 9 which is returned (lifted as an expression). Here are two examples: m1 = intern simplemachine { S1-(e1)->S2 S2-(e2)->S1 S2-(e2)->S3 S3-(e3)->S1 m2 = intern prioritymachine { S1-(e1)->S2 priority 1 S2-(e2)->S1 priority 3 S2-(e2)->S3 priority 2 S3-(e3)->S1 priority 1 4 Modular Interpreters The semantics of state-machines can be defined in terms of transitions that are triggered in response to receiving events. As described above, there may be more than one semantics for a given state-machine. However, it turns out that many of the possible semantics have a similar pattern that involves checking the current state, matching transitions that are labelled with the next event and changing the current state of the machine. Such a semantic pattern constitutes a modular interpreter for state-machines. A modular interpreter is parameterized with respect to the key steps that are required in order to run a program (in this case the program is a statemachine and a sequence of events). Different semantics can be implemented for the same machine by supplying the interpreter with different packages of step-implementations. This approach is related to the monadic-interpreters of Hudak and to monads in general. Semantic processing of a state-machine involves the following steps: new state trans become stop Create and start a new machine. Return the current state of the machine. Select a transition that satisfies a given predicate. Change to a new state. Stop the machine. The steps take arguments that allows them to be composed in order to create state-machine processors. The arguments are defined as follows: new(p) state(f) A new machine is processed by p which is a processor created by composing the steps listed below. Supply the current machine state to the function f which returns a machine processor. trans(p,t,a) Supply function t with a transition that satisfies p. If no transition satisfies 3
4 p then do a. Both a and the result of t are machine processors. become(s,p) The current machine state changes to s and execution continues with processor p. Given suitable implementations of the machinesteps listed above, the following code implements a monadic interpreter for a state-machine: run(es) = letrec eval(es) = case es { [] -> stop; e:es -> state(fun(s) trans(fun(t) s = t.source and e = t.event, fun(t) become(t.target,eval(es)), eval(es))) in new(eval(es)) Notice how the interpreter abstracts away from the implementation of the machine and from the mechanisms by which the transitions and current state of the machine are processed. In fact with a little bit of sugar we would get the following which I would hope you would agree is simple and captures the essential features of an interpreter for a state-machine: run(es) = letrec eval(es) = case es { [] -> stop; e:es -> let s = state in let t = trans where s = t.source and e = t.event in become t.target; eval(es) in let m = new in eval(es) As it stands, the definition of run uses a fixed collection of step implementations (new, state, trans, become and stop). However, we want run to capture a family of different state-machine semantics. Therefore, run is modified in order to supply the package of step-implementations: run(mpkg)(es) = import mpkg { letrec eval(es) = case es { [] -> stop; e:es -> state(fun(s) trans(fun(t) s = t.source and e = t.event, fun(t) become(t.target,eval(es)), eval(es))) in new(eval(es)) 5 Semantics Factories A Language Factory approach allows a family of languages to be defined and instantiated from a single pattern definition. We have set up a family of concrete syntax in section 3 for state-machines. The definition of run in section 4 defines a family of related semantics for state-machines. The members of the family must all implement the step operations: new, state, trans, become and stop and a package containing the implementation is supplied to run. This section shows how the different semantics outlined in section 2 are all implemented as packages of step operations. 5.1 Deterministic A deterministic (or more accurately single-threaded) state-machine is in one state at any given time. In the following semantics, multiple transitions with the same event label from the same source state will cause the first transition to be selected: DET(m) = { new(next) = next(head(m.states)); stop(state) = state; trans(p,next,alt) = let T = filter(p,m.trans) in case T { [] -> alt; t:ts -> next(t) ; become(state,next)(ignore) = next(state); 4
5 state(f)(state) = (f(state))(state) run(det(m1))([ e1, e2, e1 ]) => s2 5.2 Non-Deterministic A non-deterministic (or multi-threaded) statemachine can be in multiple states at any given time. This can be implemented by changing the DET package of steps slightly in order to return a sequence of states. The stop step is altered to produce a sequence of current states. The trans step might find a sequence of applicable transitions T. Instead of selecting the first (as in DET), NONDET uses all of the applicable transitions. This produces a list of state-lists that must be flattened: NONDET(m) = { new = DET(m).new; stop(state) = [state]; trans(p,next,alt) = let T = filter(p,m.trans) in case T { [] -> alt; ts -> fun(state) let funs = map(next,ts) in flatten(map(fun(f) f(state),funs)) ; become = DET(m).become; state = DET(m).state run(nondet(m1))([ e1, e2, e1 ]) => [s2,s3] 5.3 Counting Steps The current state of the machine interpreter run as defined in sections 5.1 and 5.2 is a state-name. In the case of NONDET, a sequence of events is processed leading to multiple paths through the machine states. Some of these paths might terminate prematurely since the machine reaches a state for which there is no outgoing transition with the appropriate event label. Given a sequence of terminal states, it might be useful to know how many events were processed in order to reach each individual state. This can be implemented by a package of step operations that manage the interpreter state as a record: {state=s;count=n where s is the current machinestate and n is the number of events that have been processed to reach s: COUNT(m) = { new(next) = next({state=head(m.states);count=0); stop = NONDET(m).stop; trans = NONDET(m).trans; become(state,next)(previous) = next({state=state;count=previous.count + 1); state = NONDET(m).state run(count(m1))([ e1, e2, e1 ]) => [{state=s2;count=3,{state=s3;count=2] 5.4 Priority Based Finally, a deterministic state-machine might include multiple transitions leading from a state that all have the same event label. In order to control this we chose the first transition in section 5.1. However, we might want to compute the order dynamically, or to allow the programmer to specify the order. To do this we use a different syntax in the machine family. And order the transitions based on their priority: tagless(t1,t2) = t1.tag < t2.tag; PRIO(m) = { new = DET(m).new; stop = DET(m).stop; trans(p,next,alt) = let trans = sort(tagless,filter(p,m.trans)) in case trans { [] -> alt; t:ts -> next(t) ; become = DET(m).become; state = DET(m).state 5
6 run(prio(m2))([ e1, e2, e1 ]) => s2 Alternatively, changing the priority: m3 = intern prioritymachine { S1-(e1)->S2 priority 1 S2-(e2)->S1 priority 2 S2-(e2)->S3 priority 3 S3-(e3)->S1 priority 1 run(prio(m3))([ e1, e2, e1 ]) => s3 6 Conclusion This article has described the idea of Language Factories as a single definition that captures the idea of a family of related languages. A syntax factory can be defined as a grammar that is parameterized over variation points. Where the language has an operational semantics (in the case of a state-machine that processes sequences of events), a semantics factory can be defined as a modular interpreter that uses general-purpose steps to process programs (in this case a state machine + event sequences). Particular languages can be defined using different implementations of the steps that are supplied to the interpreter. 6
Pushdown automata. Informatics 2A: Lecture 9. Alex Simpson. 3 October, 2014. School of Informatics University of Edinburgh [email protected].
Pushdown automata Informatics 2A: Lecture 9 Alex Simpson School of Informatics University of Edinburgh [email protected] 3 October, 2014 1 / 17 Recap of lecture 8 Context-free languages are defined by context-free
Compiler Construction
Compiler Construction Regular expressions Scanning Görel Hedin Reviderad 2013 01 23.a 2013 Compiler Construction 2013 F02-1 Compiler overview source code lexical analysis tokens intermediate code generation
ABSTRACT 1. INTRODUCTION. Kamil Bajda-Pawlikowski [email protected]
Kamil Bajda-Pawlikowski [email protected] Querying RDF data stored in DBMS: SPARQL to SQL Conversion Yale University technical report #1409 ABSTRACT This paper discusses the design and implementation
Syntax Check of Embedded SQL in C++ with Proto
Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 383 390. Syntax Check of Embedded SQL in C++ with Proto Zalán Szűgyi, Zoltán Porkoláb
Data Integration through XML/XSLT. Presenter: Xin Gu
Data Integration through XML/XSLT Presenter: Xin Gu q7.jar op.xsl goalmodel.q7 goalmodel.xml q7.xsl help, hurt GUI +, -, ++, -- goalmodel.op.xml merge.xsl goalmodel.input.xml profile.xml Goal model configurator
CS1102: Adding Error Checking to Macros
CS1102: Adding Error Checking to Macros Kathi Fisler, WPI October 6, 2008 1 Typos in State Machines The point of creating macros for state machines is to hide language details from the programmer. Ideally,
Exchanger XML Editor - Canonicalization and XML Digital Signatures
Exchanger XML Editor - Canonicalization and XML Digital Signatures Copyright 2005 Cladonia Ltd Table of Contents XML Canonicalization... 2 Inclusive Canonicalization... 2 Inclusive Canonicalization Example...
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
SMock A Test Platform for the Evaluation of Monitoring Tools
SMock A Test Platform for the Evaluation of Monitoring Tools User Manual Ruth Mizzi Faculty of ICT University of Malta June 20, 2013 Contents 1 Introduction 3 1.1 The Architecture and Design of SMock................
Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
Compiler I: Syntax Analysis Human Thought
Course map Compiler I: Syntax Analysis Human Thought Abstract design Chapters 9, 12 H.L. Language & Operating Sys. Compiler Chapters 10-11 Virtual Machine Software hierarchy Translator Chapters 7-8 Assembly
03 - Lexical Analysis
03 - Lexical Analysis First, let s see a simplified overview of the compilation process: source code file (sequence of char) Step 2: parsing (syntax analysis) arse Tree Step 1: scanning (lexical analysis)
ML for the Working Programmer
ML for the Working Programmer 2nd edition Lawrence C. Paulson University of Cambridge CAMBRIDGE UNIVERSITY PRESS CONTENTS Preface to the Second Edition Preface xiii xv 1 Standard ML 1 Functional Programming
Building and Using Web Services With JDeveloper 11g
Building and Using Web Services With JDeveloper 11g Purpose In this tutorial, you create a series of simple web service scenarios in JDeveloper. This is intended as a light introduction to some of the
Register File, Finite State Machines & Hardware Control Language
Register File, Finite State Machines & Hardware Control Language Avin R. Lebeck Some slides based on those developed by Gershon Kedem, and by Randy Bryant and ave O Hallaron Compsci 04 Administrivia Homework
Obfuscation: know your enemy
Obfuscation: know your enemy Ninon EYROLLES [email protected] Serge GUELTON [email protected] Prelude Prelude Plan 1 Introduction What is obfuscation? 2 Control flow obfuscation 3 Data flow
Using SystemVerilog Assertions for Creating Property-Based Checkers
Using SystemVerilog Assertions for Creating Property-Based Checkers Eduard Cerny Synopsys, Inc. Marlborough, USA [email protected] Dmitry Korchemny Intel Corp. Haifa, Israel [email protected]
VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR
VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR Andrey V.Lyamin, State University of IT, Mechanics and Optics St. Petersburg, Russia Oleg E.Vashenkov, State University of IT, Mechanics and Optics, St.Petersburg,
JavaScript: Introduction to Scripting. 2008 Pearson Education, Inc. All rights reserved.
1 6 JavaScript: Introduction to Scripting 2 Comment is free, but facts are sacred. C. P. Scott The creditor hath a better memory than the debtor. James Howell When faced with a decision, I always ask,
COMPUTER SCIENCE TRIPOS
CST.98.5.1 COMPUTER SCIENCE TRIPOS Part IB Wednesday 3 June 1998 1.30 to 4.30 Paper 5 Answer five questions. No more than two questions from any one section are to be answered. Submit the answers in five
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
Embedded Software Development with MPS
Embedded Software Development with MPS Markus Voelter independent/itemis The Limitations of C and Modeling Tools Embedded software is usually implemented in C. The language is relatively close to the hardware,
Testing LTL Formula Translation into Büchi Automata
Testing LTL Formula Translation into Büchi Automata Heikki Tauriainen and Keijo Heljanko Helsinki University of Technology, Laboratory for Theoretical Computer Science, P. O. Box 5400, FIN-02015 HUT, Finland
Library Intro AC800M
Library Intro AC800M Connecting Libraries Standard Custom Prepare Connect Application Library Data Types Blocks Modules Library Intro AC800M Connecting Libraries Standard Custom Prepare Connect Application
Software Engineering
Software Engineering Lecture 04: The B Specification Method Peter Thiemann University of Freiburg, Germany SS 2013 Peter Thiemann (Univ. Freiburg) Software Engineering SWT 1 / 50 The B specification method
Lecture 9. Semantic Analysis Scoping and Symbol Table
Lecture 9. Semantic Analysis Scoping and Symbol Table Wei Le 2015.10 Outline Semantic analysis Scoping The Role of Symbol Table Implementing a Symbol Table Semantic Analysis Parser builds abstract syntax
[Refer Slide Time: 05:10]
Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture
Towards a Framework for Generating Tests to Satisfy Complex Code Coverage in Java Pathfinder
Towards a Framework for Generating Tests to Satisfy Complex Code Coverage in Java Pathfinder Matt Department of Computer Science and Engineering University of Minnesota [email protected] Abstract We present
13 File Output and Input
SCIENTIFIC PROGRAMMING -1 13 File Output and Input 13.1 Introduction To make programs really useful we have to be able to input and output data in large machinereadable amounts, in particular we have to
Jedd: A BDD-based Relational Extension of Java
Jedd: A BDD-based Relational Extension of Java Ondřej Lhoták Laurie Hendren Sable Research Group, School of Computer Science McGill University, Montreal, Canada {olhotak,hendren}@sable.mcgill.ca ABSTRACT
A Framework for Extensible Languages
A Framework for Extensible Languages Sebastian Erdweg TU Darmstadt, Germany Felix Rieger TU Darmstadt, Germany Abstract Extensible programming languages such as SugarJ or Racket enable programmers to introduce
Programming and Reasoning with Algebraic Effects and Dependent Types
Programming and Reasoning with Algebraic Effects and Dependent Types Edwin C. Brady School of Computer Science, University of St Andrews, St Andrews, Scotland. Email: [email protected] Abstract One
Semester Review. CSC 301, Fall 2015
Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!
AUTOMATED TEST GENERATION FOR SOFTWARE COMPONENTS
TKK Reports in Information and Computer Science Espoo 2009 TKK-ICS-R26 AUTOMATED TEST GENERATION FOR SOFTWARE COMPONENTS Kari Kähkönen ABTEKNILLINEN KORKEAKOULU TEKNISKA HÖGSKOLAN HELSINKI UNIVERSITY OF
Automatic Test Data Synthesis using UML Sequence Diagrams
Vol. 09, No. 2, March April 2010 Automatic Test Data Synthesis using UML Sequence Diagrams Ashalatha Nayak and Debasis Samanta School of Information Technology Indian Institute of Technology, Kharagpur
Simulation-Based Security with Inexhaustible Interactive Turing Machines
Simulation-Based Security with Inexhaustible Interactive Turing Machines Ralf Küsters Institut für Informatik Christian-Albrechts-Universität zu Kiel 24098 Kiel, Germany [email protected]
Programming and Reasoning with Side-Effects in IDRIS
Programming and Reasoning with Side-Effects in IDRIS Edwin Brady 19th October 2014 Contents 1 Introduction 3 1.1 Hello world............................................. 3 1.2 Outline................................................
Software Engineering and Service Design: courses in ITMO University
Software Engineering and Service Design: courses in ITMO University Igor Buzhinsky [email protected] Computer Technologies Department Department of Computer Science and Information Systems December
Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage
Outline 1 Computer Architecture hardware components programming environments 2 Getting Started with Python installing Python executing Python code 3 Number Systems decimal and binary notations running
Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.
Handout 1 CS603 Object-Oriented Programming Fall 15 Page 1 of 11 Handout 1 Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Java
State-Machine Replication
State-Machine Replication The Problem Clients Server The Problem Clients Server The Problem Clients Server The Problem Clients Server The Problem Clients Server The Problem Clients Server Solution: replicate
Automata and Computability. Solutions to Exercises
Automata and Computability Solutions to Exercises Fall 25 Alexis Maciel Department of Computer Science Clarkson University Copyright c 25 Alexis Maciel ii Contents Preface vii Introduction 2 Finite Automata
Efficiency of algorithms. Algorithms. Efficiency of algorithms. Binary search and linear search. Best, worst and average case.
Algorithms Efficiency of algorithms Computational resources: time and space Best, worst and average case performance How to compare algorithms: machine-independent measure of efficiency Growth rate Complexity
My IC Customizer: Descriptors of Skins and Webapps for third party User Guide
User Guide 8AL 90892 USAA ed01 09/2013 Table of Content 1. About this Document... 3 1.1 Who Should Read This document... 3 1.2 What This Document Tells You... 3 1.3 Terminology and Definitions... 3 2.
CHAPTER 7 GENERAL PROOF SYSTEMS
CHAPTER 7 GENERAL PROOF SYSTEMS 1 Introduction Proof systems are built to prove statements. They can be thought as an inference machine with special statements, called provable statements, or sometimes
Chapter 4 Register Transfer and Microoperations. Section 4.1 Register Transfer Language
Chapter 4 Register Transfer and Microoperations Section 4.1 Register Transfer Language Digital systems are composed of modules that are constructed from digital components, such as registers, decoders,
Coding and decoding with convolutional codes. The Viterbi Algor
Coding and decoding with convolutional codes. The Viterbi Algorithm. 8 Block codes: main ideas Principles st point of view: infinite length block code nd point of view: convolutions Some examples Repetition
Cost Model: Work, Span and Parallelism. 1 The RAM model for sequential computation:
CSE341T 08/31/2015 Lecture 3 Cost Model: Work, Span and Parallelism In this lecture, we will look at how one analyze a parallel program written using Cilk Plus. When we analyze the cost of an algorithm
System modeling. Budapest University of Technology and Economics Department of Measurement and Information Systems
System modeling Business process modeling how to do it right Partially based on Process Anti-Patterns: How to Avoid the Common Traps of Business Process Modeling, J Koehler, J Vanhatalo, IBM Zürich, 2007.
Open-Source, Cross-Platform Java Tools Working Together on a Dialogue System
Open-Source, Cross-Platform Java Tools Working Together on a Dialogue System Oana NICOLAE Faculty of Mathematics and Computer Science, Department of Computer Science, University of Craiova, Romania [email protected]
Parsing Technology and its role in Legacy Modernization. A Metaware White Paper
Parsing Technology and its role in Legacy Modernization A Metaware White Paper 1 INTRODUCTION In the two last decades there has been an explosion of interest in software tools that can automate key tasks
INSTALLATION AND CONFIGURATION MANUAL EMAILENCODER
INSTALLATION AND CONFIGURATION MANUAL EMAILENCODER P R O F E S S I O N A L S O F T W A R E E N G I N E E R I N G Meridium AB 1 (19) 1(19) CONTENTS 1 INTRODUCTION... 4 1.1 How does it work?... 4 1.2 Browser
Introducing Formal Methods. Software Engineering and Formal Methods
Introducing Formal Methods Formal Methods for Software Specification and Analysis: An Overview 1 Software Engineering and Formal Methods Every Software engineering methodology is based on a recommended
Scanner. tokens scanner parser IR. source code. errors
Scanner source code tokens scanner parser IR errors maps characters into tokens the basic unit of syntax x = x + y; becomes = + ; character string value for a token is a lexeme
Caml Virtual Machine File & data formats Document version: 1.4 http://cadmium.x9c.fr
Caml Virtual Machine File & data formats Document version: 1.4 http://cadmium.x9c.fr Copyright c 2007-2010 Xavier Clerc [email protected] Released under the LGPL version 3 February 6, 2010 Abstract: This
Model-Driven Development - From Frontend to Code
Model-Driven Development - From Frontend to Code Sven Efftinge [email protected] www.efftinge.de Bernd Kolb [email protected] www.kolbware.de Markus Völter [email protected] www.voelter.de -1- Model Driven
Developing an Inventory Management System for Second Life
Developing an Inventory Management System for Second Life Abstract Anthony Rosequist Workflow For the progress report a month ago, I set the goal to have a basic, functional inventory management system
Programming Database lectures for mathema
Programming Database lectures for mathematics students April 25, 2015 Functions Functions are defined in Postgres with CREATE FUNCTION name(parameter type,...) RETURNS result-type AS $$ function-body $$
An Introduction to Assembly Programming with the ARM 32-bit Processor Family
An Introduction to Assembly Programming with the ARM 32-bit Processor Family G. Agosta Politecnico di Milano December 3, 2011 Contents 1 Introduction 1 1.1 Prerequisites............................. 2
Replication on Virtual Machines
Replication on Virtual Machines Siggi Cherem CS 717 November 23rd, 2004 Outline 1 Introduction The Java Virtual Machine 2 Napper, Alvisi, Vin - DSN 2003 Introduction JVM as state machine Addressing non-determinism
ASSEMBLY LANGUAGE PROGRAMMING (6800) (R. Horvath, Introduction to Microprocessors, Chapter 6)
ASSEMBLY LANGUAGE PROGRAMMING (6800) (R. Horvath, Introduction to Microprocessors, Chapter 6) 1 COMPUTER LANGUAGES In order for a computer to be able to execute a program, the program must first be present
Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5
Technical Note Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5 In the VMware Infrastructure (VI) Perl Toolkit 1.5, VMware
Iotivity Programmer s Guide Soft Sensor Manager for Android
Iotivity Programmer s Guide Soft Sensor Manager for Android 1 CONTENTS 2 Introduction... 3 3 Terminology... 3 3.1 Physical Sensor Application... 3 3.2 Soft Sensor (= Logical Sensor, Virtual Sensor)...
6. Control Structures
- 35 - Control Structures: 6. Control Structures A program is usually not limited to a linear sequence of instructions. During its process it may bifurcate, repeat code or take decisions. For that purpose,
VoiceXML-Based Dialogue Systems
VoiceXML-Based Dialogue Systems Pavel Cenek Laboratory of Speech and Dialogue Faculty of Informatics Masaryk University Brno Agenda Dialogue system (DS) VoiceXML Frame-based DS in general 2 Computer based
Model Transformation by Graph Transformation: A Comparative Study
Model Transformation by Graph Transformation: A Comparative Study Gabriele Taentzer 1, Karsten Ehrig 1, Esther Guerra 2, Juan de Lara 3, Laszlo Lengyel 4, Tihamer Levendovszky 4, Ulrike Prange 1, Daniel
Symbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
Fast nondeterministic recognition of context-free languages using two queues
Fast nondeterministic recognition of context-free languages using two queues Burton Rosenberg University of Miami Abstract We show how to accept a context-free language nondeterministically in O( n log
Regular Languages and Finite Automata
Regular Languages and Finite Automata 1 Introduction Hing Leung Department of Computer Science New Mexico State University Sep 16, 2010 In 1943, McCulloch and Pitts [4] published a pioneering work on a
Technical paper review. Program visualization and explanation for novice C programmers by Matthew Heinsen Egan and Chris McDonald.
Technical paper review Program visualization and explanation for novice C programmers by Matthew Heinsen Egan and Chris McDonald Garvit Pahal Indian Institute of Technology, Kanpur October 28, 2014 Garvit
Computer Network. Interconnected collection of autonomous computers that are able to exchange information
Introduction Computer Network. Interconnected collection of autonomous computers that are able to exchange information No master/slave relationship between the computers in the network Data Communications.
HireDesk API V1.0 Developer s Guide
HireDesk API V1.0 Developer s Guide Revision 1.4 Talent Technology Corporation Page 1 Audience This document is intended for anyone who wants to understand, and use the Hiredesk API. If you just want to
Using UML Part Two Behavioral Modeling Diagrams
UML Tutorials Using UML Part Two Behavioral Modeling Diagrams by Sparx Systems All material Sparx Systems 2007 Sparx Systems 2007 Page 1 Trademarks Object Management Group, OMG, Unified Modeling Language,
Adding GADTs to OCaml the direct approach
Adding GADTs to OCaml the direct approach Jacques Garrigue & Jacques Le Normand Nagoya University / LexiFi (Paris) https://sites.google.com/site/ocamlgadt/ Garrigue & Le Normand Adding GADTs to OCaml 1
Automated Domain-Specific C Verification with mbeddr
Automated Domain-Specific C Verification with mbeddr Zaur Molotnikov Fortiss Institute Guerickestraße 25 Munich, Germany [email protected] Markus Völter independent/itemis Oetztaler Straße 38 Stuttgart,
Finite Automata. Reading: Chapter 2
Finite Automata Reading: Chapter 2 1 Finite Automaton (FA) Informally, a state diagram that comprehensively captures all possible states and transitions that a machine can take while responding to a stream
Interspire Website Publisher Developer Documentation. Template Customization Guide
Interspire Website Publisher Developer Documentation Template Customization Guide Table of Contents Introduction... 1 Template Directory Structure... 2 The Style Guide File... 4 Blocks... 4 What are blocks?...
Object-Oriented Software Specification in Programming Language Design and Implementation
Object-Oriented Software Specification in Programming Language Design and Implementation Barrett R. Bryant and Viswanathan Vaidyanathan Department of Computer and Information Sciences University of Alabama
Ecma/TC39/2013/NN. 4 th Draft ECMA-XXX. 1 st Edition / July 2013. The JSON Data Interchange Format. Reference number ECMA-123:2009
Ecma/TC39/2013/NN 4 th Draft ECMA-XXX 1 st Edition / July 2013 The JSON Data Interchange Format Reference number ECMA-123:2009 Ecma International 2009 COPYRIGHT PROTECTED DOCUMENT Ecma International 2013
Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1
The Role of Programming in Informatics Curricula A. J. Cowling Department of Computer Science University of Sheffield Structure of Presentation Introduction The problem, and the key concepts. Dimensions
XML: extensible Markup Language. Anabel Fraga
XML: extensible Markup Language Anabel Fraga Table of Contents Historic Introduction XML vs. HTML XML Characteristics HTML Document XML Document XML General Rules Well Formed and Valid Documents Elements
1. Nondeterministically guess a solution (called a certificate) 2. Check whether the solution solves the problem (called verification)
Some N P problems Computer scientists have studied many N P problems, that is, problems that can be solved nondeterministically in polynomial time. Traditionally complexity question are studied as languages:
Send Email TLM. Table of contents
Table of contents 1 Overview... 3 1.1 Overview...3 1.1.1 Introduction...3 1.1.2 Definitions... 3 1.1.3 Concepts... 3 1.1.4 Features...4 1.1.5 Requirements... 4 2 Warranty... 5 2.1 Terms of Use... 5 3 Configuration...6
Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: [email protected] Alfonso Ortega: alfonso.ortega@uam.
Compilers Spring term Mick O Donnell: [email protected] Alfonso Ortega: [email protected] Lecture 1 to Compilers 1 Topic 1: What is a Compiler? 3 What is a Compiler? A compiler is a computer
GCE Computing. COMP3 Problem Solving, Programming, Operating Systems, Databases and Networking Report on the Examination.
GCE Computing COMP3 Problem Solving, Programming, Operating Systems, Databases and Networking Report on the Examination 2510 Summer 2014 Version: 1.0 Further copies of this Report are available from aqa.org.uk
An XML Based Data Exchange Model for Power System Studies
ARI The Bulletin of the Istanbul Technical University VOLUME 54, NUMBER 2 Communicated by Sondan Durukanoğlu Feyiz An XML Based Data Exchange Model for Power System Studies Hasan Dağ Department of Electrical
CS 106 Introduction to Computer Science I
CS 106 Introduction to Computer Science I 01 / 21 / 2014 Instructor: Michael Eckmann Today s Topics Introduction Homework assignment Review the syllabus Review the policies on academic dishonesty and improper
Visual Basic Programming. An Introduction
Visual Basic Programming An Introduction Why Visual Basic? Programming for the Windows User Interface is extremely complicated. Other Graphical User Interfaces (GUI) are no better. Visual Basic provides
From Faust to Web Audio: Compiling Faust to JavaScript using Emscripten
From Faust to Web Audio: Compiling Faust to JavaScript using Emscripten Myles Borins Center For Computer Research in Music and Acoustics Stanford University Stanford, California United States, [email protected]
FINITE STATE MACHINE: PRINCIPLE AND PRACTICE
CHAPTER 10 FINITE STATE MACHINE: PRINCIPLE AND PRACTICE A finite state machine (FSM) is a sequential circuit with random next-state logic. Unlike the regular sequential circuit discussed in Chapters 8
Lesson 4 Web Service Interface Definition (Part I)
Lesson 4 Web Service Interface Definition (Part I) Service Oriented Architectures Module 1 - Basic technologies Unit 3 WSDL Ernesto Damiani Università di Milano Interface Definition Languages (1) IDLs
The Django web development framework for the Python-aware
The Django web development framework for the Python-aware Bill Freeman PySIG NH September 23, 2010 Bill Freeman (PySIG NH) Introduction to Django September 23, 2010 1 / 18 Introduction Django is a web
