Issue #376. Added $ to all identifier definitions

This commit is contained in:
Baratali Izmailov 2014-11-25 00:35:55 +03:00 committed by Roman Ivanov
parent 6c97ba8038
commit 825d1be152
4 changed files with 60 additions and 8 deletions

View File

@ -94,7 +94,7 @@ CHAR : . ;
//////////////////////////////////////////////////////////////////////////////////////
mode param;
Space0: WS -> type(WS);
PARAMETER_NAME: [a-zA-Z0-9<>_-]+ -> mode(DEFAULT_MODE);
PARAMETER_NAME: [a-zA-Z0-9<>_$]+ -> mode(DEFAULT_MODE);
Char1: .
{
skipCurrentTokenConsuming();
@ -120,10 +120,10 @@ Newline5: NEWLINE
Leading_asterisk3: LEADING_ASTERISK -> type(LEADING_ASTERISK);
XmlTagOpen1: '<' -> type(OPEN), pushMode(xmlTagDefinition);
STRING: '"' .*? '"' {referenceCatched = false;} -> mode(DEFAULT_MODE);
PACKAGE: [a-z] ([a-z_-] | '.')+ [a-z_-] {referenceCatched = true;};
PACKAGE: [a-z$] ([a-z_$] | '.')+ [a-z_$] {referenceCatched = true;};
DOT: '.';
HASH: '#' {referenceCatched = true;} -> mode(classMemeber);
CLASS: [A-Z] [a-zA-Z0-9_-]* {referenceCatched = true;};
CLASS: [A-Z] [a-zA-Z0-9_$]* {referenceCatched = true;};
End20: JAVADOC_INLINE_TAG_END
{
insideJavadocInlineTag--;
@ -141,10 +141,10 @@ Char2: .
//////////////////////////////////////////////////////////////////////////////////////
mode classMemeber;
MEMBER: [a-zA-Z0-9_-]+ {!insideReferenceArguments}?;
MEMBER: [a-zA-Z0-9_$]+ {!insideReferenceArguments}?;
LEFT_BRACE: '(' {insideReferenceArguments=true;};
RIGHT_BRACE: ')' {insideReferenceArguments=false;};
ARGUMENT: ([a-zA-Z0-9_-] | '.' | '[' | ']')+ {insideReferenceArguments}?;
ARGUMENT: ([a-zA-Z0-9_$] | '.' | '[' | ']')+ {insideReferenceArguments}?;
COMMA: ',' {insideReferenceArguments}?;
Leading_asterisk6: LEADING_ASTERISK
{
@ -188,7 +188,7 @@ Char20: .
//////////////////////////////////////////////////////////////////////////////////////
mode serialField;
Space2: WS -> type(WS);
FIELD_NAME: [a-zA-Z0-9_-]+ -> mode(serialFieldFieldType);
FIELD_NAME: [a-zA-Z0-9_$]+ -> mode(serialFieldFieldType);
Char3: .
{
skipCurrentTokenConsuming();
@ -198,7 +198,7 @@ Char3: .
//////////////////////////////////////////////////////////////////////////////////////
mode serialFieldFieldType;
Space3: WS -> type(WS);
FIELD_TYPE: [a-zA-Z0-9_-]+ -> mode(DEFAULT_MODE);
FIELD_TYPE: [a-zA-Z0-9_$]+ -> mode(DEFAULT_MODE);
Char4: .
{
skipCurrentTokenConsuming();
@ -206,7 +206,7 @@ Char4: .
//////////////////////////////////////////////////////////////////////////////////////
mode exception;
Space4: WS -> type(WS);
CLASS_NAME: ([a-zA-Z0-9_-] | '.')+ -> mode(DEFAULT_MODE);
CLASS_NAME: ([a-zA-Z0-9_$] | '.')+ -> mode(DEFAULT_MODE);
Char5: .
{
skipCurrentTokenConsuming();

View File

@ -281,6 +281,16 @@ public class JavadocParseTreeTest
compareTrees(expectedTree, generatedTree);
}
@Test
public void dollarInLink()
throws IOException
{
String filename = folderWithInputFiles + "/javadocTags/DollarInLink.txt";
ParseTree generatedTree = parseJavadoc(getFileContent(new File(filename)));
ParseTree expectedTree = ParseTreeBuilder.treeDollarInLink();
compareTrees(expectedTree, generatedTree);
}
private void compareTrees(ParseTree t1, ParseTree t2)
{
Assert.assertEquals(t1.toStringTree(parser), t2.toStringTree(parser));

View File

@ -2428,4 +2428,45 @@ public class ParseTreeBuilder
vfDcF.addChild(rrjXS);
return vfDcF;
}
public static ParseTree treeDollarInLink()
{
JavadocContext yCrNh = new JavadocContext(null, 0);
JavadocInlineTagContext yZEPk = new JavadocInlineTagContext(yCrNh, 0);
CommonToken QaRFV = new CommonToken(JavadocTokenTypes.JAVADOC_INLINE_TAG_START, "{");
yZEPk.addChild(QaRFV);
CommonToken LnzvV = new CommonToken(JavadocTokenTypes.LINK_LITERAL, "@link");
yZEPk.addChild(LnzvV);
CommonToken WcdhT = new CommonToken(JavadocTokenTypes.WS, " ");
yZEPk.addChild(WcdhT);
ReferenceContext yPHKq = new ReferenceContext(yZEPk, 0);
CommonToken tfKuW = new CommonToken(JavadocTokenTypes.CLASS, "My$Class");
yPHKq.addChild(tfKuW);
CommonToken asCBP = new CommonToken(JavadocTokenTypes.HASH, "#");
yPHKq.addChild(asCBP);
CommonToken VfpBA = new CommonToken(JavadocTokenTypes.MEMBER, "$$simple_$Method");
yPHKq.addChild(VfpBA);
ParametersContext zUjHC = new ParametersContext(yPHKq, 0);
CommonToken evbHg = new CommonToken(JavadocTokenTypes.LEFT_BRACE, "(");
zUjHC.addChild(evbHg);
CommonToken mpzxn = new CommonToken(JavadocTokenTypes.ARGUMENT, "_A78");
zUjHC.addChild(mpzxn);
CommonToken kOOdW = new CommonToken(JavadocTokenTypes.COMMA, ",");
zUjHC.addChild(kOOdW);
CommonToken LvnuO = new CommonToken(JavadocTokenTypes.WS, " ");
zUjHC.addChild(LvnuO);
CommonToken IScAu = new CommonToken(JavadocTokenTypes.ARGUMENT, "$8$");
zUjHC.addChild(IScAu);
CommonToken aULsN = new CommonToken(JavadocTokenTypes.RIGHT_BRACE, ")");
zUjHC.addChild(aULsN);
yPHKq.addChild(zUjHC);
yZEPk.addChild(yPHKq);
CommonToken DCMuM = new CommonToken(JavadocTokenTypes.JAVADOC_INLINE_TAG_END, "}");
yZEPk.addChild(DCMuM);
yCrNh.addChild(yZEPk);
CommonToken AcQbE = new CommonToken(JavadocTokenTypes.EOF, "<EOF>");
yCrNh.addChild(AcQbE);
return yCrNh;
}
}

View File

@ -0,0 +1 @@
{@link My$Class#$$simple_$Method(_A78, $8$)}