SMPL - A Simplified Modeling Language for Mathematical Programming

Size: px
Start display at page:

Download "SMPL - A Simplified Modeling Language for Mathematical Programming"

Transcription

1 SMPL - A Simplified Modeling Language for Mathematical Programming Mihály Csaba Markót November 3, Purpose and Scope This working paper describes SMPL, an initiative of a Simplified Modeling Language for Mathematical Programming. The original purpose of SMPL is to make easier the process of inputting optimization problems to the GloptLab software, under both the Windows and the Linux operating systems. This document is intended to support the developers of GloptLab and related tools. 2 The SMPL syntax 2.1 General properties of SMPL input files SMPL input files consist of a sequence of statements. Statements are ended by a semicolon. Spaces, tabs, and line feeds can be freely used between the lexical elements; the only exception is that if a variable or a parameter is referred through indexing (see Sections 2.10 and 2.11), then the opening indexing operator ( [ ) must immediately follow the variable/parameter name. (This is in order to resolve the disambiguity with constant matrices and intervals.) SMPL allows single line comments, using the comment character #. That is, anything following # in a line will be treated as comment. 2.2 SMPL sections An SMPL file consist of the following sections: the declaration section (both for variables and for parameters), the input variable section, the objective function section (zero or one statement), and the constraint section. The sections must occur in the input file in the above order. Variable and parameter declaration statements may occur in mixed order within the declaration section. All four sections are allowed to be empty. An empty objective function section indicates a constraint satisfaction problem. 1

2 2.3 Numbers SMPL numbers are either point, uncertain or interval constants Point numbers Unsigned point numbers are allowed to be given in the following ways: integer constants in the standard format (leading zeros are allowed), real-type constants given as either a fixed point number (using decimal point) with an optional exponent part, or an integer number with a mandatory exponent part. Formally, unsigned integer and real numbers are recognized by the following regular expressions: INT [0-9]+ # integer number EPART [dede][+-]?[0-9]+ # exponent part FPONT [0-9]+"."[0-9]* [0-9]*"."[0-9]+ # fixed point notation REAL {FPONT}{EPART}? {INT}{EPART} # real number Note that in a fixed point notation either the integer or the fractional part must be nonempty. (In contrast to C, where for example.e+10 is an allowed, but rather ambiguous token.) Examples: 012 # allowed integer 12. # allowed real.23 # allowed real 12.e4 # allowed real 12.34e+005 # allowed real 12E+005 # allowed real (although represents an integer).e-01 # NOT allowed in SMPL Signed point numbers can be given in the usual way by applying the unary minus operator (cf. Section 2.8). In most cases SMPL makes no difference between integers and reals: all constants (both numbers and compound expressions) are represented by a string, with the exception of indices and exponents, which must be in integer format, and are handled as numbers Uncertain numbers (the question mark notation) In SMPL, uncertainty can be represented by a new notation syntax called the question mark notation, suggested by Arnold Neumaier. Formally, question mark constants are recognized through the following regular expressions: PNUM {REAL} {INT} # point numbers for short QMCONST {PNUM}\? {PNUM}\?{INT} {PNUM}\?u{INT} {PNUM}\?d{INT} {PNUM}\?a{PNUM} {PNUM}\?r{PNUM} # question mark numbers 2

3 In the above syntax, the point numbers following the question mark sign can be positive or zero. (In contrast to the original initiative, which allows only positive numbers after the question mark.) Examples: (In these examples ulp is one unit in the last place of the decimal number displayed.) 12.3? # represents /2 ulp, i.e., [12.25,12.35] # Note: An earlier version had here erroneously 1 ulp 12.3?5 # represents ulp, i.e., [11.8,12.8].23?u2 # represents.23 + <=2 ulp, i.e., [.23,.25].23?d2 # represents.23 - <=2 ulp, i.e., [.21,.23].23?a0.1 # represents , i.e., [.22,.24].23?r0.1 # represents.23 * (1+-0.1), i.e., [.207,.253] Interval numbers The syntax of an unsigned SMPL interval number is [ <const-scalar-expr1>, <const-scalar-expr2> ] where <const-scalar-expr1> and <const-scalar-expr2> are constant type scalar expressions. (see Section 2.13, Expressions). Note that the arguments can be intervals, that is, nested intervals are also allowed. Signed interval numbers can be given in the usual way by applying the unary minus operator (cf. Section 2.8). Interval numbers are also stored as strings. Since expressions are allowed in bounds, unsigned interval numbers are defined as nonterminals of SMPL, while unsigned point numbers are tokens of the language. 2.4 Constant matrix notation Constant scalar expressions (Section 2.13), that is, scalars composed of point/interval numbers, arithmetic operators and functions can be put together in constant matrices. Matrices should be defined row-by-row: row entries are separated by an & sign, while subsequent rows are separated by a semicolon. Lower and upper triangular matrices can be defined by skipping the obvious zero entries. Those entries will be automatically substituted by the literals 0 or [0,0], respectively. Examples: [ (1+2)*[3,4] ] # 1-by-1 constant matrix [ 1.0 & 2.0 & 3.0; 4.0 & 5.0 & 6.0 ] # 2-by-3 constant matrix [ [1,2]^2 & 0; 0 & [1,2]^2 ] # 2-by-2 constant matrix [ 1 & 2 & 5; 3 & 4; 7 ] # 3-by-3 upper triangular constant matrix 2.5 Tables SMPL allows the usage of tables describing piecewise approximations or splines. An SMPL table is specified by 3

4 <table-type> ( <const-mat-expr> ) where <table-type> is one of the key words pcon, plin, hspline, cspline, rspline, and <const-mat-expr> is a constant matrix expression with column size 3 for hspline and column size 2 for all other table types. All rows of the matrix encodes the triples (x, f(x), f (x)) or the pairs (x, f(x)), respectively. For details on defining tables see the GloptLab documentation. Note, that the clearest and most straightforward way to specify the table matrix is the use of constant matrices (Section 2.4). However, compound expressions resulting in a matrix of the prescribed size are also allowed in the definition. 2.6 Identifiers Identifiers in SMPL are used for variable and parameter names (and as their references), and for labels. Identifiers must be composed of zero or more digits and one or more letters, and must always start with a letter. 2.7 Labels SMPL labels are composed of a valid identifier followed by a semicolon (:). Note, that labels are currently simply ignored by the SMPL parser, i.e. no semantic information is stored and passed in relation to them. 2.8 Operators and functions Arithmetic and matrix operators The binary arithmetic operators are interpreted in the infix fashion <lhs-expr> <op> <rhs-expr> The arithmetic and matrix operators of SMPL are the following, in increasing order of precedence: Addition ( + ) and subtraction ( - ). The operator is interpreted componentwise; the dimensionality of the lhs and rhs must match. Multiplication ( * ). Both scalar-matrix, and matrix-matrix multiplication is allowed. In case of scalar matrix multiplication, the scalar must be a constant expression. In case of matrix-matrix multiplication, the respective dimensions of the arguments must match. Note that variable matrices are not interpreted in SMPL. This implies that variable expressions (vectors) can be multiplied as an inner product. Examples: var x, y { 1..5 }; param p = [ 1.0; 2.0; 3.0 ] param q = [ 1 & -1 & 0; -1 & 1 & -1; 0 & -1 & 1 ] # column vector p[1] * y # scalar-matrix mult., result is a 5-by-1 variable vector q * p # matrix-matrix mult., result is a 3-by-1 const.type vector q * y[1 3 5] # matrix-matrix mult., result is a 3-by-1 variable vector y * y # inner product, result is a scalar variable-type expr. 4

5 y * y # NOT allowed, variable outer product y[1 3 5] * p # NOT allowed, result is a variable-type matrix Division ( /, with the same precedence as * ). The rhs expression must always be a scalar. If the rhs is of constant type, then the lhs can be any kind of expression, if it is of variable type, then the lhs must be scalar. The division is interpreted componentwise. Unary minus ( - ). This prefix operator is allowed on expressions with arbitrary dimensions. In case of vector and matrix arguments, the operator is interpreted componentwise. Note that signed point constants are defined through this operator, thus, white spaces or newlines are allowed between the sign and the constant part of a number. Power ( ^ ). The rhs (exponent) must be a single integer constant (2.3.1), the lhs is allowed to be a scalar expression. Matrix transpose ( ). This operator is used as usual in a postfix fashion, and is allowed on all expressions (Section 2.13) Relational operators Relational operators are interpreted in the infix fashion <lhs> <op> <rhs> Either <lhs> or <rhs> must be of variable type. The relational operators are defined both for scalars and for vectors. If either side is a constant scalar, then each component of the other side (perhaps a vector) is compared with this scalar. In all other cases the relations are applied componentwise. SMPL includes the following relational operators: <=, >=, =. For the operators both point and interval arguments are allowed The interval inclusion operator This operator is denoted by <i>, and is used in the form <lhs> <i> <interval> where <interval> is an interval number (and thus, a scalar expression). The <lhs> must be of variable type. The <i> operator is defined both for scalar and for vector left-hand sides. If the left-hand side is a vector, then each component of it is compared with this scalar, just like for the relational operators The set containment operator This operator is denoted by in, and is used in the form <varref> in { <expr-list> } where <varref> is a variable reference (cf. Section 2.10) and <expr-list> is a commaseparated list of constant scalar expressions. If <varref> is vector-valued (i.e., it refers to a vector variable or is given as a variable subvector), then the relation is interpreted to all of its elements using the right-hand side set. 5

6 2.8.5 Mathematical functions SMPL math functions are interpreted on arguments with arbitrary dimensions. In case of vector and matrix arguments, the functions are applied componentwise. For binary functions, the row and column dimensions of the operands must match. The arguments must follow the function name in parentheses. SMPL recognizes the following functions: Unary functions: exp, log, xlog, sin, cos, atan, abs, sign, pos, neg, sqrt. Binary functions: min, max. 2.9 The declaration section Variable declarations Variables are defined by using the var keyword, following one of the syntax lines below: var <varlist> ; # single declaration var <varlist> <rel_op> <const-expr> ; # declaration with initial bounds var <varlist> >= <const-expr>, <= <const-expr> ; # declaration with initial bounds var <varlist> <i> <interval> ; # declaration with initial bounds A variable list (<varlist>) is a comma-separated sequence of <vardecl> elements followed by the optional integer keyword, where <vardecl> is defined as <var-id> or <var-id> { <index1>.. <index2> } The latter notation is used to declare variable vectors, otherwise <var-id> is treated as a single (scalar) variable. <index1> and <index2> defines the index range of the variable, with <index1> <index2>. In the present version of SMPL, <index1> must be equal to 1. We may not even need different starting indices. Variable vectors are always declared as column vectors. Optionally, a list of variables can be declared as integer. Note, that the integer keyword applies to all variables of the current declaration statement. Also optionally, identical initial bounds for all variables of a declaration statement can be defined by a relational operator, by using the <= and >= operators at the same time with two constant expressions, or by the interval inclusion operator (Section 2.8) and a constant expression. The third way of specifying initial bounds is a more compact equivalent notation to the second way in case of scalar bounds. All of the above initial bounds implicitly encode the constraints <varref> <rel_op> <const-expr> 6

7 and <const-expr> <= <varref> <= <const-expr> <varref> <i> <interval> respectively, for the <varref> reference of each variable of the declaration statement. Thus, the type and dimensionality of the constant type expressions are allowed according to Section 2.8. Remark. If the inital bounds are defined by using <= and >= at the same time, then the same dimensionality match condition should occur to both constant bounds. That is, the dimensions of the constant expressions must either match and be the same as the dimensionality of the variable, or they both must be of scalar type. Examples: var x; var x1, x2, y {1..2} integer <= 5.0; # all vars are declared as integers var y {1..5} <i> [1.0,2.0]; # components bounded with the same interval var z1 {1..2}, z2 {1..2} >= [5; 7 ]; # componentwise bounds with 1-by-2 rhs var z >= 3, <= 7; # equivalent to "var z <i> [3,7]"; Parameter declarations Parameters can be defined by using the param keyword, following one of the syntax lines param <param-id> = <const-scalar-expr> ; param <paramid> = <const-mat-expr> ; where <const-mat-expr> is a constant matrix given in the form described in Section 2.4. The dimensionality of <param-id> is automatically determined by the size of the rhs in both cases. Note that the parameter initializers (the rhs expressions) may contain references to previously declared parameters Variable references SMPL variables can be used in the objective function and constraint sections. All used variables must be previously declared in the declaration section. An SMPL variable (scalar or vector) can be referenced in two different ways: Using the name of the variable only. This refers to the respective variable of the same size as it is declared. Subvector with indexing. The variable name is followed by bracketed integer list of the variable indices. The elements of the index list are separated by white spaces/newlines. 7

8 This syntax refers to a variable vector of the size of the index list, where each component of the variable vector corresponds to the referred component. Note, that the index list need not be in increasing order and it may contain repeated indices, i.e., repeated references to the same vector component. Examples: var x, y {1..5}; y # refers to a 5-by-1 variable vector y[1 2 3] # refers to the column subvector ( y[1] y[3] y[5] ) y[2 2 2] # refers to the column subvector ( y[2] y[2] y[2] ) x[1] # subvector indexing is allowed for scalar variables 2.11 Parameter references SMPL parameters references are similar to variables references, extended by some additional functionalities for matrix parameters. All used parameters must be previously declared in the declaration section. An SMPL parameter (scalar, vector, or matrix) can be referenced in three different ways: Using the name of the parameter only. This refers to the respective parameter of the same size as it is declared. Subvector with indexing. This way of reference is applicable for vector and scalar parameters only, using the syntax described for variables in Section Direct indexing. This way of reference is applicable for scalars, vectors, and matrices, and follow the standard way of specifying the row and column index of the respective entry as a bracketed pair of integers, separated by a comma. Examples: param p = 1.5; param q = [ 1.0 & 2.0 & 3.0; 4.0 & 5.0 & 6.0 ]; q # refers to the whole q matrix q[1,2] # refers to the resp. entry of q (i.e., 2.0) p[1 1] # refers to the column vector ( ) p[1,1] # refers to p itself 2.12 The input variable section The section is used to list the original variable of the optimization model, that is, those variables, which are used not only for substitutions/simplifications. The section consist of at most one statement in the form input <varname-list> ; 8

9 where <varname-list> is a comma-separated list of a subset of the names of the previously declared variables. (That is, indexing is not allowed, and variables declared as vectors must appear without their range declaration.) If the input variable section is empty, then it is assumed that all declared variables are input variables Expressions SMPL expressions are, in general, considered as matrices. However, the terms scalar and vector expressions are often used to describe special matrix expressions. There are two different types of SMPL expressions: Constant type expressions. These are expressions built from point and interval numbers and constant matrices using the SMPL operators (except the relational ones) and mathematical functions. Note that point and interval numbers can be mixed within one expression (SMPL does not make the distinction between constant expressions which are evaluated to points or to intervals.) Variable type expressions. These are expressions involving one or more variable. SMPL expressions are either primitive or compound expressions. The family of primitive expressions is the following: point numbers (Section 2.3.1), interval numbers, composed of two constant scalar expressions (Section 2.3.3), constant matrices (Section 2.4), variable references (Section 2.10), and parameter references (Section 2.11). Compound expressions are built from primitive expressions using the SMPL operators (except the relational ones) and mathematical functions of Section 2.8. Parentheses are allowed in the usual form to overwrite operator precedence and to clarify the evaluation order of SMPL expressions. The central property of SMPL is that since the components of primitive vector/matrix expressions must be set to the same type, all components of a vector/matrix SMPL expression has the same type as well The objective function section The syntax of the objective function definition (if exists) is as follows: <obj-hdr> <expr> ; where <obj-hdr> is one of the strings minimize, min., maximize, or max., followed by an optional label, and <expr> is a scalar expression. <expr> can be either variable or constant type. 9

10 2.15 The constraint section An SMPL constraint statement must follow one of the syntax lines <cstr-hdr> <lhs-expr> <rel-op> <rhs-expr> ; <cstr-hdr> <left-expr> <= <mid-expr> <= <right-expr> ; <cstr-hdr> <lhs-expr> <i> <interval> ; <cstr-hdr> <varref> in { <expr-list> } ; <cstr-hdr> <varref> = <table> ; where <cstr-hdr> is the string subject to or s. t. followed by an optional label (there are one or more spaces or tabs allowed between subject and to, and zero or more spaces or tabs between s. and t. ). <rel-op> is a relational operator. According to the GloptLab philosophy, the following four constraint types are allowed: <rel-op> is =, one side is a variable reference, the other one is a univariate expression. (In a univariate expression each component is an expression involving one scalar variable, or one component of a vector variable only.) <rel-op> is =, one side is a quadratic variable expression, the other is a constant expression. Either <rel-op> is <= or >=, and one side is a quadratic variable expression, the other is a constant expression, or two <= operators are used in a chain, <mid-expr> is quadratic variable expression, <left-expr> and <right-expr> are constant expressions, or the operator is <i> and <lhs-expr> is a quadratic variable expression. (In case of scalar bounds, this is equivalent to the previous specification.) The constraint is a set constraint using the in operator. Remember that if varref on the lhs is a vector expression, then the set containment relation is applied to all of its components. The constraint is a table constraint, where <table> is a table described in Section 2.5. Note that if varref on the lhs is a vector expression, then the table constraint is applied to all of its components. As an additional dimensionality condition required when using the chain inequality syntax, see the remark in An example SMPL file Below is a meaningless SMPL file listed to demonstrate some current features of the language. # test file for glparser # variable declarations var x {1..5} <i> [1.0,2.0]; var y, z{1..3} integer <= 523; var w; 10

11 # parameter declarations param p1 = [ 5.0 & 4.0 & 3.0 ; 2.0 & 3.0 ; 1.0 ]; param p5 = [ - (15+7) & 14 & 13 ; 12 & 13 ; p1[3,3] ]; param p3 = 33.0?u6; param p2 = [ 523/10 & 234/10 & [675/10,685/10] ]; # dummy comment param p4 = 2*p2[1 3 1] ; # input (original) variables input x, y, z; # minimize a quadratic expression minimize obj: -(z * p5 * z) + p2 * x[1 2 3]; # constraint: varref (scalar) = univariate function (scalar) s.t. w = (y - sin(p3)) * sin(cos(y[1]))^2 - min((-y + 2),2*y); # constraint: univariate function (scalar) = varref (scalar) s.t. -y ( 4*y -2*sin(y) ) * sqrt((sin(y)-cos(y))) = x[1]; # constraint: varref (vector) = univariate function (vector) s.t. x[2 3 4] = cos(sin(z) + min(z,p2 )); # constraint: quadratic expression (scalar) >= constant expression (scalar) s.t. z[1]^2 - - z[2]^2 >= 1e+005; # constraint: quadratic expression (scalar) bounded by constant scalar # expressions s.t. 1e+005 <= (x[1 2 3]+x[2 3 4]-x[1 1 1]) * p2 <= 1e+006; # constraint: quadratic expression (scalar) <i> interval s.t. x * z[ ] + 5 <i> [ p1[1,1], 2*p1[2,2] ]; # constraint: constant expression (vector) = quadratic expression (vector) s.t. [ 10 ; 10 ; 10 ] = p1*(-z) - p2 *y; # constraint: a set constraint (applies to both z[2] and z[3]) s.t. z[2 3] in { 3+p1[1,1], p2[2], 1, 3*4 }; # constraint: a table constraint s.t. x[1] = pcon ( [ 1 & p2[1] ; 4/3 & 1.0 ; 5/3 & p2[2] ; 2 & 1.0 ] ); 11

JME Language Reference Manual

JME Language Reference Manual 1 Introduction JME (pronounced jay+me) is a lightweight language that allows programmers to easily perform statistic computations on tabular data as part of data analysis.

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

1 Lexical Considerations

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler

Lexical Considerations

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a

Lexical Considerations

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Decaf Language Tuesday, Feb 2 The project for the course is to write a compiler

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

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

ASML Language Reference Manual

ASML Language Reference Manual Tim Favorite (tuf1) & Frank Smith (fas2114) - Team SoundHammer Columbia University COMS W4115 - Programming Languages & Translators 1. Introduction The purpose of Atomic

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...

CS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square)

CS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square) Introduction This semester, through a project split into 3 phases, we are going

CS /534 Compiler Construction University of Massachusetts Lowell. NOTHING: A Language for Practice Implementation

CS 91.406/534 Compiler Construction University of Massachusetts Lowell Professor Li Xu Fall 2004 NOTHING: A Language for Practice Implementation 1 Introduction NOTHING is a programming language designed

UNIT- 3 Introduction to C++

UNIT- 3 Introduction to C++ C++ Character Sets: Letters A-Z, a-z Digits 0-9 Special Symbols Space + - * / ^ \ ( ) [ ] =!= . \$, ; : %! &? _ # = @ White Spaces Blank spaces, horizontal tab, carriage

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

The Warhol Language Reference Manual

The Warhol Language Reference Manual Martina Atabong maa2247 Charvinia Neblett cdn2118 Samuel Nnodim son2105 Catherine Wes ciw2109 Sarina Xie sx2166 Introduction Warhol is a functional and imperative programming

CMAT Language - Language Reference Manual COMS 4115

CMAT Language - Language Reference Manual COMS 4115 Language Guru: Michael Berkowitz (meb2235) Project Manager: Frank Cabada (fc2452) System Architect: Marissa Ojeda (mgo2111) Tester: Daniel Rojas (dhr2119)

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

Ordinary Differential Equation Solver Language (ODESL) Reference Manual

Ordinary Differential Equation Solver Language (ODESL) Reference Manual Rui Chen 11/03/2010 1. Introduction ODESL is a computer language specifically designed to solve ordinary differential equations (ODE

More Assigned Reading and Exercises on Syntax (for Exam 2)

More Assigned Reading and Exercises on Syntax (for Exam 2) 1. Read sections 2.3 (Lexical Syntax) and 2.4 (Context-Free Grammars) on pp. 33 41 of Sethi. 2. Read section 2.6 (Variants of Grammars) on pp.

Typescript on LLVM Language Reference Manual

Typescript on LLVM Language Reference Manual Ratheet Pandya UNI: rp2707 COMS 4115 H01 (CVN) 1. Introduction 2. Lexical Conventions 2.1 Tokens 2.2 Comments 2.3 Identifiers 2.4 Reserved Keywords 2.5 String

LESSON 1. A C program is constructed as a sequence of characters. Among the characters that can be used in a program are:

LESSON 1 FUNDAMENTALS OF C The purpose of this lesson is to explain the fundamental elements of the C programming language. C like other languages has all alphabet and rules for putting together words

Chapter 3: Describing Syntax and Semantics. Introduction Formal methods of describing syntax (BNF)

Chapter 3: Describing Syntax and Semantics Introduction Formal methods of describing syntax (BNF) We can analyze syntax of a computer program on two levels: 1. Lexical level 2. Syntactic level Lexical

Mirage. Language Reference Manual. Image drawn using Mirage 1.1. Columbia University COMS W4115 Programming Languages and Translators Fall 2006

Mirage Language Reference Manual Image drawn using Mirage 1.1 Columbia University COMS W4115 Programming Languages and Translators Fall 2006 Prof. Stephen Edwards Team Members: Abhilash I ai2160@columbia.edu

Contents. Jairo Pava COMS W4115 June 28, 2013 LEARN: Language Reference Manual

Jairo Pava COMS W4115 June 28, 2013 LEARN: Language Reference Manual Contents 1 Introduction...2 2 Lexical Conventions...2 3 Types...3 4 Syntax...3 5 Expressions...4 6 Declarations...8 7 Statements...9

CA4003 Compiler Construction Assignment Language Definition

CA4003 Compiler Construction Assignment Language Definition David Sinclair 2017-2018 1 Overview The language is not case sensitive. A nonterminal, X, is represented by enclosing it in angle brackets, e.g.

Language Reference Manual simplicity

Language Reference Manual simplicity Course: COMS S4115 Professor: Dr. Stephen Edwards TA: Graham Gobieski Date: July 20, 2016 Group members Rui Gu rg2970 Adam Hadar anh2130 Zachary Moffitt znm2104 Suzanna

SMURF Language Reference Manual Serial MUsic Represented as Functions

SMURF Language Reference Manual Serial MUsic Represented as Functions Richard Townsend, Lianne Lairmore, Lindsay Neubauer, Van Bui, Kuangya Zhai {rt2515, lel2143, lan2135, vb2363, kz2219}@columbia.edu

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

A Simple Syntax-Directed Translator

Chapter 2 A Simple Syntax-Directed Translator 1-1 Introduction The analysis phase of a compiler breaks up a source program into constituent pieces and produces an internal representation for it, called

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

\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

OUTLINES. Variable names in MATLAB. Matrices, Vectors and Scalar. Entering a vector Colon operator ( : ) Mathematical operations on vectors.

1 LECTURE 3 OUTLINES Variable names in MATLAB Examples Matrices, Vectors and Scalar Scalar Vectors Entering a vector Colon operator ( : ) Mathematical operations on vectors examples 2 VARIABLE NAMES IN

CSCE 110 PROGRAMMING FUNDAMENTALS

CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 2. Overview of C++ Prof. Amr Goneid, AUC 1 Overview of C++ Prof. Amr Goneid, AUC 2 Overview of C++ Historical C++ Basics Some Library

C Language Part 1 Digital Computer Concept and Practice Copyright 2012 by Jaejin Lee

C Language Part 1 (Minor modifications by the instructor) References C for Python Programmers, by Carl Burch, 2011. http://www.toves.org/books/cpy/ The C Programming Language. 2nd ed., Kernighan, Brian,

6. Syntax Learning objectives: syntax and semantics syntax diagrams and EBNF describe context-free grammars terminal and nonterminal symbols productions definition of EBNF by itself parse tree grammars

Angela Z: A Language that facilitate the Matrix wise operations Language Reference Manual

Angela Z: A Language that facilitate the Matrix wise operations Language Reference Manual Contents Fei Liu, Mengdi Zhang, Taikun Liu, Jiayi Yan 1. Language definition 3 1.1. Usage 3 1.2. What special feature

Outline. Performing Computations. Outline (cont) Expressions in C. Some Expression Formats. Types for Operands

Performing Computations C provides operators that can be applied to calculate expressions: tax is 8.5% of the total sale expression: tax = 0.085 * totalsale Need to specify what operations are legal, how

ARG! Language Reference Manual

ARG! Language Reference Manual Ryan Eagan, Mike Goldin, River Keefer, Shivangi Saxena 1. Introduction ARG is a language to be used to make programming a less frustrating experience. It is similar to C

Review of the C Programming Language

Review of the C Programming Language Prof. James L. Frankel Harvard University Version of 11:55 AM 22-Apr-2018 Copyright 2018, 2016, 2015 James L. Frankel. All rights reserved. Reference Manual for the

Review of the C Programming Language for Principles of Operating Systems

Review of the C Programming Language for Principles of Operating Systems Prof. James L. Frankel Harvard University Version of 7:26 PM 4-Sep-2018 Copyright 2018, 2016, 2015 James L. Frankel. All rights

Operators. Java operators are classified into three categories:

Operators Operators are symbols that perform arithmetic and logical operations on operands and provide a meaningful result. Operands are data values (variables or constants) which are involved in operations.

Learning Language. Reference Manual. George Liao (gkl2104) Joseanibal Colon Ramos (jc2373) Stephen Robinson (sar2120) Huabiao Xu(hx2104)

Learning Language Reference Manual 1 George Liao (gkl2104) Joseanibal Colon Ramos (jc2373) Stephen Robinson (sar2120) Huabiao Xu(hx2104) A. Introduction Learning Language is a programming language designed

Programming in C++ 5. Integral data types

Programming in C++ 5. Integral data types! Introduction! Type int! Integer multiplication & division! Increment & decrement operators! Associativity & precedence of operators! Some common operators! Long

Decaf Language Reference

Decaf Language Reference Mike Lam, James Madison University Fall 2016 1 Introduction Decaf is an imperative language similar to Java or C, but is greatly simplified compared to those languages. It will

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

Full file at

Java Programming: From Problem Analysis to Program Design, 3 rd Edition 2-1 Chapter 2 Basic Elements of Java At a Glance Instructor s Manual Table of Contents Overview Objectives s Quick Quizzes Class

Jim Lambers ENERGY 211 / CME 211 Autumn Quarter Programming Project 4

Jim Lambers ENERGY 211 / CME 211 Autumn Quarter 2008-09 Programming Project 4 This project is due at 11:59pm on Friday, October 31. 1 Introduction In this project, you will do the following: 1. Implement

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

Principles of Programming Languages COMP251: Syntax and Grammars

Principles of Programming Languages COMP251: Syntax and Grammars Prof. Dekai Wu Department of Computer Science and Engineering The Hong Kong University of Science and Technology Hong Kong, China Fall 2007

B The SLLGEN Parsing System

B The SLLGEN Parsing System Programs are just strings of characters. In order to process a program, we need to group these characters into meaningful units. This grouping is usually divided into two stages:

FRAC: Language Reference Manual

FRAC: Language Reference Manual Justin Chiang jc4127 Kunal Kamath kak2211 Calvin Li ctl2124 Anne Zhang az2350 1. Introduction FRAC is a domain-specific programming language that enables the programmer

CSc 10200! Introduction to Computing. Lecture 2-3 Edgardo Molina Fall 2013 City College of New York

CSc 10200! Introduction to Computing Lecture 2-3 Edgardo Molina Fall 2013 City College of New York 1 C++ for Engineers and Scientists Third Edition Chapter 2 Problem Solving Using C++ 2 Objectives In this

Scheme Quick Reference

Scheme Quick Reference COSC 18 Fall 2003 This document is a quick reference guide to common features of the Scheme language. It is not intended to be a complete language reference, but it gives terse summaries

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

The Arithmetic Operators. Unary Operators. Relational Operators. Examples of use of ++ and

The Arithmetic Operators The arithmetic operators refer to the standard mathematical operators: addition, subtraction, multiplication, division and modulus. Op. Use Description + x + y adds x and y x y

Scheme Quick Reference

Scheme Quick Reference COSC 18 Winter 2003 February 10, 2003 1 Introduction This document is a quick reference guide to common features of the Scheme language. It is by no means intended to be a complete

The Arithmetic Operators

The Arithmetic Operators The arithmetic operators refer to the standard mathematical operators: addition, subtraction, multiplication, division and modulus. Examples: Op. Use Description + x + y adds x

IC Language Specification

CS 301 Spring 2016 IC Language Specification The IC Language For the implementation project, you will build a compiler for an object-oriented language called IC (for Irish Coffee 1 ), which is essentially

Dr Richard Greenaway

SCHOOL OF PHYSICS, ASTRONOMY & MATHEMATICS 4PAM1008 MATLAB 3 Creating, Organising & Processing Data Dr Richard Greenaway 3 Creating, Organising & Processing Data In this Workshop the matrix type is introduced

CLIP - A Crytographic Language with Irritating Parentheses

CLIP - A Crytographic Language with Irritating Parentheses Author: Duan Wei wd2114@columbia.edu Yi-Hsiu Chen yc2796@columbia.edu Instructor: Prof. Stephen A. Edwards July 24, 2013 Contents 1 Introduction

Twister: Language Reference Manual

Twister: Language Reference Manual Manager: Anand Sundaram (as5209) Language Guru: Arushi Gupta (ag3309) System Architect: Annalise Mariottini (aim2120) Tester: Chuan Tian (ct2698) February 23, 2017 Contents

VENTURE. Section 1. Lexical Elements. 1.1 Identifiers. 1.2 Keywords. 1.3 Literals

VENTURE COMS 4115 - Language Reference Manual Zach Adler (zpa2001), Ben Carlin (bc2620), Naina Sahrawat (ns3001), James Sands (js4597) Section 1. Lexical Elements 1.1 Identifiers An identifier in VENTURE

CS112 Lecture: Variables, Expressions, Computation, Constants, Numeric Input-Output

CS112 Lecture: Variables, Expressions, Computation, Constants, Numeric Input-Output Last revised January 12, 2006 Objectives: 1. To introduce arithmetic operators and expressions 2. To introduce variables

DaMPL. Language Reference Manual. Henrique Grando

DaMPL Language Reference Manual Bernardo Abreu Felipe Rocha Henrique Grando Hugo Sousa bd2440 flt2107 hp2409 ha2398 Contents 1. Getting Started... 4 2. Syntax Notations... 4 3. Lexical Conventions... 4

COLOGO A Graph Language Reference Manual

COLOGO A Graph Language Reference Manual Advisor: Stephen A. Edwards Shen Wang (sw2613@columbia.edu) Lixing Dong (ld2505@columbia.edu) Siyuan Lu (sl3352@columbia.edu) Chao Song (cs2994@columbia.edu) Zhou

Department of Computer Science

Department of Computer Science Definition An operator is a symbol (+,-,*,/) that directs the computer to perform certain mathematical or logical manipulations and is usually used to manipulate data and

Crayon (.cry) Language Reference Manual. Naman Agrawal (na2603) Vaidehi Dalmia (vd2302) Ganesh Ravichandran (gr2483) David Smart (ds3361)

Crayon (.cry) Language Reference Manual Naman Agrawal (na2603) Vaidehi Dalmia (vd2302) Ganesh Ravichandran (gr2483) David Smart (ds3361) 1 Lexical Elements 1.1 Identifiers Identifiers are strings used

Section we will not cover section 2.11 feel free to read it on your own

Operators Class 5 Section 2.11 we will not cover section 2.11 feel free to read it on your own Data Types Data Type A data type is a set of values and a set of operations defined on those values. in class

3. Java - Language Constructs I

Educational Objectives 3. Java - Language Constructs I Names and Identifiers, Variables, Assignments, Constants, Datatypes, Operations, Evaluation of Expressions, Type Conversions You know the basic blocks

CSE 401 Midterm Exam 11/5/10

Name There are 5 questions worth a total of 100 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. The exam is closed books, closed notes, closed

MATLIP: MATLAB-Like Language for Image Processing

COMS W4115: Programming Languages and Translators MATLIP: MATLAB-Like Language for Image Processing Language Reference Manual Pin-Chin Huang (ph2249@columbia.edu) Shariar Zaber Kazi (szk2103@columbia.edu)

Defining Program Syntax. Chapter Two Modern Programming Languages, 2nd ed. 1

Defining Program Syntax Chapter Two Modern Programming Languages, 2nd ed. 1 Syntax And Semantics Programming language syntax: how programs look, their form and structure Syntax is defined using a kind

Expr Language Reference

Expr Language Reference Expr language defines expressions, which are evaluated in the context of an item in some structure. This article describes the syntax of the language and the rules that govern the

Operators and Expressions in C & C++ Mahesh Jangid Assistant Professor Manipal University, Jaipur

Operators and Expressions in C & C++ Mahesh Jangid Assistant Professor Manipal University, Jaipur Operators and Expressions 8/24/2012 Dept of CS&E 2 Arithmetic operators Relational operators Logical operators

Declaration and Memory

Declaration and Memory With the declaration int width; the compiler will set aside a 4-byte (32-bit) block of memory (see right) The compiler has a symbol table, which will have an entry such as Identifier

String Computation Program

String Computation Program Reference Manual Scott Pender scp2135@columbia.edu COMS4115 Fall 2012 10/31/2012 1 Lexical Conventions There are four kinds of tokens: identifiers, keywords, expression operators,

Reference Grammar Meta-notation: hfooi means foo is a nonterminal. foo (in bold font) means that foo is a terminal i.e., a token or a part of a token.

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2002 Handout 6 Decaf Language Definition Wednesday, September 4 The project for the 12-unit flavor

2.2 Order of Operations

2.2 Order of Operations Learning Objectives Evaluate algebraic expressions with grouping symbols. Evaluate algebraic expressions with fraction bars. Evaluate algebraic expressions using a graphing calculator.

GAWK Language Reference Manual

GAWK Language Reference Manual Albert Cui, Karen Nan, Mei-Vern Then, & Michael Raimi So good, you re gonna GAWK. 1.0 Introduction This manual describes the GAWK language and is meant to be used as a reliable

XQ: An XML Query Language Language Reference Manual

XQ: An XML Query Language Language Reference Manual Kin Ng kn2006@columbia.edu 1. Introduction XQ is a query language for XML documents. This language enables programmers to express queries in a few simple

Expression Evaluation and Control Flow. Outline

Expression Evaluation and Control Flow In Text: Chapter 6 Outline Notation Operator Evaluation Order Operand Evaluation Order Overloaded operators Type conversions Short-circuit evaluation of conditions

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

Chapter 3: Operators, Expressions and Type Conversion

101 Chapter 3 Operators, Expressions and Type Conversion Chapter 3: Operators, Expressions and Type Conversion Objectives To use basic arithmetic operators. To use increment and decrement operators. To

YOLOP Language Reference Manual

YOLOP Language Reference Manual Sasha McIntosh, Jonathan Liu & Lisa Li sam2270, jl3516 and ll2768 1. Introduction YOLOP (Your Octothorpean Language for Optical Processing) is an image manipulation language

SECTION II: LANGUAGE BASICS

Chapter 5 SECTION II: LANGUAGE BASICS Operators Chapter 04: Basic Fundamentals demonstrated declaring and initializing variables. This chapter depicts how to do something with them, using operators. Operators

EXPRESSIONS AND ASSIGNMENT CITS1001

EXPRESSIONS AND ASSIGNMENT CITS1001 Scope of this lecture Assignment statements Expressions ASSIGNMENT STATEMENT Assignment Statements!!!mark = 50;!! Read as the value in variable on the LHS becomes equal

Overview: Programming Concepts. Programming Concepts. Names, Values, And Variables

Chapter 18: Get With the Program: Fundamental Concepts Expressed in JavaScript Fluency with Information Technology Third Edition by Lawrence Snyder Overview: Programming Concepts Programming: Act of formulating

Overview: Programming Concepts. Programming Concepts. Chapter 18: Get With the Program: Fundamental Concepts Expressed in JavaScript

Chapter 18: Get With the Program: Fundamental Concepts Expressed in JavaScript Fluency with Information Technology Third Edition by Lawrence Snyder Overview: Programming Concepts Programming: Act of formulating

c) Comments do not cause any machine language object code to be generated. d) Lengthy comments can cause poor execution-time performance.

2.1 Introduction (No questions.) 2.2 A Simple Program: Printing a Line of Text 2.1 Which of the following must every C program have? (a) main (b) #include (c) /* (d) 2.2 Every statement in C

flex is not a bad tool to use for doing modest text transformations and for programs that collect statistics on input.

flex is not a bad tool to use for doing modest text transformations and for programs that collect statistics on input. More often than not, though, you ll want to use flex to generate a scanner that divides

Full file at C How to Program, 6/e Multiple Choice Test Bank

2.1 Introduction 2.2 A Simple Program: Printing a Line of Text 2.1 Lines beginning with let the computer know that the rest of the line is a comment. (a) /* (b) ** (c) REM (d)

Chapter 2. Lexical Elements & Operators

Chapter 2. Lexical Elements & Operators Byoung-Tak Zhang TA: Hanock Kwak Biointelligence Laboratory School of Computer Science and Engineering Seoul National Univertisy http://bi.snu.ac.kr The C System

Operators in C. Staff Incharge: S.Sasirekha

Operators in C Staff Incharge: S.Sasirekha Operators An operator is a symbol which helps the user to command the computer to do a certain mathematical or logical manipulations. Operators are used in C

Unit 3. Operators. School of Science and Technology INTRODUCTION

INTRODUCTION Operators Unit 3 In the previous units (unit 1 and 2) you have learned about the basics of computer programming, different data types, constants, keywords and basic structure of a C program.

Basics of Programming

Unit 2 Basics of Programming Problem Analysis When we are going to develop any solution to the problem, we must fully understand the nature of the problem and what we want the program to do. Without the

XC Specification. 1 Lexical Conventions. 1.1 Tokens. The specification given in this document describes version 1.0 of XC.

XC Specification IN THIS DOCUMENT Lexical Conventions Syntax Notation Meaning of Identifiers Objects and Lvalues Conversions Expressions Declarations Statements External Declarations Scope and Linkage

CHAD Language Reference Manual

CHAD Language Reference Manual INTRODUCTION The CHAD programming language is a limited purpose programming language designed to allow teachers and students to quickly code algorithms involving arrays,

Visual C# 2005 2-1 Chapter 2 Using Data At a Glance Instructor s Manual Table of Contents Overview Objectives s Quick Quizzes Class Discussion Topics Additional Projects Additional Resources Key Terms

Prefix/Infix/Postfix Notation

Prefix/Infix/Postfix Notation One commonly writes arithmetic expressions, such as 3 + 4 * (5-2) in infix notation which means that the operator is placed in between the two operands. In this example, the