vgritsenko 2002/09/22 21:12:58 Modified: src/webapp/samples/chaperon/grammars java.rgrm Log: Fix CR/LF Revision Changes Path 1.3 +0 -808 xml-cocoon2/src/webapp/samples/chaperon/grammars/java.rgrm Index: java.rgrm =================================================================== RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/chaperon/grammars/java.rgrm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- java.rgrm 21 Sep 2002 22:57:19 -0000 1.2 +++ java.rgrm 23 Sep 2002 04:12:58 -0000 1.3 @@ -1,1616 +1,808 @@ /*------------------------------------------------------------------ - * Copyright (C) - * 1996, 1997, 1998 Dmitri Bronnikov, All rights reserved. - * - * THIS GRAMMAR IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR NON-INFRINGMENT. - * - * [EMAIL PROTECTED] - * - *------------------------------------------------------------------ - * - * VERSION 1.06 DATE 20 AUG 1998 - * - *------------------------------------------------------------------ - * - * UPDATES - * - * 1.06 Correction of Java 1.1 syntax - * 1.05 Yet more Java 1.1 - * <qualified name>.<allocation expression> - * 1.04 More Java 1.1 features: - * <class name>.this - * <type name>.class - * 1.03 Added Java 1.1 features: - * inner classes, - * anonymous classes, - * non-static initializer blocks, - * array initialization by new operator - * 1.02 Corrected cast expression syntax - * 1.01 All shift/reduce conflicts, except dangling else, resolved - * - *------------------------------------------------------------------ - * - * PARSING CONFLICTS RESOLVED - * - * Some Shift/Reduce conflicts have been resolved at the expense of - * the grammar defines a superset of the language. The following - * actions have to be performed to complete program syntax checking: - * - * 1) Check that modifiers applied to a class, interface, field, - * or constructor are allowed in respectively a class, inteface, - * field or constructor declaration. For example, a class - * declaration should not allow other modifiers than abstract, - * final and public. - * - * 2) For an expression statement, check it is either increment, or - * decrement, or assignment expression. - * - * 3) Check that type expression in a cast operator indicates a type. - * Some of the compilers that I have tested will allow simultaneous - * use of identically named type and variable in the same scope - * depending on context. - * - * 4) Change lexical definition to change '[' optionally followed by - * any number of white-space characters immediately followed by ']' - * to OP_DIM token. I defined this token as [\[]{white_space}*[\]] - * in the lexer. - * - *------------------------------------------------------------------ - * - * UNRESOLVED SHIFT/REDUCE CONFLICTS - * - * Dangling else in if-then-else - * - *------------------------------------------------------------------ - */ - - %uri "http://chaperon.sourceforge.net/grammar/java/1.0"; - - %token DOPEN \(; - %token DCLOSE \); - %token COPEN \{; - %token CCLOSE \}; - %token BOPEN \[; - %token BCLOSE \]; - %token SEMICOLON \;; - %token COMMA \,; - %token DOT \.; - - %token OP_EQ ==; - %token OP_LE \<=; - %token OP_GE \>=; - %token OP_NE !=; - %token OP_LOR \|\|; - %token OP_LAND &&; - %token OP_INC \+\+; - %token OP_DEC \-\-; - %token OP_SHR \>\>; - %token OP_SHL \<\<; - %token OP_SHRR \>\>\>; - %token ASS_OP \+= | \-= | \*= | /= | &= | \|= | \^= | \%= | \<\<= | \>\>= | \>\>\>=; - - %token EQ \=; - %token GT \>; - %token LT \<; - %token NOT \!; - %token TILDE \~; - %token QM \?; - %token COLON \:; - %token PLUS \+; - %token MINUS \-; - %token MULT \*; - %token DIV \/; - %token AND \&; - %token OR \|; - %token XOR \^; - %token MOD \%; - - %token BOOLLIT true|false; - - %token ABSTRACT abstract; - %token DO do; - %token IMPLEMENTS implements; - %token PACKAGE package; - %token THROW throw; - %token BOOLEAN boolean; - %token DOUBLE double; - %token IMPORT import; - %token PRIVATE private; - %token THROWS throws; - %token BREAK break; - - %right ELSE else; - - %token INNER inner; - %token PROTECTED protected; - %token TRANSIENT transient; - %token BYTE byte; - %token EXTENDS extends; - %token INSTANCEOF instanceof; - %token PUBLIC public; - %token TRY try; - %token CASE case; - %token FINAL final; - %token INT int; - %token REST rest; - %token VAR var; - %token CAST cast; - %token FINALLY finally; - %token INTERFACE interface; - %token RETURN return; - %token VOID void; - %token CATCH catch; - %token FLOAT float; - %token LONG long; - %token SHORT short; - %token VOLATILE volatile; - %token CHAR char; - %token FOR for; - %token NATIVE native; - %token STATIC static; - %token WHILE while; - %token CLASS class; - %token FUTURE future; - %token NEW new; - %token SUPER super; - %token CONST const; - %token GENERIC generic; - %token NULL null; - %token SWITCH switch; - %token CONTINUE continue; - %token GOTO goto; - %token OPERATOR operator; - %token SYNCHRONIZED synchronized; - %token DEFAULT default; - %token IF if; - %token OUTER outer; - %token THIS this; - - %ab HexDigit [0-9a-fA-F]; - %ab Digit [0-9]; - %ab OctalDigit [0-7]; - %ab TetraDigit [0-3]; - %ab NonZeroDigit [1-9]; - %ab Letter [a-zA-Z_]; - %ab AnyButSlash [^\/]; - %ab AnyButAstr [^\*]; - %ab UniEsc [\1b]; - - %ab OctEscape1 \\ <OctalDigit>; - %ab OctEscape2 \\ <OctalDigit><OctalDigit>; - %ab OctEscape3 \\ <TetraDigit><OctalDigit><OctalDigit>; - %ab OctEscape (<OctEscape1>|<OctEscape2>|<OctEscape3>); - - %ab Escape [\\]([rnbft\\\'\"]); - %ab ULetter (<Letter>|<UniEsc>); - %ab Identifier <ULetter>(<ULetter>|<Digit>)*; - - %ab IntSuffix (l|L); - %ab DecimalNum <NonZeroDigit><Digit>*<IntSuffix>?; - %ab OctalNum 0 <OctalDigit>*<IntSuffix>?; - %ab HexNum 0 (x|X) <HexDigit><HexDigit>*<IntSuffix>?; - %ab IntegerLiteral (<DecimalNum>|<OctalNum>|<HexNum>); - - %ab Sign (\+ | \-); - %ab FlSuffix (f|F|d|D); - %ab SignedInt <Sign>?<Digit>+; - %ab Expo (e|E); - %ab ExponentPart <Expo><SignedInt>?; - %ab Float1 <Digit>+ \. (<Digit>+)?<ExponentPart>?<FlSuffix>?; - %ab Float2 \. <Digit>+<ExponentPart>?<FlSuffix>?; - %ab Float3 <Digit>+<ExponentPart><FlSuffix>?; - %ab Float4 <Digit>+<FlSuffix>; - %ab FloatingPoint (<Float1>|<Float2>|<Float3>|<Float4>); - - %ab AnyChrChr [^\\']; - %ab AnyStrChr [^\\\"]; - %ab Character \' (<Escape>|<OctEscape>|<AnyChrChr>) \' ; - %ab String \" (<Escape>|<OctEscape>|<AnyStrChr>)* \" ; - %ab Numeric (<IntegerLiteral>|<FloatingPoint>); - - %token LITERAL (<Numeric>|<Character>|<String>); - - %token IDENTIFIER ([a-zA-Z_]|[\1b])(([a-zA-Z_]|[\1b])|[0-9])*; - - - //%token OP_DIM \[ ([\r\n\f\t\b\ ]|( \/ \* ([^\*]| \* [^\/])* \* \/ | - // \/ \/ (.*)))* \] ; - - //%whitespace [\r\n\f\t\b\ ]; - - - %token OP_DIM \[ ([\r\n\t\ ]|( \/ \* ([^\*]| \* [^\/])* \* \/ | - \/ \/ (.*)))* \] ; - - %ignore whitespace [\t\ ]; - - %ignore eol \r(\n)?|\n; - - %ab Comment1 \/ \* (<AnyButAstr>|[\*]<AnyButSlash>)* \* \/; - %ab Comment2 \/ \/ (.*); - %ignore comment (<Comment1>|<Comment2>); - - %start CompilationUnit; - - %% - - TypeSpecifier - : TypeName - | TypeName Dims - ; - - TypeName - : PrimitiveType - | QualifiedName - ; - - ClassNameList - : QualifiedName - | ClassNameList COMMA QualifiedName - ; - - PrimitiveType - : BOOLEAN - | CHAR - | BYTE - | SHORT - | INT - | LONG - | FLOAT - | DOUBLE - | VOID - ; - - SemiColons - : SEMICOLON - | SemiColons SEMICOLON - ; - - CompilationUnit - : ProgramFile - ; - - ProgramFile - : PackageStatement ImportStatements TypeDeclarations - | PackageStatement ImportStatements - | PackageStatement TypeDeclarations - | ImportStatements TypeDeclarations - | PackageStatement - | ImportStatements - | TypeDeclarations - ; - - PackageStatement - : PACKAGE QualifiedName SemiColons - ; - - TypeDeclarations - : TypeDeclarationOptSemi - | TypeDeclarations TypeDeclarationOptSemi - ; - - TypeDeclarationOptSemi - : TypeDeclaration - | TypeDeclaration SemiColons - ; - - ImportStatements - : ImportStatement - | ImportStatements ImportStatement - ; - - ImportStatement - : IMPORT QualifiedName SemiColons - | IMPORT QualifiedName DOT MULT SemiColons - ; - - QualifiedName - : IDENTIFIER %append - | QualifiedName DOT IDENTIFIER %append - ; - - TypeDeclaration - : ClassHeader COPEN FieldDeclarations CCLOSE - | ClassHeader COPEN CCLOSE - ; - - ClassHeader - : Modifiers ClassWord IDENTIFIER Extends Interfaces - | Modifiers ClassWord IDENTIFIER Extends - | Modifiers ClassWord IDENTIFIER Interfaces - | ClassWord IDENTIFIER Extends Interfaces - | Modifiers ClassWord IDENTIFIER - | ClassWord IDENTIFIER Extends - | ClassWord IDENTIFIER Interfaces - | ClassWord IDENTIFIER - ; - - Modifiers - : Modifier %append - | Modifiers Modifier %append - ; - - Modifier - : ABSTRACT - | FINAL - | PUBLIC - | PROTECTED - | PRIVATE - | STATIC - | TRANSIENT - | VOLATILE - | NATIVE - | SYNCHRONIZED - ; - - ClassWord - : CLASS - | INTERFACE - ; - - Interfaces - : IMPLEMENTS ClassNameList - ; - - FieldDeclarations - : FieldDeclarationOptSemi - | FieldDeclarations FieldDeclarationOptSemi - ; - - FieldDeclarationOptSemi - : FieldDeclaration - | FieldDeclaration SemiColons - ; - - FieldDeclaration - : FieldVariableDeclaration SEMICOLON - | MethodDeclaration - | ConstructorDeclaration - | StaticInitializer - | NonStaticInitializer - | TypeDeclaration - ; - - FieldVariableDeclaration - : Modifiers TypeSpecifier VariableDeclarators - | TypeSpecifier VariableDeclarators - ; - - VariableDeclarators - : VariableDeclarator - | VariableDeclarators COMMA VariableDeclarator - ; - - VariableDeclarator - : DeclaratorName - | DeclaratorName EQ VariableInitializer - ; - - VariableInitializer - : Expression - | COPEN CCLOSE - | COPEN ArrayInitializers CCLOSE - ; - - ArrayInitializers - : VariableInitializer - | ArrayInitializers COMMA VariableInitializer - | ArrayInitializers COMMA - ; - - MethodDeclaration - : Modifiers TypeSpecifier MethodDeclarator Throws MethodBody - | Modifiers TypeSpecifier MethodDeclarator MethodBody - | TypeSpecifier MethodDeclarator Throws MethodBody - | TypeSpecifier MethodDeclarator MethodBody - ; - - MethodDeclarator - : DeclaratorName DOPEN ParameterList DCLOSE - | DeclaratorName DOPEN DCLOSE - | MethodDeclarator OP_DIM - ; - - ParameterList - : Parameter - | ParameterList COMMA Parameter - ; - - Parameter - : TypeSpecifier DeclaratorName - | FINAL TypeSpecifier DeclaratorName - ; - - DeclaratorName - : IDENTIFIER - | DeclaratorName OP_DIM - ; - - Throws - : THROWS ClassNameList - ; - - MethodBody - : Block - | SEMICOLON - ; - - ConstructorDeclaration - : Modifiers ConstructorDeclarator Throws Block - | Modifiers ConstructorDeclarator Block - | ConstructorDeclarator Throws Block - | ConstructorDeclarator Block - ; - - ConstructorDeclarator - : IDENTIFIER DOPEN ParameterList DCLOSE - | IDENTIFIER DOPEN DCLOSE - ; - - StaticInitializer - : STATIC Block - ; - - NonStaticInitializer - : Block - ; - - Extends - : EXTENDS TypeName - | Extends COMMA TypeName - ; - - Block - : COPEN LocalVariableDeclarationsAndStatements CCLOSE - | COPEN CCLOSE - ; - - LocalVariableDeclarationsAndStatements - : LocalVariableDeclarationOrStatement %append - | LocalVariableDeclarationsAndStatements LocalVariableDeclarationOrStatement %append - ; - - LocalVariableDeclarationOrStatement - : LocalVariableDeclarationStatement - | Statement - ; - - LocalVariableDeclarationStatement - : TypeSpecifier VariableDeclarators SEMICOLON - | FINAL TypeSpecifier VariableDeclarators SEMICOLON - ; - - Statement - : EmptyStatement - | LabelStatement - | ExpressionStatement SEMICOLON - | SelectionStatement - | IterationStatement - | JumpStatement - | GuardingStatement - | Block - ; - - EmptyStatement - : SEMICOLON - ; - - LabelStatement - : IDENTIFIER COLON - | CASE ConstantExpression COLON - | DEFAULT COLON - ; - - ExpressionStatement - : Expression - ; - - SelectionStatement - : IF DOPEN Expression DCLOSE Statement %prec ELSE - | IF DOPEN Expression DCLOSE Statement ELSE Statement %prec ELSE - | SWITCH DOPEN Expression DCLOSE Block - ; - - IterationStatement - : WHILE DOPEN Expression DCLOSE Statement - | DO Statement WHILE DOPEN Expression DCLOSE SEMICOLON - | FOR DOPEN ForInit ForExpr ForIncr DCLOSE Statement - | FOR DOPEN ForInit ForExpr DCLOSE Statement - ; - - ForInit - : ExpressionStatements SEMICOLON - | LocalVariableDeclarationStatement - | SEMICOLON - ; - - ForExpr - : Expression SEMICOLON - | SEMICOLON - ; - - ForIncr - : ExpressionStatements - ; - - ExpressionStatements - : ExpressionStatement %resolve - | ExpressionStatements COMMA ExpressionStatement - ; - - JumpStatement - : BREAK IDENTIFIER SEMICOLON - | BREAK SEMICOLON - | CONTINUE IDENTIFIER SEMICOLON - | CONTINUE SEMICOLON - | RETURN Expression SEMICOLON - | RETURN SEMICOLON - | THROW Expression SEMICOLON - ; - - GuardingStatement - : SYNCHRONIZED DOPEN Expression DCLOSE Statement - | TRY Block Finally - | TRY Block Catches - | TRY Block Catches Finally - ; - - Catches - : Catch - | Catches Catch - ; - - Catch - : CatchHeader Block - ; - - CatchHeader - : CATCH DOPEN TypeSpecifier IDENTIFIER DCLOSE - | CATCH DOPEN TypeSpecifier DCLOSE - ; - - Finally - : FINALLY Block - ; - - PrimaryExpression - : QualifiedName %resolve - | NotJustName %resolve - ; - - NotJustName - : SpecialName %resolve - | NewAllocationExpression %resolve - | ComplexPrimary %resolve - ; - - ComplexPrimary - : DOPEN Expression DCLOSE - | ComplexPrimaryNoParenthesis %resolve - ; - - ComplexPrimaryNoParenthesis - : LITERAL - | BOOLLIT - | ArrayAccess - | FieldAccess - | MethodCall - ; - - ArrayAccess - : QualifiedName BOPEN Expression BCLOSE - | ComplexPrimary BOPEN Expression BCLOSE - ; - - FieldAccess - : NotJustName DOT IDENTIFIER - | RealPostfixExpression DOT IDENTIFIER - | QualifiedName DOT THIS - | QualifiedName DOT CLASS - | PrimitiveType DOT CLASS - ; - - MethodCall - : MethodAccess DOPEN ArgumentList DCLOSE - | MethodAccess DOPEN DCLOSE - ; - - MethodAccess - : ComplexPrimaryNoParenthesis - | SpecialName - | QualifiedName - ; - - SpecialName - : THIS - | SUPER - | NULL - ; - - ArgumentList - : Expression - | ArgumentList COMMA Expression - ; - - NewAllocationExpression - : PlainNewAllocationExpression - | QualifiedName DOT PlainNewAllocationExpression - ; - - PlainNewAllocationExpression - : ArrayAllocationExpression - | ClassAllocationExpression - | ArrayAllocationExpression COPEN CCLOSE - | ClassAllocationExpression COPEN CCLOSE - | ArrayAllocationExpression COPEN ArrayInitializers CCLOSE - | ClassAllocationExpression COPEN FieldDeclarations CCLOSE - ; - - ClassAllocationExpression - : NEW TypeName DOPEN ArgumentList DCLOSE - | NEW TypeName DOPEN DCLOSE - ; - - ArrayAllocationExpression - : NEW TypeName DimExprs Dims - | NEW TypeName DimExprs - | NEW TypeName Dims - ; - - DimExprs - : DimExpr - | DimExprs DimExpr - ; - - DimExpr - : BOPEN Expression BCLOSE - ; - - Dims - : OP_DIM - | Dims OP_DIM - ; - - PostfixExpression - : PrimaryExpression %resolve - | RealPostfixExpression %resolve - ; - - RealPostfixExpression - : PostfixExpression OP_INC - | PostfixExpression OP_DEC - ; - - UnaryExpression - : OP_INC UnaryExpression - | OP_DEC UnaryExpression - | ArithmeticUnaryOperator CastExpression - | LogicalUnaryExpression %resolve - ; - - LogicalUnaryExpression - : PostfixExpression %resolve - | LogicalUnaryOperator UnaryExpression - ; - - LogicalUnaryOperator - : TILDE - | NOT - ; - - ArithmeticUnaryOperator - : PLUS - | MINUS - ; - - CastExpression - : UnaryExpression %resolve - | DOPEN PrimitiveTypeExpression DCLOSE CastExpression - | DOPEN ClassTypeExpression DCLOSE CastExpression - | DOPEN Expression DCLOSE LogicalUnaryExpression - ; - - PrimitiveTypeExpression - : PrimitiveType - | PrimitiveType Dims - ; - - ClassTypeExpression - : QualifiedName Dims - ; - - MultiplicativeExpression - : CastExpression %resolve - | MultiplicativeExpression MULT CastExpression - | MultiplicativeExpression DIV CastExpression - | MultiplicativeExpression MOD CastExpression - ; - - AdditiveExpression - : MultiplicativeExpression %resolve - | AdditiveExpression PLUS MultiplicativeExpression - | AdditiveExpression MINUS MultiplicativeExpression - ; - - ShiftExpression - : AdditiveExpression %resolve - | ShiftExpression OP_SHL AdditiveExpression - | ShiftExpression OP_SHR AdditiveExpression - | ShiftExpression OP_SHRR AdditiveExpression - ; - - RelationalExpression - : ShiftExpression %resolve - | RelationalExpression LT ShiftExpression - | RelationalExpression GT ShiftExpression - | RelationalExpression OP_LE ShiftExpression - | RelationalExpression OP_GE ShiftExpression - | RelationalExpression INSTANCEOF TypeSpecifier - ; - - EqualityExpression - : RelationalExpression %resolve - | EqualityExpression OP_EQ RelationalExpression - | EqualityExpression OP_NE RelationalExpression - ; - - AndExpression - : EqualityExpression %resolve - | AndExpression AND EqualityExpression - ; - - ExclusiveOrExpression - : AndExpression %resolve - | ExclusiveOrExpression XOR AndExpression - ; - - InclusiveOrExpression - : ExclusiveOrExpression %resolve - | InclusiveOrExpression OR ExclusiveOrExpression - ; - - ConditionalAndExpression - : InclusiveOrExpression %resolve - | ConditionalAndExpression OP_LAND InclusiveOrExpression - ; - - ConditionalOrExpression - : ConditionalAndExpression %resolve - | ConditionalOrExpression OP_LOR ConditionalAndExpression - ; - - ConditionalExpression - : ConditionalOrExpression %resolve - | ConditionalOrExpression QM Expression COLON ConditionalExpression - ; - - AssignmentExpression - : ConditionalExpression %resolve - | UnaryExpression AssignmentOperator AssignmentExpression - ; - - AssignmentOperator - : EQ - | ASS_OP - ; - - Expression - : AssignmentExpression - ; - - ConstantExpression - : ConditionalExpression - ; - - -
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]