[Swift-commit] r6402 - trunk/docs/merged/refmanual

ketan at ci.uchicago.edu ketan at ci.uchicago.edu
Tue Mar 19 14:15:33 CDT 2013


Author: ketan
Date: 2013-03-19 14:15:33 -0500 (Tue, 19 Mar 2013)
New Revision: 6402

Modified:
   trunk/docs/merged/refmanual/grammar
Log:
formatting and organizing grammar spec

Modified: trunk/docs/merged/refmanual/grammar
===================================================================
--- trunk/docs/merged/refmanual/grammar	2013-03-19 15:56:20 UTC (rev 6401)
+++ trunk/docs/merged/refmanual/grammar	2013-03-19 19:15:33 UTC (rev 6402)
@@ -1,6 +1,7 @@
 == Swift Language Grammar
 
 The specification for a SwiftScript program
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ----
 program:
     (namespace_dec[code])*   
@@ -11,6 +12,7 @@
 ----
 
 Namespace Declaration
+~~~~~~~~~~~~~~~~~~~~~~
 ----
 namespace_dec [StringTemplate code]
 {StringTemplate ns=template("nsDef");}:
@@ -24,6 +26,7 @@
 ----
 
 The import statement
+~~~~~~~~~~~~~~~~~~~~
 ----
 importStatement [StringTemplate code] :
 "import" name:STRING_LITERAL SEMI {
@@ -35,6 +38,7 @@
 ----
 
 Type Declaration
+~~~~~~~~~~~~~~~~~
 ----
 typedecl [StringTemplate code]
 {StringTemplate r=template("typeDef");
@@ -57,53 +61,44 @@
 ----
 
 Structure declaration
+~~~~~~~~~~~~~~~~~~~~~~
 ----
 structdecl [StringTemplate code]
 {StringTemplate e=null, e1=null, t=null; String thisType = null;} :
-    LCURLY
-    (t=type id:ID
-    {
-    thisType = (String) t.getAttribute("name");
-    e=template("memberdefinition");
-    e.setAttribute("name", id.getText());
+    LCURLY (t=type id:ID {
+        thisType = (String) t.getAttribute("name");
+        e=template("memberdefinition");
+        e.setAttribute("name", id.getText());
     }
-    (LBRACK RBRACK { thisType = thisType + "[]"; })*
-    {
-      StringTemplate thisTypeTemplate;
-      thisTypeTemplate=template("type");
-      thisTypeTemplate.setAttribute("name", thisType);
-      e.setAttribute("type", thisTypeTemplate);
-      code.setAttribute("members", e);
+    (LBRACK RBRACK { thisType = thisType + "[]"; })* {
+        StringTemplate thisTypeTemplate;
+        thisTypeTemplate=template("type");
+        thisTypeTemplate.setAttribute("name", thisType);
+        e.setAttribute("type", thisTypeTemplate);
+        code.setAttribute("members", e); 
     }
-    (
-        COMMA
-        id1:ID
-        {
-        thisType = (String) t.getAttribute("name");
-        e1=template("memberdefinition");
-        e1.setAttribute("name", id1.getText());
+    ( COMMA
+        id1:ID {
+            thisType = (String) t.getAttribute("name");
+            e1=template("memberdefinition");
+            e1.setAttribute("name", id1.getText());
         }
-        (LBRACK RBRACK { thisType = thisType + "[]"; })*
-        {
-           StringTemplate thisTypeTemplate;
-           thisTypeTemplate=template("type");
-           thisTypeTemplate.setAttribute("name", thisType);
-           e1.setAttribute("type", thisTypeTemplate);
-           code.setAttribute("members", e1);
-         }
-    )*
-    SEMI
-    )*
-    RCURLY
-    (options {
+        (LBRACK RBRACK { thisType = thisType + "[]"; })* {
+            StringTemplate thisTypeTemplate;
+            thisTypeTemplate=template("type");
+            thisTypeTemplate.setAttribute("name", thisType);
+            e1.setAttribute("type", thisTypeTemplate);
+            code.setAttribute("members", e1);
+         })*
+    SEMI)*
+    RCURLY (options {
        warnWhenFollowAmbig = false;
-     }
-    :SEMI
-    )?
+     } :SEMI)?
     ;
 ----
 
 Top level statement
+~~~~~~~~~~~~~~~~~~~
 ----
 topLevelStatement[StringTemplate code]
 {StringTemplate d=null; } :
@@ -152,7 +147,8 @@
 ----
 
 
-Predicate Declaration
+Predict Declaration
+~~~~~~~~~~~~~~~~~~~
 ----
 predictDeclaration {StringTemplate x,y;} : ("global") | (x=type y=declarator) ;
 
@@ -168,6 +164,7 @@
 ----
 
 Declaration part
+~~~~~~~~~~~~~~~~
 ----
 declpart [StringTemplate code, StringTemplate t, boolean isGlobal]
     {
@@ -217,6 +214,7 @@
 ----
 
 Variable Declarator
+~~~~~~~~~~~~~~~~~~~
 ----
 variableDecl [StringTemplate code, StringTemplate t, StringTemplate d, StringTemplate v1]
 {StringTemplate i1=null, m=null;
@@ -237,6 +235,7 @@
 ----
 
 Declarator
+~~~~~~~~~~
 ----
 declarator returns [StringTemplate code=null] :
 id:ID {code=text(id.getText());}
@@ -245,6 +244,7 @@
 
 
 Variable initializer
+~~~~~~~~~~~~~~~~~~~~
 ----
 varInitializer returns [StringTemplate code=null] :
 ASSIGN code=expression
@@ -290,6 +290,7 @@
 ----
 
 Mapping Declaration
+~~~~~~~~~~~~~~~~~~~
 ----
 mappingdecl returns [StringTemplate code=template("mapping")]
 {StringTemplate p=null, d=null;}
@@ -299,6 +300,7 @@
 ----
 
 Mapping parameters declaration
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ----
 mapparamdecl [StringTemplate code]
 {StringTemplate p=null;} :
@@ -317,6 +319,9 @@
     ;
 ----
 
+Predict Procedure Declaration
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 This predicts in two different ways.
 The first choice is procedures with no return parameters. For these,
 we must predict as far as the opening { in order to distinguish
@@ -346,6 +351,7 @@
 ----
 
 Procedure declaration
+~~~~~~~~~~~~~~~~~~~~~
 ----
 proceduredecl returns [StringTemplate code=template("function")]
 {StringTemplate f=null;} :
@@ -389,6 +395,7 @@
 ----
 
 App procedure declaration
+~~~~~~~~~~~~~~~~~~~~~~~~~
 ----
 appproceduredecl returns [StringTemplate code=template("function")]
 {StringTemplate f=null;
@@ -435,6 +442,7 @@
 ----
 
 App profile
+~~~~~~~~~~~
 ----
 appProfile [StringTemplate code]
 {   StringTemplate p=null;
@@ -482,6 +490,7 @@
 ----
 
 Type declaration
+~~~~~~~~~~~~~~~~
 ----
 type returns [ StringTemplate code = null ]
 	{ StringBuilder buf = new StringBuilder(); } :
@@ -496,6 +505,7 @@
 ----
 
 Type Subscript
+~~~~~~~~~~~~~~
 ----
 typeSubscript[StringBuilder buf] :
 	LBRACK { buf.append('['); }
@@ -505,6 +515,7 @@
 ----
 
 Compound Statement
+~~~~~~~~~~~~~~~~~~
 ----
 compoundStat[StringTemplate code]
     :   LCURLY
@@ -514,6 +525,7 @@
 ----
 
 Compound body
+~~~~~~~~~~~~~
 ----
 compoundBody[StringTemplate code]
     :    ( innerStatement[code] )*
@@ -537,6 +549,7 @@
 ----
 
 Case Inner Statement
+~~~~~~~~~~~~~~~~~~~~
 ----
 caseInnerStatement [StringTemplate statements]
 { StringTemplate code = null; }
@@ -562,7 +575,9 @@
     | code=iterateStat
     ;
 ----
+
 If statement
+~~~~~~~~~~~~
 ----
 ifStat returns [StringTemplate code=template("if")]
 {
@@ -585,6 +600,7 @@
 ----
 
 Foreach statement
+~~~~~~~~~~~~~~~~~
 ----
 foreachStat returns [StringTemplate code=template("foreach")] {
   StringTemplate ds=null;
@@ -602,6 +618,7 @@
 ----
 
 Iterate statement
+~~~~~~~~~~~~~~~~~
 ----
 iterateStat returns [StringTemplate code=template("iterate")]
 {
@@ -619,6 +636,7 @@
 ----
 
 Switch statement
+~~~~~~~~~~~~~~~~
 
 ----
 switchStat returns [StringTemplate code=template("switch")]
@@ -634,6 +652,7 @@
 ----
 
 Cases Group
+~~~~~~~~~~~
 ----
 casesGroup returns [StringTemplate code=template("case")]
 {StringTemplate b=null;}
@@ -661,6 +680,7 @@
 ----
 
 Case Slist
+~~~~~~~~~~
 ----
 caseSList [StringTemplate code]
 {StringTemplate s=null;}
@@ -669,6 +689,7 @@
 ----
 
 Predict assignment statement
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ----
 predictAssignStat
 {StringTemplate x=null;}
@@ -676,6 +697,7 @@
 ----
 
 Predict append statement
+~~~~~~~~~~~~~~~~~~~~~~~~
 ----
 predictAppendStat
 {StringTemplate x=null;}
@@ -683,6 +705,7 @@
 ----
 
 Assignment statement
+~~~~~~~~~~~~~~~~~~~~
 ----
 assignStat returns [StringTemplate code=null]
 {StringTemplate id=null;}
@@ -705,6 +728,7 @@
 ----
 
 Append statement
+~~~~~~~~~~~~~~~~
 ----
 appendStat returns [ StringTemplate code = null ]
 	{ StringTemplate id=null; }
@@ -726,6 +750,7 @@
 ----
 
 Array append statement
+~~~~~~~~~~~~~~~~~~~~~~
 ----
 arrayAppend returns [ StringTemplate code = null ]
 	{ StringTemplate a = null, e = null, id = null; }
@@ -738,6 +763,7 @@
 ----
 
 Variable Assign statement
+~~~~~~~~~~~~~~~~~~~~~~~~~
 ----
 variableAssign returns [StringTemplate code=null]
 {StringTemplate a=null, e=null, id=null;}
@@ -750,6 +776,7 @@
 ----
 
 Procedure call
+~~~~~~~~~~~~~~
 ----
 procedurecallCode returns [StringTemplate code=template("call")]
 {StringTemplate f=null;}
@@ -759,6 +786,7 @@
 ----
 
 procedure invocation
+~~~~~~~~~~~~~~~~~~~~
 ----
 procedureInvocation [StringTemplate code]
     :
@@ -768,6 +796,7 @@
 ----
 
 procedure invocation without semicolon
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ----
 procedureInvocationWithoutSemi [StringTemplate code]
 {StringTemplate f=null;}
@@ -787,6 +816,7 @@
 ----
 
 procedure invocation expression
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ----
 procedureInvocationExpr [StringTemplate code]
 {StringTemplate f=null;}
@@ -807,6 +837,7 @@
 ----
 
 procedure call expression
+~~~~~~~~~~~~~~~~~~~~~~~~~
 ----
 procedureCallExpr returns [StringTemplate code=template("call")]
 {StringTemplate f=null;}
@@ -815,7 +846,8 @@
     ;
 ----
 
-
+predict procedure call
+~~~~~~~~~~~~~~~~~~~~~~
 ----
 predictProcedurecallDecl : ASSIGN ID LPAREN ;
 
@@ -837,6 +869,7 @@
     ;
 ----
 
+
 ----
 procedurecallStatAssignManyReturnParam [StringTemplate s]
 { StringTemplate code=template("call"); }
@@ -913,6 +946,8 @@
     ;
 ----
 
+Atomic Procedure Body
+~~~~~~~~~~~~~~~~~~~~~
 ----
 atomicBody [StringTemplate code]
 {StringTemplate app=null, svc=null;}
@@ -935,6 +970,8 @@
     ;
 ----
 
+App Args
+~~~~~~~~
 ----
 appArg [StringTemplate code]
 {StringTemplate arg=null;}
@@ -945,6 +982,8 @@
     ;
 ----
 
+Mapping Expression
+~~~~~~~~~~~~~~~~~~
 ----
 mappingExpr returns [StringTemplate code=null]
 {StringTemplate e=null;}
@@ -957,6 +996,8 @@
     ;
 ----
 
+Function Invocation
+~~~~~~~~~~~~~~~~~~~
 ----
 functionInvocation returns [StringTemplate code=template("functionInvocation")]
 {StringTemplate func=null, e=null;}
@@ -995,6 +1036,8 @@
      ;
 ----
 
+Standard IO Arg
+~~~~~~~~~~~~~~~
 ----
 stdioArg [StringTemplate code]
 {StringTemplate t=null,m=null; String name=null;}
@@ -1013,6 +1056,8 @@
     ;
 ----
 
+Expression
+~~~~~~~~~~
 ----
 expression returns [StringTemplate code=null]
     :   code=orExpr
@@ -1070,6 +1115,8 @@
     ;
 ----
 
+Conditional Expression
+~~~~~~~~~~~~~~~~~~~~~~
 ----
 condExpr returns [StringTemplate code=null] {
 StringTemplate a,b=null;
@@ -1177,9 +1224,12 @@
     : ID LPAREN ;
 
 ----
+
+Identifier
+~~~~~~~~~~
+
 // TODO - redo identifier parsing to fit in with the XML style
 // that this patch introduces
-
 // specifically, need the base ID to be distinct from all the
 // other IDs
 
@@ -1199,7 +1249,8 @@
     ;
 ----
 
-
+Array Index
+~~~~~~~~~~~
 ----
 arrayIndex returns [StringTemplate code=null]
 {StringTemplate e=null;}
@@ -1231,6 +1282,8 @@
     ;
 ----
 
+Constant
+~~~~~~~~
 ----
 constant returns [StringTemplate code=null]
     : i:INT_LITERAL
@@ -1264,6 +1317,8 @@
 
 // TODO ^^^^^^ array literal -- rename and rearrange the methods
 
+Literal Symbols
+~~~~~~~~~~~~~~~
 
 ----
 AT        :   "@" ;




More information about the Swift-commit mailing list