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]