RU beehive logo ITEC dept promo banner
ITEC 380
2020fall
ibarland

Interpreting X
(as chosen in class)

The language X0

  X0:
  Expr       ::= Num | Paren | BinOp | IfZero
  Paren      ::= [ Expr ]                            Interpretation: a parenthesized expression
  BinOp      ::= ~ Expr Op Expr !                    Interpretation: apply a binary operator  
  Op         ::= add | sub | mlt                   Interpretation: addition, subtraction, multiplication (resp.) 
  IfZero     ::= if0 Expr thn Expr els Expr ;        Interpretation: if 1st expr is zero, answer is the 2nd expr, else use the 3rd expr
  
  


where Num is any numeric literal (as written in either Java or Racket, your choice1). For the provided parsers to work, whitespace is required between all terminals with the exception of punctuation.

Semantics (interpretation):


Discussion


Where we're headed

X0 Implementations


Discuss the implementation

Once we've talked in class about internal-representation (and given examples of the W programs and corresponding internal-data), then we can discuss the provided-implementation, including recursive-descent parsing:

2018 version: The videos below are based on 2018fall's language, T0. So details of the syntax are different than this semester, and some statements might have different semantics, but overall the content is extremely similar to this semester's language.


1 This is so we can just use our language's built-in number-parsing functions, without getting bogged down in tokening input. So racket implementations will allow exactly those strings recognized by number?, (including +nan.0, -inf.0, and 2+3i).

Similarly, if using Java, the semantics of X0's arithmetic will be similar to IEEE floating point arithmetic (rather than perfectly-correct arithmetic).

Don't confuse X0's class Num (which extends Expr) with the existing java.lang.Number, which doesn't extend Expr.

     

logo for creative commons by-attribution license
This page licensed CC-BY 4.0 Ian Barland
Page last generated
Please mail any suggestions
(incl. typos, broken links)
to ibarlandradford.edu
Rendered by Racket.