电子工程代写|编译器代写Compilers代考|Syntax Definition

In this section, we introduce a notation – the “context-free grammar,” or “grammar” for short – that is used to specify the synt ax of a language. Grammars will be used throughout this book to org anize compiler front en ds.

A grammar naturally describes the hier archical structure of most programming language constructs. For example, an if-else statement in Java can have the form
if ( expression) statement else statement
That is, an if-else statement is the con catenation of the keywor $d$ if, an opening parenthesis, an expression, a closing parenthesis, a statement, the keyword else, and another statement. Using the variable expr to denote an expression and the variable stmt to denote a statement, this structuring rule can be expressed as
$s t m t \rightarrow$ if ( expr ) stmt else stm $t$
in which the arrow may be read as “can have the form.” Such a rule is called a production. In a production, lexical element s like the keywor $\mathrm{d}$ if and the parentheses are called terminals. Variables like expr and stmt represent sequences of terminals and are called nonterminals.

电子工程代写|编译器代写Compilers代考|Associativity of Operators

By convention, $9+5+2$ is equivalent to $(9+5)+2$ and $9-5-2$ is equivalent to $(9-5)-2$. When an operand like 5 has operators to its left and right, conventions are needed for deciding which operator applies to that operand. We say that the oper ator $+$ associates to the left, because an oper and with plus signs on both sides of it belongs to the operator to its left. In most programming languages the four arithmetic oper ators, addition, subtraction, multiplication, and division are left-asso ciative.

Some common operators such as exponentiation are right-associative. As another example, the assignment oper ator $=$ in $\mathrm{C}$ and it s descendants is rightassociative; that is, the expression $a=b=c$ is treated in the same way as the expression $a=(b=c)$.

Strings like $a=b=c$ with a right-associative operator are generated by the following grammar:
right $\rightarrow$ letter $=$ right $\mid$ letter
letter $\rightarrow$ a $|\mathrm{b}| \cdots \mid \mathrm{z}$
The contrast between a parse tree for a left-asso ciative operator like – and a parse tree for a right-associative operator like $=$ is shown by Fig, 2.7. Note that the parse tree for 9-5-2 grows down towards the left, whereas the parse tree for $a=b=c$ grows down towards the right.

电子工程代写|编译器代写Compilers代考|Syntax Definition

if (表达式) 语句 else 语句的形式
，即 if-else 语句是关键字的串联dif、左括号、表达式、右括号、语句、关键字 else 和另一个语句。用变量 expr 表示表达式，用变量 stmt 表示语句，这个结构化规则可以表示为
s吨米吨→if ( expr ) stmt else stm吨

电子工程代写|编译器代写Compilers代考|Associativity of Operators

right→信=正确的∣信函
_→一个|b|⋯∣和

myassignments-help数学代考价格说明

1、客户需提供物理代考的网址，相关账户，以及课程名称，Textbook等相关资料~客服会根据作业数量和持续时间给您定价~使收费透明，让您清楚的知道您的钱花在什么地方。

2、数学代写一般每篇报价约为600—1000rmb，费用根据持续时间、周作业量、成绩要求有所浮动(持续时间越长约便宜、周作业量越多约贵、成绩要求越高越贵)，报价后价格觉得合适，可以先付一周的款，我们帮你试做，满意后再继续，遇到Fail全额退款。

3、myassignments-help公司所有MATH作业代写服务支持付半款，全款，周付款，周付款一方面方便大家查阅自己的分数，一方面也方便大家资金周转，注意:每周固定周一时先预付下周的定金，不付定金不予继续做。物理代写一次性付清打9.5折。

Math作业代写、数学代写常见问题

myassignments-help擅长领域包含但不是全部: