CS计算机代考程序代写 add more handouts and update index

add more handouts and update index

mhe authored 1 month ago

ConcreteSyntax.md 1.15 KB

Concrete syntax

Here is a grammar for our language, written in BNF, where expressions with lower numbers describe operators with lower precedence. The grammar is

ambiguous regarding else . We resolve the ambiguity by associating else ‘s to the closest if ‘s to the left.

Program ::= Identifier := Expr;

| { [Program] }

| while (Expr) Program

| if (Expr) Program

| if (Expr) Program else Program

Expr ::= Expr1 | Expr1 OrOp Expr

Expr1 ::= Expr2 | Expr2 AndOp Expr1

Expr2 ::= Expr3 | Expr3 EqOp Expr2

Expr3 ::= Expr4 | Expr4 CompOp Expr3

Expr4 ::= Expr5 | Expr5 AddOp Expr4

Expr5 ::= Expr6 | Expr6 MulOp Expr5

Expr6 ::= Expr7 | NotOp Expr6

Expr7 ::= Constant | Identifier | (Expr)

OrOp ::= ||

AndOp ::= &&

EqOp ::= ==

CompOp ::= <= | < | >= | >

AddOp ::= + | –

MulOp ::= * | / | %

NotOp ::= !

We will use monadic parsing (please read chapter 13 of the book) to convert from concrete syntax to abstract syntax.

Next: Abstract syntax

7845144f