代做Language Feature代做迭代

Language Feature

The user manual of this language is listed.

Keywords:

· “let”: initiates a variable declaration.

· “be”: acts as the assignment operator in other programming language.

· “int”: specifies the variable is of integer type during its declaration.

· “set”: specifies the variable is of set type during its declaration.

· “show”: acts as the main function in other programming languages, which initialize a calculation.

Data types:

· Integer:

o Basic data type

o A single-digit integer is an arbitrary decimal number.

o A multi-digit integer starts with a non-zero decimal number and followed by any sequence of arbitrary decimal numbers.

o Users can only declare non-negative integers. Negative integers are constructed through subtraction operations. 

· Arithmetic expression:

o Constructed data type

o Users are not allowed to declare an arithmetic expression. There is no specific data type keyword for arithmetic expressions in the language. This data type only exists in the compiler. You can also check the keywords. There is no data type keyword for arithmetic expressions.

o An atomic arithmetic expression is either an integer constant or an integer variable.

o A compound arithmetic expression consists of two arithmetic expressions connected by an arithmetic operator (addition “+”, subtraction “-”, multiplication “*”). And parentheses are used to define substructures within expression. For example,

1 + 2 – 3 * 4

is parsed as:

( 1 + 2 ) - ( 3 * 4 )

· Predicates

o Constructed data type

o Same as arithmetic expression, predicates are not directly declared by users but are instead managed within the compiler.

o An atomic predicate is a relational comparison, which can be of two types:

Integer value comparison: involving the comparison of two integers using relational operator less than (“<”), greater than (“>”), or equality (“=”); or

Membership testing: used to determine if an element is a member of a set using the membership operator “@”.

o A compound predicate is formed by combining “smaller” predicates (either atomic or compound) using logical operators:

Binary logical operators: two (atomic or compound) predicates connected by a conjunction (“&”) or disjunction (“|”)

Unary logical operators: Negation (“!”) which precedes another predicate.

For example,

P & Q

and

! R

where P, Q, and R are predicates.

o Parentheses are also used to define substructures in predicates. Parentheses are essential for defining the precedence and grouping of operations within predicates, ensuring the correct evaluation of complex expressions.

· Bool:

o Basic data type

Cannot be declared by users

o Has only two constants: “true” and “false”

o A Boolean is produced by the evaluation on a predication without uninitialized variables. For example,

x > 5

is a predicate if variable x has not been initialized. But if x has been initialized as 3 previously, then the predicate becomes

3 > 5

and can be evaluated to be Boolean “false”. The behavior. of “>” will be explained later in this document.

· Set:

o Constructed data type

o Can be declared by users

o A set is defined in using this syntax within the language

{ x : P(x) }

where

- a set defnition is enclosed within curly braces “{ }”;

- “x” is a variable name called representative, whose scope is limited within this set definition;

- “:” is another punctuation separating the representative x from the rest part of the definition;

- “P(x)” is a predicate that applies to the variable x, serving as the characteristic function of the set, which performs a logical test on x. If P(x) evaluates to true, then x is an element of the set; otherwise, x is not in the set.

o This project focuses solely on sets of integers. Other types of sets, such as sets of strings, pairs, or sets of sets are not included. This limitation is intentional, aiming to simplify the implementation process. Goliath is trying to make your life easy!

· Void:

o Basic data type

Cannot be declared by users

o For subexpressions without any type

Identifier: arbitrary strings of English letters in lower case and are not reserved by keywords.

Operators:

· Arithmetic operators:

o “+”: integer addition, calculates the sum of two integers

o “-”: integer subtraction, calculates the difference of two integers

o “*”: integer multiplication, calculates the product of two integers

o Multiplication has the highest precedence. Addition and subtraction have equal precedence, which is lower than multiplication.

· Relational operators (for integers):

o “<” (Less Than): returns “true” if the left-hand side integer is less than the integer on the right-hand side

o “>” (Greater Than): returns “true” if the integer on the left-hand side is greater than the integer on the right-hand side integer

o “=”: (Equal), returns “true” if the integer on the left-hand side is equal to the integer on the right-hand side integer

· Relational operator (membership):

o “@”: This operator checks if the element on the left-hand side is a member of the set on the right-hand side. It returns “true” if the element is in set, otherwise it returns “false”.

· Logical operators:

o conjunction “&”, disjunction “|”, and negation “!” are behaved as the following.

Truth Tables for Logical Operators:

&

true

false

 

|

true

false

 

 

 

 

true

true

false

 

true

true

true

 

x

true

false

false

false

false

 

false

true

false

 

!x

false

true

Conjunction table

 

Disjunction table

 

Negation table

o Negation has the highest precedence, then conjunction, and then disjunction. 

· Set operators:

o “I”: set intersection, calculates the intersection of two sets

o “U”: set union, calculate the union of two sets

o Intersection has a higher precedence than union. 

Sentences:

· Each source code contains zero, one, or multiple variable declaration(s); and exactly one calculation expression.

· Each variable declaration is in the following syntax

let T id be E .

where

o T is a type name (either int or set),

o id is a variable identifier,

o E is an expression that assigns a value (a set definition is also a “value”, even it is not a number) of the specific type to the variable.

o The period “.” Marks the end of the declaration.

For example,

let int a be 5 .

defines an integer a whose value is 5. And

let set s be { x : x = 5 } .

defines a set s which contains only one integer 5. 

· A calculation expression starts with keyword “show” and followed by an algebraic expression, which can be an arithmetic expression, a Boolean expression (a predicate with all variables initialized), or a set algebra expression. A calculation expression is also ended by a full stop “.”. For example,

o To calculates the union of sets S1 and S2:  show S1 U S2 .

o To calculates the sum of integers 1 and 2: show 1 + 2 .

o To test if integer 3 in S1 or not: show 3 @ S1 . 

Output: After the calculation, the program prints the outcome on the screen (type and value). (see the examples below). For set operators, the “show” statement does not simplify the characteristic function. For example,

show { x : x > 3 } U { x : x > 5 } .

will output

{ x : ( x > 3 ) | ( x > 5 ) }

rather than

{ x : x > 3 }

even though the two sets are equivalent. This requirement will make this project easy. The simplification of predicates is an advanced feature and will be a bonus and explained later.



热门主题

课程名

mktg2509 csci 2600 38170 lng302 csse3010 phas3226 77938 arch1162 engn4536/engn6536 acx5903 comp151101 phl245 cse12 comp9312 stat3016/6016 phas0038 comp2140 6qqmb312 xjco3011 rest0005 ematm0051 5qqmn219 lubs5062m eee8155 cege0100 eap033 artd1109 mat246 etc3430 ecmm462 mis102 inft6800 ddes9903 comp6521 comp9517 comp3331/9331 comp4337 comp6008 comp9414 bu.231.790.81 man00150m csb352h math1041 eengm4100 isys1002 08 6057cem mktg3504 mthm036 mtrx1701 mth3241 eeee3086 cmp-7038b cmp-7000a ints4010 econ2151 infs5710 fins5516 fin3309 fins5510 gsoe9340 math2007 math2036 soee5010 mark3088 infs3605 elec9714 comp2271 ma214 comp2211 infs3604 600426 sit254 acct3091 bbt405 msin0116 com107/com113 mark5826 sit120 comp9021 eco2101 eeen40700 cs253 ece3114 ecmm447 chns3000 math377 itd102 comp9444 comp(2041|9044) econ0060 econ7230 mgt001371 ecs-323 cs6250 mgdi60012 mdia2012 comm221001 comm5000 ma1008 engl642 econ241 com333 math367 mis201 nbs-7041x meek16104 econ2003 comm1190 mbas902 comp-1027 dpst1091 comp7315 eppd1033 m06 ee3025 msci231 bb113/bbs1063 fc709 comp3425 comp9417 econ42915 cb9101 math1102e chme0017 fc307 mkt60104 5522usst litr1-uc6201.200 ee1102 cosc2803 math39512 omp9727 int2067/int5051 bsb151 mgt253 fc021 babs2202 mis2002s phya21 18-213 cege0012 mdia1002 math38032 mech5125 07 cisc102 mgx3110 cs240 11175 fin3020s eco3420 ictten622 comp9727 cpt111 de114102d mgm320h5s bafi1019 math21112 efim20036 mn-3503 fins5568 110.807 bcpm000028 info6030 bma0092 bcpm0054 math20212 ce335 cs365 cenv6141 ftec5580 math2010 ec3450 comm1170 ecmt1010 csci-ua.0480-003 econ12-200 ib3960 ectb60h3f cs247—assignment tk3163 ics3u ib3j80 comp20008 comp9334 eppd1063 acct2343 cct109 isys1055/3412 math350-real math2014 eec180 stat141b econ2101 msinm014/msing014/msing014b fit2004 comp643 bu1002 cm2030
联系我们
EMail: 99515681@qq.com
QQ: 99515681
留学生作业帮-留学生的知心伴侣!
工作时间:08:00-21:00
python代写
微信客服:codinghelp
站长地图