- Revision
- 1112
- Author
- rfscholte
- Date
- 2011-03-09 13:54:36 -0600 (Wed, 09 Mar 2011)
Log Message
Using EnumBody and EnumConstant almost according to JLS, but just as strong
Modified Paths
Added Paths
- trunk/qdox/src/test/com/thoughtworks/qdox/parser/impl/
Diff
Modified: trunk/qdox/src/grammar/parser.y (1111 => 1112)
--- trunk/qdox/src/grammar/parser.y 2011-03-08 20:35:16 UTC (rev 1111) +++ trunk/qdox/src/grammar/parser.y 2011-03-09 19:54:36 UTC (rev 1112) @@ -144,10 +144,6 @@ // ----- JAVADOC -javadoclist: - javadoc | - javadoclist javadoc; - javadoc: JAVADOCSTART javadocdescription javadoctags JAVADOCEND; javadocdescription: @@ -483,29 +479,38 @@ fieldType = new TypeDef($3, 0); } EnumBody; -EnumBody: BRACEOPEN enum_body BRACECLOSE - { builder.endClass(); - fieldType = null; - modifiers.clear(); - }; ClassModifiers_opt: modifiers; -enum_body: enum_values | enum_values SEMI ClassBodyDeclarations_opt; +/* Specs say: EnumConstants_opt ,_opt EnumBodyDeclarations_opt + The optional COMMA causes trouble for the parser + For that reason the options of EnumConstants_opt, which will accept all cases +*/ +EnumBody: BRACEOPEN EnumConstants_opt EnumBodyDeclarations_opt BRACECLOSE + { builder.endClass(); + fieldType = null; + modifiers.clear(); + }; -enum_values: | enum_value | enum_value COMMA enum_values; +EnumConstants_opt: + | EnumConstants_opt COMMA + | EnumConstants_opt EnumConstant; + +EnumConstant: opt_annotations IDENTIFIER Arguments_opt ClassBody_opt + { + makeField(new TypeDef($2, 0), ""); + }; -enum_value: - javadoclist opt_annotations enum_constructor | - opt_annotations enum_constructor; + +Arguments_opt: + | PARENBLOCK /* =Arguments */; -enum_constructor: - IDENTIFIER { makeField(new TypeDef($1, 0), ""); } | - IDENTIFIER CODEBLOCK { makeField(new TypeDef($1, 0), ""); } | - IDENTIFIER PARENBLOCK { makeField(new TypeDef($1, 0), ""); } | - IDENTIFIER PARENBLOCK CODEBLOCK { makeField(new TypeDef($1, 0), ""); }; +ClassBody_opt: + | CODEBLOCK /* =ClassBody */; - +EnumBodyDeclarations_opt: + | SEMI ClassBodyDeclarations_opt; + // ----- CLASS // 8.1 Class Declaration @@ -519,13 +524,13 @@ builder.beginClass(cls); cls = new ClassDef(); } - ClassBody; + ClassBody + { + builder.endClass(); + }; // 8.1.6 Class Body and Member Declarations -ClassBody: BRACEOPEN ClassBodyDeclarations_opt BRACECLOSE - { - builder.endClass(); - }; +ClassBody: BRACEOPEN ClassBodyDeclarations_opt BRACECLOSE; // this is slighly different so we can get the correct linenumber ClassBodyDeclarations_opt: @@ -707,7 +712,9 @@ }; | FormalParameter; -opt_annotations: | opt_annotations annotation; +opt_annotations: + | opt_annotations annotation; + | opt_annotations javadoc; VariableModifiers_opt: | VariableModifiers_opt modifier;
Modified: trunk/qdox/src/test/com/thoughtworks/qdox/EnumsTest.java (1111 => 1112)
--- trunk/qdox/src/test/com/thoughtworks/qdox/EnumsTest.java 2011-03-08 20:35:16 UTC (rev 1111) +++ trunk/qdox/src/test/com/thoughtworks/qdox/EnumsTest.java 2011-03-09 19:54:36 UTC (rev 1112) @@ -11,14 +11,15 @@ public void testAddEmptyEnumsToModel() { String source = "" + "public enum Enum1 {}\n" - + "enum Enum2 {;}\n"; - //+ "private enum Enum3 {,}"; @todo + + "enum Enum2 {;}\n" + + "private enum Enum3 {,}"; JavaDocBuilder javaDocBuilder = new JavaDocBuilder(); javaDocBuilder.addSource(new StringReader(source)); assertTrue(javaDocBuilder.getClassByName("Enum1").isEnum()); assertTrue(javaDocBuilder.getClassByName("Enum2").isEnum()); + assertTrue(javaDocBuilder.getClassByName("Enum3").isEnum()); } public void testAddSimpleEnumsToModel() {
To unsubscribe from this list please visit:
