ovidiu      02/03/06 18:12:08

  Modified:    src/scratchpad/schecoon/src/org/apache/cocoon/flow flow.g
  Log:
  Cleaned up.
  
  Revision  Changes    Path
  1.5       +100 -85   
xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/flow/flow.g
  
  Index: flow.g
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/flow/flow.g,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- flow.g    3 Mar 2002 18:12:22 -0000       1.4
  +++ flow.g    7 Mar 2002 02:12:08 -0000       1.5
  @@ -21,40 +21,50 @@
       ;
   
   expr
  -    :   elem        // Elementary expression
  +    :   assignment  // Simple expressions
  +    |   block       // A sequence of expressions
       |   function    // Function declaration
       |   varDecl     // Variable declaration
  -    |   "if" LPAREN elem RPAREN expr
  +    |   "if" LPAREN expr RPAREN expr
           (
  -                     // CONFLICT: the old "dangling-else" problem...
  -                     //           ANTLR generates proper code matching
  -                     //                       as soon as possible.  Hush warning.
  +                        // CONFLICT: the old "dangling-else" problem...
  +                        //           ANTLR generates proper code matching
  +                        //           as soon as possible.  Hush warning.
               options {
                   warnWhenFollowAmbig = false;
  -            }
  -        :   "else" elem
  +            }:
  +            "else" expr
           )?
  -    |   "return" (elem|function)?
  -    |   "try" elem (handler)+
  -    |   "throw" elem
  +    |   "return" expr
  +    |   "try" expr
  +        (
  +            // CONFLICT: Similar with the dangling else
  +            options {
  +                warnWhenFollowAmbig = false;
  +            }:
  +            handler
  +        )+
  +    |   "throw" expr
   
           // The following expressions should be rewritten using macros,
           // when they become available
       |   "import" identifierStar
  -    |   "while" LPAREN elem RPAREN expr
  -    |   "switch" LPAREN elem RPAREN casesGroup
  -    |   "for" LPAREN (varDecl|elemList) SEMI elemList SEMI elemList RPAREN expr
  -    |   "foreach" LPAREN IDENT "in" elem RPAREN expr
  -    |   "do" elem "while" LPAREN elem RPAREN
  -    ;
  -
  -elem
  -    :   assignment  // Simple expressions
  -    |   block       // A sequence of expressions
  +    |   "while" LPAREN expr RPAREN expr
  +    |   "switch" LPAREN expr RPAREN casesGroup
  +    |   "for" LPAREN exprList SEMI exprList SEMI exprList RPAREN expr
  +    |   "foreach" LPAREN IDENT "in" expr RPAREN expr
  +    |   "do" expr "while" LPAREN expr RPAREN
       ;
   
  -elemList
  -    :   elem (COMMA elem)*
  +exprList
  +    :   expr
  +        (
  +            // CONFLICT: Similar with the dangling else
  +            options {
  +                warnWhenFollowAmbig = false;
  +            }:
  +            COMMA expr
  +        )*
       ;
   
   // A function is either named or unnamed. A named function is //
  @@ -76,35 +86,35 @@
   
   // Variable declaration
   varDecl
  -    :   "var" assignment (COMMA assignment)*
  +    :   "var" exprList
       ;
   
   casesGroup
  -     :       (       // CONFLICT: to which case group do the statements bind?
  -                     //           ANTLR generates proper code: it groups the
  -                     //           many "case"/"default" labels together then
  -                     //           follows them with the statements
  -                     options {
  -                             warnWhenFollowAmbig = false;
  -                     }
  -                     :
  -                     aCase
  -             )+
  -             caseSList
  -     ;
  +        :       (       // CONFLICT: to which case group do the statements bind?
  +                        //           ANTLR generates proper code: it groups the
  +                        //           many "case"/"default" labels together then
  +                        //           follows them with the statements
  +                        options {
  +                                warnWhenFollowAmbig = false;
  +                        }
  +                        :
  +                        aCase
  +                )+
  +                caseSList
  +        ;
   
   aCase
  -     :       ("case" elem | "default") COLON
  -     ;
  +        :       ("case" expr | "default") COLON
  +        ;
   
   caseSList
  -     :       exprs
  -     ;
  +        :       exprs
  +        ;
   
   // Handler for a try expression
   handler
  -    :   "catch" LPAREN IDENT IDENT RPAREN block
  -    |   "finally" block
  +    :   "catch" LPAREN expr IDENT RPAREN expr
  +    |   "finally" expr
       ;
   
   identifierStar
  @@ -193,10 +203,10 @@
               LBRACK assignment RBRACK
   
               // Method invocation
  -        |   DOT LPAREN elemList RPAREN
  +        |   DOT LPAREN exprList RPAREN
   
               // Function invocation
  -        |   LPAREN elemList RPAREN
  +        |   LPAREN exprList RPAREN
           )*
       ;
   
  @@ -221,9 +231,9 @@
   //   [a: 1, b: 2, c: 3] -> dictionary
   // Use a syntactic predicate to disambiguate on ':'
   arrayOrDict
  -    :   (LBRACK elem COLON)=>
  -        LBRACK elem COLON elem (COMMA elem COLON elem)* RBRACK
  -    |   LBRACK elemList RBRACK
  +    :   (LBRACK expr COLON)=>
  +        LBRACK expr COLON expr (COMMA expr COLON expr)* RBRACK
  +    |   LBRACK exprList RBRACK
       ;
   
   
  @@ -235,45 +245,45 @@
       testLiterals=false;    // don't automatically test for literals
   }
   
  -QUESTION             :       '?'             ;
  -LPAREN                       :       '('             ;
  -RPAREN                       :       ')'             ;
  -LBRACK                       :       '['             ;
  -RBRACK                       :       ']'             ;
  -LCURLY                       :       '{'             ;
  -RCURLY                       :       '}'             ;
  -COLON                        :       ':'             ;
  -COMMA                        :       ','             ;
  -ASSIGN                       :       '='             ;
  -EQUAL                        :       "=="    ;
  -LNOT                 :       '!'             ;
  -BNOT                 :       '~'             ;
  -NOT_EQUAL            :       "!="    ;
  -DIV                          :       '/'             ;
  -DIV_ASSIGN           :       "/="    ;
  -PLUS                 :       '+'             ;
  -PLUS_ASSIGN          :       "+="    ;
  -INC                          :       "++"    ;
  -MINUS                        :       '-'             ;
  -MINUS_ASSIGN :       "-="    ;
  -DEC                          :       "--"    ;
  -STAR                 :       '*'             ;
  -STAR_ASSIGN          :       "*="    ;
  -MOD                          :       '%'             ;
  -MOD_ASSIGN           :       "%="    ;
  -GE                           :       ">="    ;
  -GT                           :       ">"             ;
  -LE                           :       "<="    ;
  -LT                           :       '<'             ;
  -BXOR                 :       '^'             ;
  -BXOR_ASSIGN          :       "^="    ;
  -BOR                          :       '|'             ;
  -BOR_ASSIGN           :       "|="    ;
  -LOR                          :       "||"    ;
  -BAND                 :       '&'             ;
  -BAND_ASSIGN          :       "&="    ;
  -LAND                 :       "&&"    ;
  -SEMI                 :       ';'             ;
  +QUESTION                :       '?'             ;
  +LPAREN                  :       '('             ;
  +RPAREN                  :       ')'             ;
  +LBRACK                  :       '['             ;
  +RBRACK                  :       ']'             ;
  +LCURLY                  :       '{'             ;
  +RCURLY                  :       '}'             ;
  +COLON                   :       ':'             ;
  +COMMA                   :       ','             ;
  +ASSIGN                  :       '='             ;
  +EQUAL                   :       "=="    ;
  +LNOT                    :       '!'             ;
  +BNOT                    :       '~'             ;
  +NOT_EQUAL               :       "!="    ;
  +DIV                             :       '/'             ;
  +DIV_ASSIGN              :       "/="    ;
  +PLUS                    :       '+'             ;
  +PLUS_ASSIGN             :       "+="    ;
  +INC                             :       "++"    ;
  +MINUS                   :       '-'             ;
  +MINUS_ASSIGN    :       "-="    ;
  +DEC                             :       "--"    ;
  +STAR                    :       '*'             ;
  +STAR_ASSIGN             :       "*="    ;
  +MOD                             :       '%'             ;
  +MOD_ASSIGN              :       "%="    ;
  +GE                              :       ">="    ;
  +GT                              :       ">"             ;
  +LE                              :       "<="    ;
  +LT                              :       '<'             ;
  +BXOR                    :       '^'             ;
  +BXOR_ASSIGN             :       "^="    ;
  +BOR                             :       '|'             ;
  +BOR_ASSIGN              :       "|="    ;
  +LOR                             :       "||"    ;
  +BAND                    :       '&'             ;
  +BAND_ASSIGN             :       "&="    ;
  +LAND                    :       "&&"    ;
  +SEMI                    :       ';'             ;
   
   protected
   PANYS   :   ('a'..'z'|'A'..'Z'|'@'|'#'|'$'|'_'|'?');
  @@ -448,3 +458,8 @@
       :   'f'|'F'|'d'|'D'
       ;
   
  +
  +// Local Variables:
  +// tab-width: 8
  +// indent-tabs-mode: nil
  +// End:
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to