diff options
| author | Charles.Forsyth <devnull@localhost> | 2006-12-22 20:52:35 +0000 |
|---|---|---|
| committer | Charles.Forsyth <devnull@localhost> | 2006-12-22 20:52:35 +0000 |
| commit | 46439007cf417cbd9ac8049bb4122c890097a0fa (patch) | |
| tree | 6fdb25e5f3a2b6d5657eb23b35774b631d4d97e4 /doc/limbo/synsum | |
| parent | 37da2899f40661e3e9631e497da8dc59b971cbd0 (diff) | |
20060303-partial
Diffstat (limited to 'doc/limbo/synsum')
| -rw-r--r-- | doc/limbo/synsum | 335 |
1 files changed, 335 insertions, 0 deletions
diff --git a/doc/limbo/synsum b/doc/limbo/synsum new file mode 100644 index 00000000..c0270d9f --- /dev/null +++ b/doc/limbo/synsum @@ -0,0 +1,335 @@ +.s1 +program: + Cimplement Iidentifier-listC ; Itop-declaration-sequence +.s2 +.s1 +top-declaration-sequence: + top-declaration + top-declaration-sequence top-declaration +.s2 +.s1 +top-declaration: + declaration + identifier-listC := IexpressionC ;I + identifier-listC = IexpressionC ;I + C( Iidentifier-listC ) := IexpressionC ;I + module-declaration + function-definition + adt-declaration +.s2 +.s1 +declaration: + identifier-listC : ItypeC ;I + identifier-listC : ItypeC = IexpressionC ;I + identifier-listC : con IexpressionC ;I + Iidentifier-listC : import Iidentifier C;I + identifier-listC : typeI typeC ;I + identifier-listC : exceptionI tuple-typeO + Cinclude Istring-constantC ;I +.s2 +.s1 +identifier-list: + identifier + identifier-listC , Iidentifier +.s2 +.s1 +expression-list: + expression + expression-listC , Iexpression +.s2 +.s1 +type: + data-type + function-type +.s2 +.s1 +data-type: + CbyteI + CintI + CbigI + CrealI + CstringI + tuple-type + Carray of Idata-type + Clist of Idata-type + Cchan of Idata-type + adt-type + Cref Iadt-type + Cref Ifunction-type + module-type + module-qualified-type + type-name +.s2 +.s1 +tuple-type: + C( Idata-type-listC )I +.s2 +.s1 +data-type-list: + data-type + data-type-list C,I data-type +.s2 +.s1 +adt-type: + identifier + module-qualified-type +.s2 +.s1 +module-type: + identifier +.s2 +.s1 +module-qualified-type: + identifier C->I identifier +.s2 +.s1 +type-name: + identifier +.s2 +.s1 +function-type: + Cfn Ifunction-arg-ret +.s2 +.s1 +function-arg-ret: + C( Iformal-arg-listOC ) IraisesO + C( Iformal-arg-listOC ) : Idata-type raisesO +.s2 +.s1 +formal-arg-list: + formal-arg + formal-arg-listC , Iformal-arg +.s2 +.s1 +formal-arg: + nil-or-ID-listC : Itype + nil-or-IDC : self refO Iidentifier + nil-or-IDC : self Iidentifier + C*I +.s2 +.s1 +nil-or-ID-list: + nil-or-ID + nil-or-ID-list C, Inil-or-ID +.s2 +.s1 +nil-or-ID: + identifier + CnilI +.s2 +.s1 +raises: + Craises ( Inil-or-ID-listC )I + CraisesI nil-or-ID +.s2 +.s1 +module-declaration: + IidentifierC : module { Imod-member-listOC } ;I +.s2 +.s1 +mod-member-list: + mod-member + mod-member-list mod-member +.s2 +.s1 +mod-member: + identifier-listC : Ifunction-typeC ;I + identifier-listC : Idata-typeC ;I + adt-declarationC I + identifier-listC : con Iexpression C;I + identifier-listC : type Itype C;I +.s2 +.s1 +adt-declaration: + IidentifierC : adt { Iadt-member-listOC } ;I +.s2 +.s1 +adt-member-list: + adt-member + adt-member-list adt-member +.s2 +.s1 +adt-member: + identifier-listC : cyclicO Idata-typeC ;I + identifier-listC : con IexpressionC ;I + identifier-listC : Ifunction-typeC ;I + Cpick { Ipick-member-listC }I +.s2 +.s1 +pick-member-list: + pick-tag-listC =>I + pick-member-list pick-tag-listC =>I + pick-member-list identifier-listC : cyclicO Idata-typeC ;I +.s2 +.s1 +pick-tag-list: + identifier + pick-tag-listC or Iidentifier +.s2 +.s1 +function-definition: + function-name-part function-arg-retC { IstatementsC }I +.s2 +.s1 +function-name-part: + identifier + function-name-partC . Iidentifier +.s2 +.s1 +statements: + (empty) + statements declaration + statements statement +.s2 +.s1 +statement: + expressionC ;I + C;I + C{ IstatementsC }I + Cif ( IexpressionC ) Istatement + Cif ( IexpressionC ) IstatementC else Istatement + labelO Cwhile ( IexpressionOC ) Istatement + labelO Cdo IstatementC while ( IexpressionOC ) ;I + labelO Cfor ( IexpressionOC ; IexpressionOC ; IexpressionOC ) Istatement + labelO Ccase IexpressionC { Iqual-statement-sequenceC }I + labelO Calt { Iqual-statement-sequenceC }I + labelO Cpick IidentifierC := IexpressionC { Ipqual-statement-sequenceC }I + Cbreak IidentifierOC ;I + Ccontinue IidentifierOC ;I + Creturn IexpressionOC ;I + Cspawn ItermC ( Iexpression-listOC ) ;I + Cexit ;I + Craise IexpressionOC ;I + C{ IstatementsC } exceptionI identifierOC{ Iqual-statement-sequenceC }I +.s2 +.s1 +label: + identifier C:I +.s2 +.s1 +qual-statement-sequence: + qual-listC =>I + qual-statement-sequence qual-listC =>I + qual-statement-sequence statement + qual-statement-sequence declaration +.s2 +.s1 +qual-list: + qualifier + qual-listC or Iqualifier +.s2 +.s1 +qualifier: + expression + expressionC to Iexpression + C*I +.s2 +.s1 +pqual-statement-sequence: + pqual-listC =>I + pqual-statement-sequence pqual-listC =>I + pqual-statement-sequence statement + pqual-statement-sequence declaration +.s2 +.s1 +pqual-list: + pqualifier + pqual-listC or Ipqualifier +.s2 +.s1 +pqualifier: + identifier + C*I +.s2 +.s1 +expression: + binary-expression + lvalue-expression assignment-operator expression + C( Ilvalue-expression-listC ) = Iexpression + send-expression + declare-expression + load-expression +.s2 +.s1 +binary-expression: + monadic-expression + binary-expression binary-operator binary-expression +.s2 +.s1 +binary-operator: one of + C** * / % + - << >> < > <= >= == != & ^ | :: && ||I +.s2 +.s1 +assignment-operator: one of + C= &= |= ^= <<= >>= += -= *= /= %=I +.s2 +.s1 +lvalue-expression: + identifier + CnilI + termC [ IexpressionC ]I + termC [ IexpressionC : ]I + termC . Iidentifier + C( Ilvalue-expression-listC )I + C* Imonadic-expression +.s2 +.s1 +lvalue-expression-list: + lvalue-expression + lvalue-expression-listC , Ilvalue-expression +.s2 +.s1 +expression: + term + monadic-operator monadic-expression + Carray [ IexpressionC ] of Idata-type + Carray [ IexpressionOC ] of { Iinit-listC }I + Clist of { Iexpression-listC }I + Cchan of Idata-type + Cchan [ IexpressionOC ] of Idata-type + data-type monadic-expression +.s2 +.s1 +term: + identifier + constant + real-constant + string-constant + CnilI + C( Iexpression-listC )I + termC . Iidentifier + termC -> Iterm + termC ( Iexpression-listOC )I + termC [ IexpressionC ]I + termC [ IexpressionC : IexpressionC ]I + termC [ IexpressionC : ]I + termC ++I + termC --I +.s2 +.s1 +monadic-operator: one of + C+ - ! ~ ref * ++ -- <- hd tl len tagofI +.s2 +.s1 +init-list: + element + init-listC , Ielement +.s2 +.s1 +element: + expression + expressionC => Iexpression + C* => Iexpression +.s2 +.s1 +send-expression: + lvalue-expressionC <- = Iexpression +.s2 +.s1 +declare-expression: + lvalue-expressionC := Iexpression +.s2 +.s1 +load-expression: + Cload Iidentifier expression +.s2 |
