such internal data dependencies can be formally specied. A possible approach to specify

Size: px
Start display at page:

Download "such internal data dependencies can be formally specied. A possible approach to specify"

Transcription

1 Chapter 6 Specication and generation of valid data unit instantiations In this chapter, we discuss the problem of generating valid data unit instantiations. As valid data unit instantiations must adhere to internal data dependencies, i.e., data dependencies that occur between values of data unit parameters in one and the same data unit instantiation, the generation of such data unit instantiations can only be done when such internal data dependencies can be formally specied. A possible approach to specify the internal data dependencies is to use an extension to ASN.1 that exploits the theory of attribute grammars. Based on a data unit specication in this extended ASN.1 format, it is possible to generate instantiations that adhere to the internal data dependencies as well as to some possibly existing additional value restrictions for some of the data unit parameters. The generation of such data unit instantiations is based on linear programming techniques. The work presented in this chapter has been published in [40]. 6.1 General overview In our discussions regarding data dependencies and the generation of data tests, valid data unit instantiations play an important role. Up to now, we used functions to have the disposal of (sub)sets of data unit instantiations, i.e., valid inst, du inst. To make the results of the previous chapters practically applicable, it must be possible to specify and compute valid data unit instantiations. The requirements regarding the specication and generation of (sub)sets of valid data unit instantiations that follow from the previous chapters are the following: 1. It must be possible to specify internal data dependencies that occur in real life protocols. A typical example of internal data dependencies is provided for by the D ABORT REQ data unit of the DTAM protocol. The ASN.1 specication of this data unit is recalled below in example It must be possible to compute instantiations that are in the sets that are images of the function du inst and that can be used in test sequences. The data unit instantiations that must be computed must adhere to internal data dependency requirements. Furthermore, extra requirements may have been specied, e.g., (a) As explained in section 3.2, a label in the nite automaton may represent only a proper subset of the set of valid instantiations of a data unit.

2 156 Specication and generation of valid data unit instantiations (b) As described in section 5.4, labels in words of the nite automaton that represent test sequences must be replaced byvalid data unit instantiations. To some of the data unit instantiations that can replace a label, additional restrictions apply, e.g., restrictions that follow from the template tree. These additional restrictions limit the values that may be assigned to some of the data unit parameters in these data unit instantiations. Example 6.1 The ASN.1 description of the D ABORT REQ data unit which is also presented in section 2.2 is presented below. This specication provides for a typical example of a data unit internal data dependency, which is included as informal comment in the ASN.1 description. [5] D ABORT REQ ::= [APPLICATION 13] IMPLICIT SEQUENCE f abortsource [0] INTEGER f requestingdtampm (0), DTAMserviceProvider (1) g, abortreason [1] INTEGER f local,system,problem (0), invalid,parameter (1), unrecognized,activity (2), temporary,problem (3), protocol,error (4), permanent,error (5), transfer,completed (6) g, reected,parameter [2] IMPLICIT BIT STRING OPTIONAL, g,, 8 bits maximum, only present if abortreason is invalid-parameter userinformation [3] OCTET STRING OPTIONAL The need to specify valid data unit instantiations that also adhere to some possible additional value restrictions for some of their data unit parameters, has also been recognised by others. Two approaches have been described in the literature. Both approaches are based on extensions to ASN.1 that exploit the theory of attribute grammars. Furthermore, both approaches are developed to allow test engineers to specify all restrictions for data unit instantiations that are used in tests and to allow the use of tools, e.g., parsers, to automatically check the correctness of exchanged data unit instantiations when evaluating test results. The rst approach, presented in [12], describes a general approach to extend ASN.1 such that it becomes powerful enough to meet the needs of test engineers. The resulting extended version of ASN.1 is called Attributed ASN.1. Furthermore, [12] mentions the successful application of compiler generators for attribute grammars to construct parsers that can mark (given) data unit instantiations as either being valid or invalid. The second approach, presented in [56], is similar but presents a less general solution. The extended version of ASN.1 presented in this paper is called Constraint Specication Notation One and is developed with the application of Yacc in mind. As

3 6.2 Attributed ASN the Attributed ASN.1 approach is more general and seems to be more complete, we adopt the Attributed ASN.1 technique to specify valid data unit instantiations. It is interesting to note that both approaches to extend ASN.1, are inspired by theneed to specify data unit instantiations and the need to check whether a given data unit instantiation is valid or not. So, our need to generate valid instantiations from a specication largely diers from the need as identied in [12] and [56]. Nevertheless, the ideas presented in these papers indicate a direct approach to generate valid instantiations. The outline of this approach is depicted in gure 6.1. ASN.1 specification restrictions data unit instantiation generator valid and invalid data unit instantiations parser valid instantiations used as filter invalid instantiations sink Figure 6.1: An approach to generate valid data unit instantiations The idea is to have a data unit instantiation generator, which generates all instantiations of a data unit from its ASN.1 description. This generator discards all requirements regarding values that may be assigned to data unit parameters. Consequently, it generates both valid and invalid data unit instantiations. The output stream of this generator is fed into a parser which is used as a lter. The parser will only let valid data unit instantiations pass. However, this approach is not very ecient in practice as the simple ASN.1 generator may start with the production of a lot of non-conforming values. So, a more direct approach to generate conforming ASN.1 constraints from Attributed ASN.1 is needed. The structure of the rest of this chapter is as follows. Section 6.2 presents an overview of Attributed ASN.1. Section 6.3 describes how internal data dependency specications in Attributed ASN.1 can be transformed into linear problem specications from which valid data unit instantiations can be computed by applying linear programming techniques. 6.2 Attributed ASN.1 ASN.1 is a description language that is used in protocol standards to dene the data units used by these communication protocols. Furthermore, ASN.1 and its associated

4 158 Specication and generation of valid data unit instantiations value notation is used in conformance testing to specify the data unit instantiations that are used in test cases of a TTCN test suite. Such specications of data unit instantiations are called (ASN.1) constraints. Using ASN.1, it is possible to specify the syntax of data units. Along with such a specication one implicitly denes a set of ASN.1 values or data unit instantiations. According to the data unit specication every ASN.1 value is a proper instantiation of the corresponding data unit. However, protocol specications may limit the set of proper instantiations of data units to a (real) subset of the ASN.1 value set that is specied by the ASN.1 specication of these data units. The reason for this is that usually there exist (internal) dependencies between values that may be assigned to certain elds of a data unit. An example of such internal dependencies is given in example 6.1 in the previous section. In order to enable the automatic generation of ASN.1 values that conform to a protocol standard, it is necessary to formalise the informally specied restrictions. A possible way to do this is by using an extension to ASN.1 that exploits the theory of attribute grammars as proposed in [12]. This extended version of ASN.1 is called Attributed ASN.1. An Attributed ASN.1 specication of a data unit uses ASN.1 for the description of the syntactic structure of that data unit. Additionally, inattributed ASN.1 specications it is possible to associate a set of attributes with any eld (or data unit parameter) of the ASN.1 data unit description. Viewing the ASN.1 data unit description as a structured tree, this means that a set of attributes can be associated with each node in the tree. There are two kinds of attributes, i.e., predened attributes and user dened attributes. The predened attributes are always implicitly dened for any Attributed ASN.1 specication. There are only predened attributes of type INTEGER and of type BOOLEAN. Some examples of predened attributes are: present: which is a boolean valued attribute used to denote the presence or absence of OPTIONAL elds (data unit parameters); length: whichisaninteger valued attribute associated with a eld (data unit parameter) of an ASN.1 STRING type used to denote the length of the string value; value: which holds the value of a eld (data unit parameter) of an ASN.1 Simple Type. The user dened attributes have to be declared and dened explicitly, the only restriction being that their names shall be dierent from the predened attribute names. The declaration of user dened attributes consists of the declaration of the name and the type of the attribute. The denition of the user dened attributes is done by specifying rules. These rules describe how a specic user dened attribute's value is computed using values of other user dened and predened attributes. The rules can thus be seen as a computation scheme, dening attributes in terms of attributes of surrounding nodes in the structured type tree. The general form of a rule is \attribute-name := expression". In this, expression can be any algebraic formula using the normal algebraic unary and

5 6.2 Attributed ASN binary operators like +,, etc. Furthermore, expression can be of the form \IF guard THEN value1 ELSE value2 FI". In this any algebraic formula is allowed for guard, value1 and value2. The relations between attributes are specied by predicates that are called conditions. Any predicate built from attributes and constants is allowed as a coniditon. The values dened by an Attributed ASN.1 specication are those values dened by the underlying ASN.1 specication for which all rules and conditions are satised. Example 6.2 presents the Attributed ASN.1 description of the D ABORTS REQ data unit of the DTAM protocol, including a formalisation of the internal data dependencies. It can be noted that this example only uses predened attributes. Examples of Attributed ASN.1 specications that also use user dened attributes and the accompanying rules are presented in section 6.3. Example 6.2 Using Attributed ASN.1, the DTAM D ABORT REQ can be specied as follows: [5] D ABORT REQ ::= [APPLICATION 13] IMPLICIT SEQUENCE f abortsource [0] INTEGER f requestingdtampm (0), DTAMserviceProvider (1) g, abortreason [1] INTEGER f local,system,problem (0), invalid,parameter (1), unrecognized,activity (2), temporary,problem (3), protocol,error (4), permanent,error (5), transfer,completed (6) g, reected,parameter [2] IMPLICIT BIT STRING OPTIONAL, userinformation [3] OCTET STRING OPTIONAL g CONDITIONS: IF abortreason.value 6= invalid,parameter THEN reected,parameter.present =FALSE ELSE TRUE FI; reected,parameter.length 8; The structured tree of this Attributed ASN.1 type is presented in gure 6.2, where the attributes of the nodes are presented between square brackets. As follows from the example, we refer to attributes by using the string that consists of a path identication of the node associated with the relevant attribute, followed by a dot and the attribute's name. Here, a path identication consists of the dot separated concatenation of the names associated with the nodes of the path in the structured tree of the type.

6 160 Specication and generation of valid data unit instantiations D_ABORT_REQ abortsource [value] abortreason [value] reflected-parameter userinformation [value, present, length] [value, present, length] Figure 6.2: Structured tree of D ABORT REQ 6.3 Generating valid instantiations from Attributed ASN.1 In this section we present our approach to generate valid data unit instantiations from Attributed ASN.1 specications. An important part of this presentation consists of a worked out example. The Attributed ASN.1 specication that serves as the basis of the example is taken from [50]. The example specication is an articial specication, i.e., does not stem from a real life communication protocol specication. In [50], this example was presented to show that Attributed ASN.1 can be used to specify complex relations or internal data dependencies. We use this example as it incorporates all complicated aspects that one may encounter when generating valid data unit instantiations. It can be noted that the Attributed ASN.1 specications for data units of real life communication protocols are usually much simpler. The Attributed ASN.1 specication example comprises the specication of two data unit types, i.e., T1 and T2. Type T2 can be seen as a specication of a sequence of items of type T1, that contains at least one item. The specication of T1 and T2 is presented in gure 6.3. The basic ASN.1 structure for T1 is one boolean and two integers. T1 has two user dened attributes (also called properties). The rst being T1.max which is dened by means of rules and thus is a synthesised attribute. This attribute takes the value of the maximum of the two integers i1 and i2. The attribute T1.extbool is not dened by rules in the specication of T1 and thus is an inherited attribute. Here, it gets its value in type T2. Furthermore, it can be noted that the attribute T1.max is not used in the type T1 itself. However, it is used in the type T2 (referred to by f1.max). The basic ASN.1 structure for T2 is one T1 and one optional T2. T2 has one user dened attribute, i.e., T2.max which, according to the rules of T2, takes the value of f1.max and hence the maximum value of the two integers of f1. This example also shows the use of two kinds of predened attributes. The rst one holds the value of an ASN.1 Simple Type eld, e.g., i1.value, The second one, indicates the absence or presence of an optional eld, e.g., f2.present. To explain our approach to generate valid data unit instantiations, we describe the generation of a valid instantiation M of type T2. From the type denition T2 of M it follows that we have to construct an instantiation of T1, denoted by M.f1 and possibly an other

7 6.3 Generating valid instantiations from Attributed ASN T1 ::= PROPERTIES max : INT, extbool : BOOL SEQUENCEf b BOOLEAN, i1 INTEGER, i2 INTEGERg RULES: max := IF i1.value > i2.value THEN i1.value ELSE i2.value FI; CONDITIONS: IF b.value AND extbool THEN i1.value > i2.value ELSE TRUE FI; T2 ::= PROPERTIES max : INT SEQUENCEf f1 T1, f2 T2 OPTIONALg RULES: max := f1.max; f1.extbool := IF f2.present THEN f1.max > (2 * f2.max) ELSE FALSE FI; CONDITIONS: IF f2.present THEN f1.max > f2.max ELSE TRUE FI; IF f2.present THEN TRUE ELSE T2.max > 0 FI; Figure 6.3: Attributed ASN.1 specication example T2, denoted by M.f2. As will be clear, the problem of the recursive construction of instantiations of type T2 in the construction of M has to be solved rst. To prevent the example from becoming to long, we chose a recursive depth of 1 for M. So, M incorporates an instantiation of type T2, which itself does not contain an instantiation of type T2. Using attributes, this can be expressed more formally by the condition: M.f2.present = TRUE AND M.f2.f2.present = FALSE. Having decided upon the recursive construction problem, we can start the construction of M. It can be noted that the decision regarding the recursive depth can be solved in a tool by using successive depth exploration or can be made interactively with the user. Our method to generate valid data unit instantiations from Attributed ASN.1 specications consists of four steps. These steps, together with a worked out example for the generation of M, are described below. Step 1: flist all relevant restrictionsg To construct a valid data unit instantiation of a specic type T, that is specied bymeans of Attributed ASN.1, we recursively list all rules and conditions of T and its subtypes. This list thus contains all restrictions that shall be satised by the valid instantiations of type T. It can be noted that additional value restrictions for some data unit parameters, e.g., following from a template tree that was used in the computation of test sequence templates, can simply be added to this list. Listing all relevant rules and conditions for M results in the list presented in gure 6.4.

8 162 Specication and generation of valid data unit instantiations This list contains all conditions and rules that follow from the Attributed ASN.1 denitions of type T2. However, it should be noted that we have replaced the attribute names as they occur in the type denition by the names of the attributes as they are for the specic instantiation M. This makes the attributes uniquely identiable which is necessary to derive the proper problem specication. Furthermore, the restrictions that were added to stop the recursive construction of instantiations of type T2 have been added.it should be noted that the rules which originally were assignments, or rather denitions of attributes, are transformed into restricting predicates. ftop level T2: Mg (1) M.max = M.f1.max; (2) M.f1.extbool = IF M.f2.present THEN M.f1.max > (2 * M.f2.max) ELSE FALSE FI; (3) IF M.f2.present THEN M.f1.max > M.f2.max ELSE TRUE FI; (4) IF M.f2.present THENTRUE ELSE M.max > 0 FI; ffirst level T1: M.f1g (5) M.f1.max = IF M.f1.i1.value > M.f1.i2.value THEN M.f1.i1.value ELSE M.f1.i2.value FI; (6) IF M.f1.b.value AND M.f1.extbool THEN M.f1.i1.value > M.f1.i2.value ELSE TRUE FI; ffirst level T2: M.f2g (7) M.f2.max = M.f2.f1.max; (8) M.f2.f1.extbool = IF M.f2.f2.present THEN M.f2.f1.max > (2 * M.f2.f2.max) ELSE FALSE FI; (9) IF M.f2.f2.present THEN M.f2.f1.max > M.f2.f2.max ELSE TRUE FI; (10) IF M.f2.f2.present THENTRUE ELSE M.f2.max > 0FI; fsecond level T1: M.f2.f1g (11) M.f2.f1.max = IF M.f2.f1.i1.value > M.f2.f1.i2.value THEN M.f2.f1.i1.value ELSE M.f2.f1.i2.value FI; (12) IF M.f2.f1.b.value AND M.f2.f1.extbool THEN M.f2.f1.i1.value > M.f2.f1.i2.value ELSE TRUE FI; fadditional restrictionsg (13) M.f2.present =TRUE; (14) M.f2.f2.present =FALSE; Figure 6.4: List of restrictions for data unit instantiation M of type T2 Step 2: ftransform the list of restrictions into linear problem specicationsg Attributed ASN.1 does not put any restrictions on the form that the expressions in the rules and condition may take. One may for example use undecidable predicates as conditions. For generation purposes, we evidently have to limit the expressive power of Attributed ASN.1. Given the fact that we want to use linear programming techniques we (only) require that rules and conditions shall only use linear expressions. From this requirement and the fact that all predened attributes are (representable by) either integers or booleans, it easily follows that the value of any attribute can be represented by

9 6.3 Generating valid instantiations from Attributed ASN an integer, a real or a boolean. So, the list of rules and conditions obtained in step 1 can be transformed into a set of linear problem specication. It should be noted that the requirement to allow only rules and conditions that are linear, seems to be no problem when using Attributed ASN.1 to specify data types for real life communication protocols. original predicate PANDQ P Q osprings PORQ P Q IF guard THEN e1 guard :guard ELSE e2 FI e1 e2 x=ifguard guard :guard THEN e1 ELSE e2 FI x=e x=e2 x=p x=true x=false P :P y 6= z y < z y > z Table 6.1: Predicates and their osprings The transformation is done by recursively eliminating all IF/THEN/ELSE expressions and boolean valued operands The boolean values TRUE and FALSE are simply translated into 1 and 0 respectively. The elimination of boolean valued operands and IF/THEN/ELSE expressions is more complex. The reason for this is that this elimination produces several osprings which should all be taken into account in order to compute a valid data unit instantiation. The osprings of the relevant predicates are presented in table 6.1, in which P and Q represent predicates, x represents a boolean valued attribute and y and z represent integer or real valued attributes. So, the transformation, based on table 6.1, of the following list of predicates, IF X = 0 THEN Y > XELSE Y < XFI; Z>XAND Z<Y; will produce the following two problem specications: X =0; Y > X; Z>X; Z<Y; X 6= 0; Y < X; Z>X; Z<Y; The list presented in gure 6.5, that is constructed in step 1 for M, is transformed into a set of linear problem specications for M by eliminating all boolean valued operators and

10 164 Specication and generation of valid data unit instantiations attributes. One specic linear problem from this set is presented in gure 6.5. Every equation in this gure is preceded by a number indicating its parent equation from gure 6.4. Furthermore, the symbol is used to indicated cases that one of several possible osprings was chosen for our example, i.e., we only work out one specic problem specication from a set of possible problem specications. (1) M.max = M.f1.max; (2*) M.f2.present =1; (2*) M.f1.extbool = 1; (2) M.f1.max > (2 * M.f2.max); (3*) M.f2.present =1; (3) M.f1.max > M.f2.max; (4*) M.f2.present =1; (5*) M.f1.i1.value > M.f1.i2.value; (5) M.f1.max = M.f1.i1.value; (6*) M.f1.b.value = 1; (6*) M.f1.extbool = 1; (6) M.f1.i1.value > M.f1.i2.value; (7) M.f2.max = M.f2.f1.max; (8*) M.f2.f2.present =0; (8) M.f2.f1.extbool = 0; (9*) M.f2.f2.present =0; (10*) M.f2.f2.present =0; (10) M.f2.max > 0; (11*) M.f2.f1.i1.value M.f2.f1.i2.value; (11) M.f2.f1.max = M.f2.f1.i2.value; (12*) M.f2.f1.extbool = 0; (13) M.f2.present =1; (14) M.f2.f2.present =0; Figure 6.5: Linear problem specication for data unit instantiation M Step 3: fsolve the linear problem using linear programming techniques [48]g The result of step 2 consists of a set of linear problem specications which should all be considered to generate a valid data unit instantiation. As all attributes in these linear problem specications are either integers or reals, we can use mixed integer linear programming techniques to compute solutions. These techniques are designed to nd optimum solutions when given a list of linear equations and a function to be optimised. If we are just interested to nd a solution, we can use a constant function as the optimum function. However, it is also possible to specify that for example a valid data unit instantiation with minimum length should be generated. Some of the linear problem specications resulting from step 2 may be infeasible as the transformation may produce problem specications with contradicting equations. In practice, this does not pose any problems as linear programming techniques are capable of detecting infeasible problems. However, it is interesting to note that the Attributed ASN.1 specication denes an empty value type set, i.e., a data unit without any valid instantiations, if and only if all the linear problem specications are infeasible. A solution to the problem presented in gure 6.5 for M denes a conforming instantiation of type T2. Such a solution can be computed by using linear programming techniques, if an optimisation function is specied. If we are for example interested in an instantiation of T2 with a maximum value for M.f1.i1 we can use M.f1.i1.value as the target function. In this case we evidently have to specify an upper limit for the domain of M.f1.i1. Using a

11 6.3 Generating valid instantiations from Attributed ASN constant target function, which will result in the computation of an instantiation of type T2, a linear programming tool may compute the solution of gure 6.6. M.f1.b.value = 1 M.f1.extbool = 1 M.f1.i1.value = 3 M.f1.i2.value = 0 M.f1.max = 3 M.f2.f1.extbool = 0 M.f2.f1.i1.value = 1 M.f2.f1.i2.value = 1 M.f2.f1.max = 1 M.f2.f2.present = 0 M.f2.max = 1 M.f2.present = 1 M.max = 3 Figure 6.6: Linear problem solution of the example Step 4: fconstruct the valid instantiation from the computed solutiong Constructing a valid instantiation means that proper values must be assigned to data unit parameters. Such an instantiation can be described as an ASN.1 value or constraint. Consequently, constructing a valid instantiation from the computed solution means that the values must be assigned to ASN.1 elds of type Simple Type, unless it is a eld in an absent optional subtype. All necessary information to do so is provided by the solution(s) of step 3. It is possible that some predened value attributes are not restricted in a computed solution. For the elds associated with these attributes, we can simply use a random value taken from the relevant domain to construct a constraint. However, it is also possible to use the ASN.1 wild card values, i.e., \" and \?", to describe a set of conforming valid data unit instantiations. This option is important when specifying valid data unit instantiations for test sequences. For valid data unit instantiations that are sent by the tester, random values can be selected. In case the valid data unit instantiation is received by the tester the wild card symbols can be used. Instantiation M can be easily constructed from the computed solution presented in gure 6.6. It should be noted that the solution of gure 6.6 does not restrict M.f2.f1.b.value which thus can be randomly set to, e.g., 0. Doing so results in M =(T1; fftrue; 3; 0g; fffalse; 1; 1ggg) 1 : We have implemented our data unit instantiation generation method in a prototype tool to assess the practical feasibility. An overview of this tool is presented in chapter 7. We found that the performance and capabilities of the tool mainly depend on the following two aspects: the performance and capabilities of the linear programming software. 1 T2 is used here to denote the sort of M

12 166 Specication and generation of valid data unit instantiations the number of linear programming specications that have to be considered to compute a valid data unit instantiation for a specic Attributed ASN.1 type. Regarding these aspects we have the following experiences. The linear programming tool we used, implements a branch and bound technique to solve mixedinteger linear programming problems. It is said to solve integer linear programming problems with about 100 variables in reasonable time, provided that the problem is not too complex. However, the data unit instantiation generation tests that we performed, did not even come close to this limit. The order of the computation time we experienced is tenths of a second rather than seconds or minutes. The number of linear programming problems that have to be considered to compute a valid data unit instantiation grows exponentially with the number of boolean operators and attributes. However, many of these transformed problem specications are infeasible. Most of the time the infeasibility is easily (and quickly) detected, as the problems contain equations of the form x = 0; x = 1 which result from the boolean elimination in the second step of our approach. Our overall experience is that the performance of the data unit instantiation generation tool is acceptable. 6.4 Summary In this chapter we have described a method that can be used to automatically generate data unit instantiations that conform to internal data dependencies plus additional restrictions for values assigned to some data unit parameters. Furthermore, we have given indications on how these data unit instantiations can be specied as ASN.1 values or constraints. The method presented here to generate valid data unit instantiations is applicable to Attributed ASN.1 specications of data units. Attributed ASN.1 is an extended version of ASN.1, that exploits the theory of attribute grammars to formalise internal data dependencies. The method to generate valid data unit instantiations puts restrictions on the form of the Attributed ASN.1 specications. In order to generate valid data unit instantiations, it is required that the expressions that are used to specify the internal dependencies, are linear. We think that for practical protocols this restriction can always be satised. By building a prototype tool that implements our approach, we have shown its practical feasibility.

communication protocol that is taken as an example is the Document Transfer And Manipulation

communication protocol that is taken as an example is the Document Transfer And Manipulation Chapter 2 Protocol standards and specication techniques for test generation In this chapter we giveanoverview of how communication protocols are specied in protocol standards. Furthermore, we discuss state

More information

An Interactive Desk Calculator. Project P2 of. Common Lisp: An Interactive Approach. Stuart C. Shapiro. Department of Computer Science

An Interactive Desk Calculator. Project P2 of. Common Lisp: An Interactive Approach. Stuart C. Shapiro. Department of Computer Science An Interactive Desk Calculator Project P2 of Common Lisp: An Interactive Approach Stuart C. Shapiro Department of Computer Science State University of New York at Bualo January 25, 1996 The goal of this

More information

Algorithmic "imperative" language

Algorithmic imperative language Algorithmic "imperative" language Undergraduate years Epita November 2014 The aim of this document is to introduce breiy the "imperative algorithmic" language used in the courses and tutorials during the

More information

Introduction to Automata Theory. BİL405 - Automata Theory and Formal Languages 1

Introduction to Automata Theory. BİL405 - Automata Theory and Formal Languages 1 Introduction to Automata Theory BİL405 - Automata Theory and Formal Languages 1 Automata, Computability and Complexity Automata, Computability and Complexity are linked by the question: What are the fundamental

More information

Compiler Techniques MN1 The nano-c Language

Compiler Techniques MN1 The nano-c Language Compiler Techniques MN1 The nano-c Language February 8, 2005 1 Overview nano-c is a small subset of C, corresponding to a typical imperative, procedural language. The following sections describe in more

More information

Programming Languages Third Edition. Chapter 7 Basic Semantics

Programming Languages Third Edition. Chapter 7 Basic Semantics Programming Languages Third Edition Chapter 7 Basic Semantics Objectives Understand attributes, binding, and semantic functions Understand declarations, blocks, and scope Learn how to construct a symbol

More information

A Boolean Expression. Reachability Analysis or Bisimulation. Equation Solver. Boolean. equations.

A Boolean Expression. Reachability Analysis or Bisimulation. Equation Solver. Boolean. equations. A Framework for Embedded Real-time System Design? Jin-Young Choi 1, Hee-Hwan Kwak 2, and Insup Lee 2 1 Department of Computer Science and Engineering, Korea Univerity choi@formal.korea.ac.kr 2 Department

More information

A Short Summary of Javali

A Short Summary of Javali A Short Summary of Javali October 15, 2015 1 Introduction Javali is a simple language based on ideas found in languages like C++ or Java. Its purpose is to serve as the source language for a simple compiler

More information

Introduction to Functional Programming: Lecture 7 2 Functions as innite data structures Ordinary ML data structures are always nite. We can, however,

Introduction to Functional Programming: Lecture 7 2 Functions as innite data structures Ordinary ML data structures are always nite. We can, however, Introduction to Functional Programming: Lecture 7 1 Introduction to Functional Programming John Harrison University of Cambridge Lecture 7 Innite data structures Topics covered: Functions as innite data

More information

GBIL: Generic Binary Instrumentation Language. Language Reference Manual. By: Andrew Calvano. COMS W4115 Fall 2015 CVN

GBIL: Generic Binary Instrumentation Language. Language Reference Manual. By: Andrew Calvano. COMS W4115 Fall 2015 CVN GBIL: Generic Binary Instrumentation Language Language Reference Manual By: Andrew Calvano COMS W4115 Fall 2015 CVN Table of Contents 1) Introduction 2) Lexical Conventions 1. Tokens 2. Whitespace 3. Comments

More information

CMa simple C Abstract Machine

CMa simple C Abstract Machine CMa simple C Abstract Machine CMa architecture An abstract machine has set of instructions which can be executed in an abstract hardware. The abstract hardware may be seen as a collection of certain data

More information

CS109A ML Notes for the Week of 1/16/96. Using ML. ML can be used as an interactive language. We. shall use a version running under UNIX, called

CS109A ML Notes for the Week of 1/16/96. Using ML. ML can be used as an interactive language. We. shall use a version running under UNIX, called CS109A ML Notes for the Week of 1/16/96 Using ML ML can be used as an interactive language. We shall use a version running under UNIX, called SML/NJ or \Standard ML of New Jersey." You can get SML/NJ by

More information

CMSC 330: Organization of Programming Languages. Formal Semantics of a Prog. Lang. Specifying Syntax, Semantics

CMSC 330: Organization of Programming Languages. Formal Semantics of a Prog. Lang. Specifying Syntax, Semantics Recall Architecture of Compilers, Interpreters CMSC 330: Organization of Programming Languages Source Scanner Parser Static Analyzer Operational Semantics Intermediate Representation Front End Back End

More information

The S-Expression Design Language (SEDL) James C. Corbett. September 1, Introduction. 2 Origins of SEDL 2. 3 The Language SEDL 2.

The S-Expression Design Language (SEDL) James C. Corbett. September 1, Introduction. 2 Origins of SEDL 2. 3 The Language SEDL 2. The S-Expression Design Language (SEDL) James C. Corbett September 1, 1993 Contents 1 Introduction 1 2 Origins of SEDL 2 3 The Language SEDL 2 3.1 Scopes : : : : : : : : : : : : : : : : : : : : : : : :

More information

Chapter 3 (part 3) Describing Syntax and Semantics

Chapter 3 (part 3) Describing Syntax and Semantics Chapter 3 (part 3) Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings

More information

Expressions that talk about themselves. Maarten Fokkinga, University of Twente, dept. INF, Version of May 6, 1994

Expressions that talk about themselves. Maarten Fokkinga, University of Twente, dept. INF, Version of May 6, 1994 Expressions that talk about themselves Maarten Fokkinga, University of Twente, dept. INF, fokkinga@cs.utwente.nl Version of May 6, 1994 Introduction Self-reference occurs frequently in theoretical investigations

More information

Theoretical Part. Chapter one:- - What are the Phases of compiler? Answer:

Theoretical Part. Chapter one:- - What are the Phases of compiler? Answer: Theoretical Part Chapter one:- - What are the Phases of compiler? Six phases Scanner Parser Semantic Analyzer Source code optimizer Code generator Target Code Optimizer Three auxiliary components Literal

More information

Programming Languages Third Edition. Chapter 9 Control I Expressions and Statements

Programming Languages Third Edition. Chapter 9 Control I Expressions and Statements Programming Languages Third Edition Chapter 9 Control I Expressions and Statements Objectives Understand expressions Understand conditional statements and guards Understand loops and variation on WHILE

More information

Annex A (Informative) Collected syntax The nonterminal symbols pointer-type, program, signed-number, simple-type, special-symbol, and structured-type

Annex A (Informative) Collected syntax The nonterminal symbols pointer-type, program, signed-number, simple-type, special-symbol, and structured-type Pascal ISO 7185:1990 This online copy of the unextended Pascal standard is provided only as an aid to standardization. In the case of dierences between this online version and the printed version, the

More information

Operational Semantics. One-Slide Summary. Lecture Outline

Operational Semantics. One-Slide Summary. Lecture Outline Operational Semantics #1 One-Slide Summary Operational semantics are a precise way of specifying how to evaluate a program. A formal semantics tells you what each expression means. Meaning depends on context:

More information

MATVEC: MATRIX-VECTOR COMPUTATION LANGUAGE REFERENCE MANUAL. John C. Murphy jcm2105 Programming Languages and Translators Professor Stephen Edwards

MATVEC: MATRIX-VECTOR COMPUTATION LANGUAGE REFERENCE MANUAL. John C. Murphy jcm2105 Programming Languages and Translators Professor Stephen Edwards MATVEC: MATRIX-VECTOR COMPUTATION LANGUAGE REFERENCE MANUAL John C. Murphy jcm2105 Programming Languages and Translators Professor Stephen Edwards Language Reference Manual Introduction The purpose of

More information

Operational Semantics of Cool

Operational Semantics of Cool Operational Semantics of Cool Key Concepts semantics: the meaning of a program, what does program do? how the code is executed? operational semantics: high level code generation steps of calculating values

More information

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Notation. The rules. Evaluation Rules So Far.

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Notation. The rules. Evaluation Rules So Far. Lecture Outline Operational Semantics of Cool COOL operational semantics Motivation Adapted from Lectures by Profs. Alex Aiken and George Necula (UCB) Notation The rules CS781(Prasad) L24CG 1 CS781(Prasad)

More information

perform. If more storage is required, more can be added without having to modify the processor (provided that the extra memory is still addressable).

perform. If more storage is required, more can be added without having to modify the processor (provided that the extra memory is still addressable). How to Make Zuse's Z3 a Universal Computer Raul Rojas January 14, 1998 Abstract The computing machine Z3, built by Konrad Zuse between 1938 and 1941, could only execute xed sequences of oating-point arithmetical

More information

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Lecture 13. Notation. The rules. Evaluation Rules So Far

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Lecture 13. Notation. The rules. Evaluation Rules So Far Lecture Outline Operational Semantics of Cool Lecture 13 COOL operational semantics Motivation Notation The rules Prof. Aiken CS 143 Lecture 13 1 Prof. Aiken CS 143 Lecture 13 2 Motivation We must specify

More information

Semantic analysis. Syntax tree is decorated with typing- and other context dependent

Semantic analysis. Syntax tree is decorated with typing- and other context dependent Semantic analysis Semantic analysis Semantic analysis checks for the correctness of contextual dependences: { nds correspondence between declarations and usage of identiers, { performs type checking/inference,

More information

Chapter 1 Summary. Chapter 2 Summary. end of a string, in which case the string can span multiple lines.

Chapter 1 Summary. Chapter 2 Summary. end of a string, in which case the string can span multiple lines. Chapter 1 Summary Comments are indicated by a hash sign # (also known as the pound or number sign). Text to the right of the hash sign is ignored. (But, hash loses its special meaning if it is part of

More information

Outline. 1 About the course

Outline. 1 About the course Outline EDAF50 C++ Programming 1. Introduction 1 About the course Sven Gestegård Robertz Computer Science, LTH 2018 2 Presentation of C++ History Introduction Data types and variables 1. Introduction 2/1

More information

1 INTRODUCTION 2 Represent a multiset as an association list, where the rst argument of a pair is an item and the second argument is the multiplicity

1 INTRODUCTION 2 Represent a multiset as an association list, where the rst argument of a pair is an item and the second argument is the multiplicity Programming with Multisets J.W. Lloyd Department of Computer Science University of Bristol Bristol BS8 1UB, UK Abstract This paper proposes a novel way of introducing multisets into declarative programming

More information

RSL Reference Manual

RSL Reference Manual RSL Reference Manual Part No.: Date: April 6, 1990 Original Authors: Klaus Havelund, Anne Haxthausen Copyright c 1990 Computer Resources International A/S This document is issued on a restricted basis

More information

\n is used in a string to indicate the newline character. An expression produces data. The simplest expression

\n is used in a string to indicate the newline character. An expression produces data. The simplest expression Chapter 1 Summary Comments are indicated by a hash sign # (also known as the pound or number sign). Text to the right of the hash sign is ignored. (But, hash loses its special meaning if it is part of

More information

Defining Languages GMU

Defining Languages GMU Defining Languages CS463 @ GMU How do we discuss languages? We might focus on these qualities: readability: how well does a language explicitly and clearly describe its purpose? writability: how expressive

More information

The SPL Programming Language Reference Manual

The SPL Programming Language Reference Manual The SPL Programming Language Reference Manual Leonidas Fegaras University of Texas at Arlington Arlington, TX 76019 fegaras@cse.uta.edu February 27, 2018 1 Introduction The SPL language is a Small Programming

More information

Master Thesis. Automated ANTLR Tree walker Generation

Master Thesis. Automated ANTLR Tree walker Generation Master Thesis Automated ANTLR Tree walker Generation Author: A.J. Admiraal Email: alex@admiraal.dds.nl Institute: University of Twente Chair: Formal Methods and Tools Date: January 25, 2010 Automated ANTLR

More information

Program Design in PVS. Eindhoven University of Technology. Abstract. Hoare triples (precondition, program, postcondition) have

Program Design in PVS. Eindhoven University of Technology. Abstract. Hoare triples (precondition, program, postcondition) have Program Design in PVS Jozef Hooman Dept. of Computing Science Eindhoven University of Technology P.O. Box 513, 5600 MB Eindhoven, The Netherlands e-mail: wsinjh@win.tue.nl Abstract. Hoare triples (precondition,

More information

Programming Languages Third Edition

Programming Languages Third Edition Programming Languages Third Edition Chapter 12 Formal Semantics Objectives Become familiar with a sample small language for the purpose of semantic specification Understand operational semantics Understand

More information

A programming language requires two major definitions A simple one pass compiler

A programming language requires two major definitions A simple one pass compiler A programming language requires two major definitions A simple one pass compiler [Syntax: what the language looks like A context-free grammar written in BNF (Backus-Naur Form) usually suffices. [Semantics:

More information

Decaf Language Reference Manual

Decaf Language Reference Manual Decaf Language Reference Manual C. R. Ramakrishnan Department of Computer Science SUNY at Stony Brook Stony Brook, NY 11794-4400 cram@cs.stonybrook.edu February 12, 2012 Decaf is a small object oriented

More information

CS422 - Programming Language Design

CS422 - Programming Language Design 1 CS422 - Programming Language Design From SOS to Rewriting Logic Definitions Grigore Roşu Department of Computer Science University of Illinois at Urbana-Champaign In this chapter we show how SOS language

More information

CIS4/681 { Articial Intelligence 2 > (insert-sort '( )) ( ) 2 More Complicated Recursion So far everything we have dened requires

CIS4/681 { Articial Intelligence 2 > (insert-sort '( )) ( ) 2 More Complicated Recursion So far everything we have dened requires 1 A couple of Functions 1 Let's take another example of a simple lisp function { one that does insertion sort. Let us assume that this sort function takes as input a list of numbers and sorts them in ascending

More information

Structure of Abstract Syntax trees for Colored Nets in PNML

Structure of Abstract Syntax trees for Colored Nets in PNML Structure of Abstract Syntax trees for Colored Nets in PNML F. Kordon & L. Petrucci Fabrice.Kordon@lip6.fr Laure.Petrucci@lipn.univ-paris13.fr version 0.2 (draft) June 26, 2004 Abstract Formalising the

More information

L-System Fractal Generator: Language Reference Manual

L-System Fractal Generator: Language Reference Manual L-System Fractal Generator: Language Reference Manual Michael Eng, Jervis Muindi, Timothy Sun Contents 1 Program Definition 3 2 Lexical Conventions 3 2.1 Comments...............................................

More information

K Reference Card. Complete example

K Reference Card. Complete example K Reference Card Complete example package examples.example1 annotation doc : String class Date class Person { name : String age : Int ssnr : Int @doc("employee inherits from Person") class Employee extends

More information

MIDTERM EXAM (Solutions)

MIDTERM EXAM (Solutions) MIDTERM EXAM (Solutions) Total Score: 100, Max. Score: 83, Min. Score: 26, Avg. Score: 57.3 1. (10 pts.) List all major categories of programming languages, outline their definitive characteristics and

More information

Types and Static Type Checking (Introducing Micro-Haskell)

Types and Static Type Checking (Introducing Micro-Haskell) Types and Static (Introducing Micro-Haskell) Informatics 2A: Lecture 13 Alex Simpson School of Informatics University of Edinburgh als@inf.ed.ac.uk 16 October, 2012 1 / 21 1 Types 2 3 4 2 / 21 Thus far

More information

Compiler Construction

Compiler Construction Compiled on 5/05/207 at 3:2pm Abbreviations NFA. Non-deterministic finite automaton DFA. Deterministic finite automaton Compiler Construction Collection of exercises Version May 5, 207 General Remarks

More information

BoredGames Language Reference Manual A Language for Board Games. Brandon Kessler (bpk2107) and Kristen Wise (kew2132)

BoredGames Language Reference Manual A Language for Board Games. Brandon Kessler (bpk2107) and Kristen Wise (kew2132) BoredGames Language Reference Manual A Language for Board Games Brandon Kessler (bpk2107) and Kristen Wise (kew2132) 1 Table of Contents 1. Introduction... 4 2. Lexical Conventions... 4 2.A Comments...

More information

The Compositional C++ Language. Denition. Abstract. This document gives a concise denition of the syntax and semantics

The Compositional C++ Language. Denition. Abstract. This document gives a concise denition of the syntax and semantics The Compositional C++ Language Denition Peter Carlin Mani Chandy Carl Kesselman March 12, 1993 Revision 0.95 3/12/93, Comments welcome. Abstract This document gives a concise denition of the syntax and

More information

Stating the obvious, people and computers do not speak the same language.

Stating the obvious, people and computers do not speak the same language. 3.4 SYSTEM SOFTWARE 3.4.3 TRANSLATION SOFTWARE INTRODUCTION Stating the obvious, people and computers do not speak the same language. People have to write programs in order to instruct a computer what

More information

Let v be a vertex primed by v i (s). Then the number f(v) of neighbours of v which have

Let v be a vertex primed by v i (s). Then the number f(v) of neighbours of v which have Let v be a vertex primed by v i (s). Then the number f(v) of neighbours of v which have been red in the sequence up to and including v i (s) is deg(v)? s(v), and by the induction hypothesis this sequence

More information

Lecture 2 - Graph Theory Fundamentals - Reachability and Exploration 1

Lecture 2 - Graph Theory Fundamentals - Reachability and Exploration 1 CME 305: Discrete Mathematics and Algorithms Instructor: Professor Aaron Sidford (sidford@stanford.edu) January 11, 2018 Lecture 2 - Graph Theory Fundamentals - Reachability and Exploration 1 In this lecture

More information

Haskell 98 in short! CPSC 449 Principles of Programming Languages

Haskell 98 in short! CPSC 449 Principles of Programming Languages Haskell 98 in short! n Syntax and type inferencing similar to ML! n Strongly typed! n Allows for pattern matching in definitions! n Uses lazy evaluation" F definition of infinite lists possible! n Has

More information

ER E P M S S I TRANSLATION OF CONDITIONAL COMPIL DEPARTMENT OF COMPUTER SCIENCE UNIVERSITY OF TAMPERE REPORT A

ER E P M S S I TRANSLATION OF CONDITIONAL COMPIL DEPARTMENT OF COMPUTER SCIENCE UNIVERSITY OF TAMPERE REPORT A S I N S UN I ER E P M TA S A S I T VER TRANSLATION OF CONDITIONAL COMPIL DEPARTMENT OF COMPUTER SCIENCE UNIVERSITY OF TAMPERE REPORT A-1997-13 UNIVERSITY OF TAMPERE DEPARTMENT OF COMPUTER SCIENCE SERIES

More information

This is already grossly inconvenient in present formalisms. Why do we want to make this convenient? GENERAL GOALS

This is already grossly inconvenient in present formalisms. Why do we want to make this convenient? GENERAL GOALS 1 THE FORMALIZATION OF MATHEMATICS by Harvey M. Friedman Ohio State University Department of Mathematics friedman@math.ohio-state.edu www.math.ohio-state.edu/~friedman/ May 21, 1997 Can mathematics be

More information

The Programming Language Core

The Programming Language Core The Programming Language Core Wolfgang Schreiner Research Institute for Symbolic Computation (RISC-Linz) Johannes Kepler University, A-4040 Linz, Austria Wolfgang.Schreiner@risc.uni-linz.ac.at http://www.risc.uni-linz.ac.at/people/schreine

More information

A stack eect (type signature) is a pair of input parameter types and output parameter types. We also consider the type clash as a stack eect. The set

A stack eect (type signature) is a pair of input parameter types and output parameter types. We also consider the type clash as a stack eect. The set Alternative Syntactic Methods for Dening Stack Based Languages Jaanus Poial Institute of Computer Science University of Tartu, Estonia e-mail: jaanus@cs.ut.ee Abstract. Traditional formal methods of syntax

More information

Gen := 0. Create Initial Random Population. Termination Criterion Satisfied? Yes. Evaluate fitness of each individual in population.

Gen := 0. Create Initial Random Population. Termination Criterion Satisfied? Yes. Evaluate fitness of each individual in population. An Experimental Comparison of Genetic Programming and Inductive Logic Programming on Learning Recursive List Functions Lappoon R. Tang Mary Elaine Cali Raymond J. Mooney Department of Computer Sciences

More information

Construction of Application Generators Using Eli. Uwe Kastens, University of Paderborn, FRG. Abstract

Construction of Application Generators Using Eli. Uwe Kastens, University of Paderborn, FRG. Abstract Construction of Application Generators Using Eli Uwe Kastens, University of Paderborn, FRG Abstract Application generators are a powerful means for reuse of software design. They produce special purpose

More information

Issued by the WP1 Team. Prepared by. Georg Lehrenfeld, Paderborn University

Issued by the WP1 Team. Prepared by. Georg Lehrenfeld, Paderborn University ESPRIT Project in Condence ESPRIT Project 2072 ECIP2 European CAD Integration Project Issued by the WP1 Team Prepared by Georg Lehrenfeld, Paderborn University Wolfgang Mueller, Cadlab Translation of EXPRESS

More information

Abstract. Programs written in languages of the Oberon family usually. contain runtime tests on the dynamic type of variables.

Abstract. Programs written in languages of the Oberon family usually. contain runtime tests on the dynamic type of variables. Type Test Elimination using Typeow Analysis Diane Corney and John Gough Queensland University of Technology, Brisbane, Australia Abstract. Programs written in languages of the Oberon family usually contain

More information

2.2 Syntax Definition

2.2 Syntax Definition 42 CHAPTER 2. A SIMPLE SYNTAX-DIRECTED TRANSLATOR sequence of "three-address" instructions; a more complete example appears in Fig. 2.2. This form of intermediate code takes its name from instructions

More information

Let us dene the basic notation and list some results. We will consider that stack eects (type signatures) form a polycyclic monoid (introduced in [NiP

Let us dene the basic notation and list some results. We will consider that stack eects (type signatures) form a polycyclic monoid (introduced in [NiP Validation of Stack Eects in Java Bytecode Jaanus Poial Institute of Computer Science University of Tartu, Estonia e-mail: jaanus@cs.ut.ee February 21, 1997 Abstract The Java language is widely used in

More information

BBN Technical Report #7866: David J. Montana. Bolt Beranek and Newman, Inc. 10 Moulton Street. March 25, Abstract

BBN Technical Report #7866: David J. Montana. Bolt Beranek and Newman, Inc. 10 Moulton Street. March 25, Abstract BBN Technical Report #7866: Strongly Typed Genetic Programming David J. Montana Bolt Beranek and Newman, Inc. 10 Moulton Street Cambridge, MA 02138 March 25, 1994 Abstract Genetic programming is a powerful

More information

The PCAT Programming Language Reference Manual

The PCAT Programming Language Reference Manual The PCAT Programming Language Reference Manual Andrew Tolmach and Jingke Li Dept. of Computer Science Portland State University September 27, 1995 (revised October 15, 2002) 1 Introduction The PCAT language

More information

Compiler Construction

Compiler Construction Compiler Construction Collection of exercises Version February 7, 26 Abbreviations NFA. Non-deterministic finite automaton DFA. Deterministic finite automaton Lexical analysis. Construct deterministic

More information

Information Science 1

Information Science 1 Information Science Boolean Expressions Week College of Information Science and Engineering Ritsumeikan University Topics covered l Terms and concepts from Week 9 l Binary (Boolean) logic History Boolean

More information

7. Introduction to Denotational Semantics. Oscar Nierstrasz

7. Introduction to Denotational Semantics. Oscar Nierstrasz 7. Introduction to Denotational Semantics Oscar Nierstrasz Roadmap > Syntax and Semantics > Semantics of Expressions > Semantics of Assignment > Other Issues References > D. A. Schmidt, Denotational Semantics,

More information

Sprite an animation manipulation language Language Reference Manual

Sprite an animation manipulation language Language Reference Manual Sprite an animation manipulation language Language Reference Manual Team Leader Dave Smith Team Members Dan Benamy John Morales Monica Ranadive Table of Contents A. Introduction...3 B. Lexical Conventions...3

More information

Path Consistency Revisited. Moninder Singh. University of Pennsylvania. Philadelphia, PA

Path Consistency Revisited. Moninder Singh. University of Pennsylvania. Philadelphia, PA Proceedings of the 7th IEEE International Conference on Tools with Articial Intelligence, 318-325, 1995. c Institute of Electrical and Electronics Engineers, Inc. (IEEE). Path Consistency Revisited Moninder

More information

Improving the Quality of Test Suites for Conformance. Tests by Using Message Sequence Charts. Abstract

Improving the Quality of Test Suites for Conformance. Tests by Using Message Sequence Charts. Abstract 1 Improving the Quality of Test Suites for Conformance Tests by Using Message Sequence Charts Jens Grabowski a ; Dieter Hogrefe a, Iwan Nussbaumer b, and Andreas Spichiger a Abstract The test of a communication

More information

Compiler Theory. (Semantic Analysis and Run-Time Environments)

Compiler Theory. (Semantic Analysis and Run-Time Environments) Compiler Theory (Semantic Analysis and Run-Time Environments) 005 Semantic Actions A compiler must do more than recognise whether a sentence belongs to the language of a grammar it must do something useful

More information

DRAFT for FINAL VERSION. Accepted for CACSD'97, Gent, Belgium, April 1997 IMPLEMENTATION ASPECTS OF THE PLC STANDARD IEC

DRAFT for FINAL VERSION. Accepted for CACSD'97, Gent, Belgium, April 1997 IMPLEMENTATION ASPECTS OF THE PLC STANDARD IEC DRAFT for FINAL VERSION. Accepted for CACSD'97, Gent, Belgium, 28-3 April 1997 IMPLEMENTATION ASPECTS OF THE PLC STANDARD IEC 1131-3 Martin hman Stefan Johansson Karl-Erik rzen Department of Automatic

More information

Introduction to Parsing. Lecture 5

Introduction to Parsing. Lecture 5 Introduction to Parsing Lecture 5 1 Outline Regular languages revisited Parser overview Context-free grammars (CFG s) Derivations Ambiguity 2 Languages and Automata Formal languages are very important

More information

IEEE LANGUAGE REFERENCE MANUAL Std P1076a /D3

IEEE LANGUAGE REFERENCE MANUAL Std P1076a /D3 LANGUAGE REFERENCE MANUAL Std P1076a-1999 2000/D3 Clause 10 Scope and visibility The rules defining the scope of declarations and the rules defining which identifiers are visible at various points in the

More information

Shell CSCE 314 TAMU. Haskell Functions

Shell CSCE 314 TAMU. Haskell Functions 1 CSCE 314: Programming Languages Dr. Dylan Shell Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions can

More information

Introduction to Computers and C++ Programming p. 1 Computer Systems p. 2 Hardware p. 2 Software p. 7 High-Level Languages p. 8 Compilers p.

Introduction to Computers and C++ Programming p. 1 Computer Systems p. 2 Hardware p. 2 Software p. 7 High-Level Languages p. 8 Compilers p. Introduction to Computers and C++ Programming p. 1 Computer Systems p. 2 Hardware p. 2 Software p. 7 High-Level Languages p. 8 Compilers p. 9 Self-Test Exercises p. 11 History Note p. 12 Programming and

More information

Introduction to Parsing. Lecture 5

Introduction to Parsing. Lecture 5 Introduction to Parsing Lecture 5 1 Outline Regular languages revisited Parser overview Context-free grammars (CFG s) Derivations Ambiguity 2 Languages and Automata Formal languages are very important

More information

CSCE 314 TAMU Fall CSCE 314: Programming Languages Dr. Flemming Andersen. Haskell Functions

CSCE 314 TAMU Fall CSCE 314: Programming Languages Dr. Flemming Andersen. Haskell Functions 1 CSCE 314: Programming Languages Dr. Flemming Andersen Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions

More information

Programming Lecture 3

Programming Lecture 3 Programming Lecture 3 Expressions (Chapter 3) Primitive types Aside: Context Free Grammars Constants, variables Identifiers Variable declarations Arithmetic expressions Operator precedence Assignment statements

More information

Building a Search Engine: Part 2

Building a Search Engine: Part 2 Brown University CSCI 1580 Spring 2013 Building a Search Engine: Part 2 Due: 2:00pm, 8 Mar 2013 Overview In this part of the Course Project you will enhance the simplied search engine that you built in

More information

Algebraic Properties of CSP Model Operators? Y.C. Law and J.H.M. Lee. The Chinese University of Hong Kong.

Algebraic Properties of CSP Model Operators? Y.C. Law and J.H.M. Lee. The Chinese University of Hong Kong. Algebraic Properties of CSP Model Operators? Y.C. Law and J.H.M. Lee Department of Computer Science and Engineering The Chinese University of Hong Kong Shatin, N.T., Hong Kong SAR, China fyclaw,jleeg@cse.cuhk.edu.hk

More information

A simple syntax-directed

A simple syntax-directed Syntax-directed is a grammaroriented compiling technique Programming languages: Syntax: what its programs look like? Semantic: what its programs mean? 1 A simple syntax-directed Lexical Syntax Character

More information

easel LANGUAGE REFERENCE MANUAL

easel LANGUAGE REFERENCE MANUAL easel LANGUAGE REFERENCE MANUAL Manager Danielle Crosswell dac2182 Language Guru Tyrus Cukavac thc2125 System Architect Yuan-Chao Chou yc3211 Tester Xiaofei Chen xc2364 Table of Contents 1. Introduction...

More information

A Generalized Permutation Approach to. Department of Economics, University of Bremen, Germany

A Generalized Permutation Approach to. Department of Economics, University of Bremen, Germany A Generalized Permutation Approach to Job Shop Scheduling with Genetic Algorithms? Christian Bierwirth Department of Economics, University of Bremen, Germany Abstract. In order to sequence the tasks of

More information

COMPILER CONSTRUCTION LAB 2 THE SYMBOL TABLE. Tutorial 2 LABS. PHASES OF A COMPILER Source Program. Lab 2 Symbol table

COMPILER CONSTRUCTION LAB 2 THE SYMBOL TABLE. Tutorial 2 LABS. PHASES OF A COMPILER Source Program. Lab 2 Symbol table COMPILER CONSTRUCTION Lab 2 Symbol table LABS Lab 3 LR parsing and abstract syntax tree construction using ''bison' Lab 4 Semantic analysis (type checking) PHASES OF A COMPILER Source Program Lab 2 Symtab

More information

CSCI-GA Final Exam

CSCI-GA Final Exam CSCI-GA 2110-003 - Final Exam Instructor: Thomas Wies Name: Sample Solution ID: You have 110 minutes time. There are 7 assignments and you can reach 110 points in total. You can solve the exercises directly

More information

A novel approach to automatic model-based test case generation

A novel approach to automatic model-based test case generation Scientia Iranica D (2017) 24(6), 3132{3147 Sharif University of Technology Scientia Iranica Transactions D: Computer Science & Engineering and Electrical Engineering www.scientiairanica.com A novel approach

More information

SORT INFERENCE \coregular" signatures, they derive an algorithm for computing a most general typing for expressions e which is only slightly more comp

SORT INFERENCE \coregular signatures, they derive an algorithm for computing a most general typing for expressions e which is only slightly more comp Haskell Overloading is DEXPTIME{complete Helmut Seidl Fachbereich Informatik Universitat des Saarlandes Postfach 151150 D{66041 Saarbrucken Germany seidl@cs.uni-sb.de Febr., 1994 Keywords: Haskell type

More information

Introduction to Parsing Ambiguity and Syntax Errors

Introduction to Parsing Ambiguity and Syntax Errors Introduction to Parsing Ambiguity and Syntax rrors Outline Regular languages revisited Parser overview Context-free grammars (CFG s) Derivations Ambiguity Syntax errors Compiler Design 1 (2011) 2 Languages

More information

Types and Static Type Checking (Introducing Micro-Haskell)

Types and Static Type Checking (Introducing Micro-Haskell) Types and Static (Introducing Micro-Haskell) Informatics 2A: Lecture 14 John Longley School of Informatics University of Edinburgh jrl@inf.ed.ac.uk 17 October 2017 1 / 21 1 Types 2 3 4 2 / 21 So far in

More information

TDDD55 - Compilers and Interpreters Lesson 3

TDDD55 - Compilers and Interpreters Lesson 3 TDDD55 - Compilers and Interpreters Lesson 3 November 22 2011 Kristian Stavåker (kristian.stavaker@liu.se) Department of Computer and Information Science Linköping University LESSON SCHEDULE November 1,

More information

Provably Correct Software

Provably Correct Software Provably Correct Software Max Schäfer Institute of Information Science/Academia Sinica September 17, 2007 1 / 48 The Need for Provably Correct Software BUT bugs are annoying, embarrassing, and cost gazillions

More information

IPCoreL. Phillip Duane Douglas, Jr. 11/3/2010

IPCoreL. Phillip Duane Douglas, Jr. 11/3/2010 IPCoreL Programming Language Reference Manual Phillip Duane Douglas, Jr. 11/3/2010 The IPCoreL Programming Language Reference Manual provides concise information about the grammar, syntax, semantics, and

More information

Forward declaration of enumerations

Forward declaration of enumerations Doc. no.: N2499=08-0009 Date: 2008-01-09 Project: Programming Language C++ Reply to: Alberto Ganesh Barbati Forward declaration of enumerations 1 Introduction In C++03 every declaration

More information

3.5 Practical Issues PRACTICAL ISSUES Error Recovery

3.5 Practical Issues PRACTICAL ISSUES Error Recovery 3.5 Practical Issues 141 3.5 PRACTICAL ISSUES Even with automatic parser generators, the compiler writer must manage several issues to produce a robust, efficient parser for a real programming language.

More information

SEMANTIC ANALYSIS TYPES AND DECLARATIONS

SEMANTIC ANALYSIS TYPES AND DECLARATIONS SEMANTIC ANALYSIS CS 403: Type Checking Stefan D. Bruda Winter 2015 Parsing only verifies that the program consists of tokens arranged in a syntactically valid combination now we move to check whether

More information

Proc. XVIII Conf. Latinoamericana de Informatica, PANEL'92, pages , August Timed automata have been proposed in [1, 8] to model nite-s

Proc. XVIII Conf. Latinoamericana de Informatica, PANEL'92, pages , August Timed automata have been proposed in [1, 8] to model nite-s Proc. XVIII Conf. Latinoamericana de Informatica, PANEL'92, pages 1243 1250, August 1992 1 Compiling Timed Algebras into Timed Automata Sergio Yovine VERIMAG Centre Equation, 2 Ave de Vignate, 38610 Gieres,

More information

CPSC 320 Sample Solution, Playing with Graphs!

CPSC 320 Sample Solution, Playing with Graphs! CPSC 320 Sample Solution, Playing with Graphs! September 23, 2017 Today we practice reasoning about graphs by playing with two new terms. These terms/concepts are useful in themselves but not tremendously

More information

Object-Oriented Design (OOD) and C++

Object-Oriented Design (OOD) and C++ Chapter 2 Object-Oriented Design (OOD) and C++ At a Glance Instructor s Manual Table of Contents Chapter Overview Chapter Objectives Instructor Notes Quick Quizzes Discussion Questions Projects to Assign

More information

Introduction to Parsing Ambiguity and Syntax Errors

Introduction to Parsing Ambiguity and Syntax Errors Introduction to Parsing Ambiguity and Syntax rrors Outline Regular languages revisited Parser overview Context-free grammars (CFG s) Derivations Ambiguity Syntax errors 2 Languages and Automata Formal

More information