19.11.2014 Views

The Fortress Language Specification - CiteSeerX

The Fortress Language Specification - CiteSeerX

The Fortress Language Specification - CiteSeerX

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Value ::= Literal<br />

| fn ValParam [IsType] [Throws] ⇒ Expr<br />

| object [Extends] (FldDef | MdDef ) ∗ end<br />

| Aggregate<br />

| LeftEncloser ExprList RightEncloser<br />

DottedName ::= DottedId<br />

| opr Op<br />

ExprList ::= Expr ( , Expr) ∗<br />

AssignOp ::= := | Op =<br />

Do ::= do BlockElem ∗ end<br />

| do BlockElem + also Do<br />

| at Expr Do<br />

BlockElem ::= Expr[ , GeneratorList]<br />

| LocalVarFnDecl<br />

GeneratorList ::= Generator ( , Generator) ∗<br />

Generator ::= Id ← Expr<br />

| ( Id , IdList ) ← Expr<br />

| Expr<br />

IdList ::= Id<br />

∑<br />

( ,<br />

∏<br />

Id) ∗<br />

Accumulator ::= | | BIG Op<br />

Else ::= else Expr +<br />

TypecaseBindings ::= Id<br />

| Binding<br />

| ( BindingList )<br />

Binding ::= Id = Expr<br />

BindingList ::= Binding (, Binding) ∗<br />

TypecaseTypeRefs ::= TypeRef<br />

| ( TypeRefList )<br />

Aggregate ::= { [ExprList] }<br />

| { EntryList }<br />

| 〈 [ExprList] 〉<br />

| [ (Expr | ; ) ∗ ]<br />

| (Expr(,Expr) + )<br />

| ([Expr( , Expr) ∗ , ] Expr ... )<br />

| ([Expr( , Expr) ∗ , ] [Expr ... , ] Id = Expr ( , Id = Expr) ∗ )<br />

EntryList ::= Entry ( , Entry) ∗<br />

Entry ::= Expr ↦→ Expr<br />

Comprehension ::= { Expr | GeneratorList }<br />

| { Expr ↦→ Expr | GeneratorList }<br />

| 〈 Expr | GeneratorList 〉<br />

| [ (ArrayComprehensionLeft | GeneratorList) + ]<br />

ArrayComprehensionLeft ::= Id ↦→ Expr<br />

| ( Id , IdList ) ↦→ Expr<br />

LocalVarFnDecl ::= LocalVarDecl<br />

| Id ValParam [IsType] [Throws] = Expr<br />

LocalVarDecl ::= LocalVars ( = | := ) Expr<br />

| LocalVarWTypes<br />

| LocalVarWoTypes : TypeRef ... [( = | := ) Expr]<br />

| LocalVarWoTypes : SimpleTupleType [( = | := ) Expr]<br />

LocalVars ::= LocalVar<br />

| ( LocalVar (, LocalVar) + )<br />

LocalVar ::= LocalVarWType<br />

| LocalVarWoType<br />

381

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!