Log Message
Parse EnumConstant arguments
Modified Paths
- trunk/qdox/src/grammar/lexer.flex
- trunk/qdox/src/grammar/parser.y
- trunk/qdox/src/test/java/com/thoughtworks/qdox/EnumsTest.java
- trunk/qdox/src/test/java/com/thoughtworks/qdox/parser/LexerTest.java
- trunk/qdox/src/test/java/com/thoughtworks/qdox/parser/ParserTest.java
Diff
Modified: trunk/qdox/src/grammar/lexer.flex (1468 => 1469)
--- trunk/qdox/src/grammar/lexer.flex 2011-12-28 23:13:35 UTC (rev 1468)
+++ trunk/qdox/src/grammar/lexer.flex 2011-12-29 13:36:41 UTC (rev 1469)
@@ -139,7 +139,7 @@
Annotation = "@" {WhiteSpace}* {Id} ("."{Id})* {WhiteSpace}*
JavadocEnd = "*"+ "/"
-%state JAVADOC JAVADOCTAG JAVADOCLINE CODEBLOCK PARENBLOCK ASSIGNMENT STRING CHAR SINGLELINECOMMENT MULTILINECOMMENT ANNOTATION ANNOSTRING ANNOCHAR ENUM
+%state JAVADOC JAVADOCTAG JAVADOCLINE CODEBLOCK PARENBLOCK ASSIGNMENT STRING CHAR SINGLELINECOMMENT MULTILINECOMMENT ANNOTATION ANNOSTRING ANNOCHAR ENUM ARGUMENTS
%%
@@ -294,10 +294,11 @@
parenMode = -1;
return Parser.PARENOPEN;
}
- else if(enumConstantMode) {
- parenDepth = classDepth;
- pushState(PARENBLOCK);
- return Parser.PARENBLOCK;
+ else if(enumConstantMode)
+ {
+ annotationDepth = nestingDepth;
+ pushState(ARGUMENTS);
+ return Parser.PARENOPEN;
}
else {
return Parser.PARENOPEN;
@@ -322,7 +323,7 @@
}
}
-<ANNOTATION> {
+<ANNOTATION,ARGUMENTS> {
"(" { ++ nestingDepth; return Parser.PARENOPEN; }
")" { if( nestingDepth-- == annotationDepth) { popState(); } return Parser.PARENCLOSE; }
@@ -493,7 +494,7 @@
\' { if (appendingToCodeBody) { codeBody.append('\''); } pushState(CHAR); }
}
-<ASSIGNMENT, YYINITIAL, CODEBLOCK, PARENBLOCK, ENUM, ANNOTATION> {
+<ASSIGNMENT, YYINITIAL, CODEBLOCK, PARENBLOCK, ENUM, ANNOTATION, ARGUMENTS> {
"//" { if (appendingToCodeBody) { codeBody.append("//"); } pushState(SINGLELINECOMMENT); }
"/*" { if (appendingToCodeBody) { codeBody.append("/*"); } pushState(MULTILINECOMMENT); }
"/**/" { if (appendingToCodeBody) { codeBody.append("/**/"); } }
Modified: trunk/qdox/src/grammar/parser.y (1468 => 1469)
--- trunk/qdox/src/grammar/parser.y 2011-12-28 23:13:35 UTC (rev 1468)
+++ trunk/qdox/src/grammar/parser.y 2011-12-29 13:36:41 UTC (rev 1469)
@@ -623,13 +623,15 @@
modifiers.clear();
};
+// 8.9 Enums Constants
+/* See EnumBody for this slightly different code */
EnumConstants_opt:
| EnumConstants_opt COMMA
| EnumConstants_opt EnumConstant;
EnumConstant: Annotations_opt IDENTIFIER Arguments_opt
{
- makeField( new TypeDef($2, 0), "", true );
+ makeField( new TypeDef($2, 0), "", true );
builder.beginField( fd );
}
ClassBody_opt
@@ -639,7 +641,7 @@
};
Arguments_opt:
- | PARENBLOCK /* =Arguments */;
+ | PARENOPEN ArgumentList_opt PARENCLOSE; //PARENBLOCK
ClassBody_opt:
| ClassBody;
@@ -710,11 +712,19 @@
ElementValue: ConditionalExpression
| Annotation
- | ElementValueArrayInitializer ;
+ | ElementValueArrayInitializer;
+// 15.9 Class Instance Creation Expressions
+ArgumentList_opt:
+ | ArgumentList;
+
+ArgumentList: _expression_
+ | ArgumentList COMMA _expression_;
+
+
// 15.14 Postfix Expressions
PostfixExpression: /* ExpressionName | PostIncrementExpression | PostDecrementExpression | */
- primary ;
+ primary;
// 15.15 Unary Operators
UnaryExpression: /* PreIncrementExpression | PreDecrementExpression | */
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/EnumsTest.java (1468 => 1469)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/EnumsTest.java 2011-12-28 23:13:35 UTC (rev 1468)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/EnumsTest.java 2011-12-29 13:36:41 UTC (rev 1469)
@@ -120,6 +120,8 @@
+ "}";
JavaProjectBuilder javaDocBuilder = new JavaProjectBuilder();
+ javaDocBuilder.setDebugLexer( true );
+ javaDocBuilder.setDebugParser( true );
javaDocBuilder.addSource(new StringReader(source));
assertTrue(javaDocBuilder.getClassByName("AccountType").isEnum());
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/parser/LexerTest.java (1468 => 1469)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/parser/LexerTest.java 2011-12-28 23:13:35 UTC (rev 1468)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/parser/LexerTest.java 2011-12-29 13:36:41 UTC (rev 1469)
@@ -471,7 +471,10 @@
assertLex(Parser.IDENTIFIER, "Foo", lexer);
assertLex(Parser.BRACEOPEN, lexer);
assertLex(Parser.IDENTIFIER, "a", lexer);
- assertLex(Parser.PARENBLOCK, lexer);
+ assertLex(Parser.PARENOPEN, lexer);
+ assertLex(Parser.STRING_LITERAL, "\"", lexer);
+ assertEquals( "\"hello\"", lexer.getCodeBody() );
+ assertLex(Parser.PARENCLOSE, lexer);
assertLex(Parser.SEMI, lexer);
assertLex(Parser.IDENTIFIER, "int", lexer);
assertLex(Parser.IDENTIFIER, "someField", lexer);
@@ -614,7 +617,10 @@
assertEquals( "\"text\"", lexer.getCodeBody() );
assertLex(Parser.PARENCLOSE, lexer);
assertLex(Parser.IDENTIFIER, "VALUE", lexer);
- assertLex(Parser.PARENBLOCK, lexer);
+ assertLex(Parser.PARENOPEN, lexer);
+ assertLex(Parser.STRING_LITERAL, lexer);
+ assertEquals( "\"value\"", lexer.getCodeBody() );
+ assertLex(Parser.PARENCLOSE, lexer);
assertLex(Parser.SEMI, lexer);
}
}
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/parser/ParserTest.java (1468 => 1469)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/parser/ParserTest.java 2011-12-28 23:13:35 UTC (rev 1468)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/parser/ParserTest.java 2011-12-29 13:36:41 UTC (rev 1469)
@@ -2606,7 +2606,8 @@
setupLex(Parser.BRACEOPEN);
setupLex(Parser.IDENTIFIER, "a");
- setupLex(Parser.PARENBLOCK);
+ setupLex(Parser.PARENOPEN);
+ setupLex(Parser.PARENCLOSE);
setupLex(Parser.SEMI);
setupLex(Parser.IDENTIFIER, "int");
@@ -2696,8 +2697,9 @@
setupLex(Parser.BRACEOPEN);
setupLex(Parser.IDENTIFIER, "A");
- setupLex(Parser.PARENBLOCK);
-
+ setupLex(Parser.PARENOPEN);
+ setupLex(Parser.PARENCLOSE);
+
setupLex(Parser.BRACEOPEN);
setupLex(Parser.AT);
To unsubscribe from this list please visit:
