such internal data dependencies can be formally specied. A possible approach to specify
|
|
- Roy Barber
- 5 years ago
- Views:
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
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 informationAn 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 informationAlgorithmic "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 informationIntroduction 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 informationCompiler 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 informationProgramming 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 informationA 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 informationA 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 informationIntroduction 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 informationGBIL: 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 informationCMa 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 informationCS109A 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 informationCMSC 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 informationThe 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 informationChapter 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 informationExpressions 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 informationTheoretical 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 informationProgramming 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 informationAnnex 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 informationOperational 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 informationMATVEC: 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 informationOperational 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 informationLecture 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 informationperform. 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 informationLecture 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 informationSemantic 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 informationChapter 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 informationOutline. 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 information1 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 informationRSL 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
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 informationDefining 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 informationThe 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 informationMaster 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 informationProgram 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 informationProgramming 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 informationA 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 informationDecaf 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 informationCS422 - 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 informationCIS4/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 informationStructure 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 informationL-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 informationK 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 informationMIDTERM 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 informationTypes 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 informationCompiler 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 informationBoredGames 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 informationThe 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 informationStating 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 informationLet 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 informationLecture 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 informationHaskell 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 informationER 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 informationThis 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 informationThe 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 informationA 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 informationGen := 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 informationConstruction 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 informationIssued 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 informationAbstract. 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 information2.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 informationLet 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 informationBBN 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 informationThe 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 informationCompiler 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 informationInformation 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 information7. 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 informationSprite 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 informationPath 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 informationImproving 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 informationCompiler 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 informationDRAFT 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 informationIntroduction 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 informationIEEE 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 informationShell 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 informationIntroduction 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 informationIntroduction 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 informationCSCE 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 informationProgramming 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 informationBuilding 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 informationAlgebraic 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 informationA 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 informationeasel 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 informationA 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 informationCOMPILER 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 informationCSCI-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 informationA 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 informationSORT 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 informationIntroduction 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 informationTypes 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 informationTDDD55 - 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 informationProvably 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 informationIPCoreL. 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 informationForward 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 information3.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 informationSEMANTIC 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 informationProc. 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 informationCPSC 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 informationObject-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 informationIntroduction 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