I get the following error when trying to parse the attached code:
Throwable at package <test.sql>: java.lang.Error: Invalid escape character at line 25 column 46.
java.lang.Error: Invalid escape character at line 25 column 46.
at net.sourceforge.pldoc.parser.JavaCharStream.readChar(JavaCharStream.java:342)
at net.sourceforge.pldoc.parser.PLSQLParserTokenManager.jjMoveNfa_0(PLSQLParserTokenManager.java:3963)
at net.sourceforge.pldoc.parser.PLSQLParserTokenManager.jjMoveStringLiteralDfa0_0(PLSQLParserTokenManager.java:178)
at net.sourceforge.pldoc.parser.PLSQLParserTokenManager.getNextToken(PLSQLParserTokenManager.java:4246)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_scan_token(PLSQLParser.java:31471)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_3R_184(PLSQLParser.java:28392)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_3R_125(PLSQLParser.java:28406)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_3_39(PLSQLParser.java:29278)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_2_39(PLSQLParser.java:24870)
at net.sourceforge.pldoc.parser.PLSQLParser.Expression(PLSQLParser.java:12172)
at net.sourceforge.pldoc.parser.PLSQLParser.Assignment(PLSQLParser.java:12406)
at net.sourceforge.pldoc.parser.PLSQLParser.Expression(PLSQLParser.java:12173)
at net.sourceforge.pldoc.parser.PLSQLParser.statement(PLSQLParser.java:11394)
at net.sourceforge.pldoc.parser.PLSQLParser.statement(PLSQLParser.java:8377)
at net.sourceforge.pldoc.parser.PLSQLParser.statement(PLSQLParser.java:8172)
at net.sourceforge.pldoc.parser.PLSQLParser.statement(PLSQLParser.java:8994)
at net.sourceforge.pldoc.parser.PLSQLParser.programUnit(PLSQLParser.java:5770)
at net.sourceforge.pldoc.parser.PLSQLParser.global(PLSQLParser.java:881)
at net.sourceforge.pldoc.parser.PLSQLParser.input(PLSQLParser.java:649)
at net.sourceforge.pldoc.PLDoc.processPackage(PLDoc.java:489)
at net.sourceforge.pldoc.PLDoc.run(PLDoc.java:190)
at net.sourceforge.pldoc.PLDoc.main(PLDoc.java:124)
View and moderate all "bugs Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Bugs"
View and moderate all "bugs Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Bugs"
The problem is specifically Unicode escapes, i.e '\Unnnn'
This example could be fixed by turning JAVA_UNICODE_ESCAPE off during PLDoc compilation, but that would mean that the best way of putting complex characters into the PLDOC comments will be lost.
This is a suggested workaround until a fix is developed:-
"
CREATE OR REPLACE
FUNCTION pldoc_bug.escapeString(theString IN VARCHAR2, theEscapeSolidusFlag IN BOOLEAN DEFAULT FALSE, theAsciiOutputFlag IN BOOLEAN DEFAULT TRUE) RETURN VARCHAR2
IS
aString VARCHAR2(32767);
aBuffer VARCHAR2(40);
aNumber NUMBER;
cUnicodeEscapePrefix CONSTANT VARCHAR2(2) := '\'||'u'; -- Workaround to PLDoc Unicode Escape problem
BEGIN
IF (theString IS NULL) THEN
RETURN '""';
END IF;
FOR i IN 1 .. LENGTH(theString) LOOP
aBuffer := SUBSTR(theString, i, 1);
CASE aBuffer
WHEN CHR( 8) THEN aBuffer := '\b';
WHEN CHR( 9) THEN aBuffer := '\t';
WHEN CHR(10) THEN aBuffer := '\n';
WHEN CHR(13) THEN aBuffer := '\f';
WHEN CHR(14) THEN aBuffer := '\r';
WHEN CHR(34) THEN aBuffer := '\"';
WHEN CHR(47) THEN IF (theEscapeSolidusFlag) THEN aBuffer := '\/'; END IF;
WHEN CHR(92) THEN aBuffer := '\\';
ELSE
IF (ASCII(aBuffer) < 32) THEN
--aBuffer := '\ u' || REPLACE(SUBSTR(TO_CHAR(ASCII(aBuffer), 'XXXX'), 2, 4), ' ', '0');
aBuffer := cUnicodeEscapePrefix || REPLACE(SUBSTR(TO_CHAR(ASCII(aBuffer), 'XXXX'), 2, 4), ' ', '0');
ELSIF (theAsciiOutputFlag) THEN
--aBuffer := REPLACE(ASCIISTR(aBuffer), '\', \ u');
aBuffer := REPLACE(ASCIISTR(aBuffer), '\', cUnicodeEscapePrefix);
END IF;
END CASE;
aString := aString || aBuffer;
END LOOP;
RETURN '"' || aString || '"';
END escapeString;
/
"
Compiling with JAVA_UNICODE_ESCAPE causes the native character test to fail
"
PLDoc version: 0.9.10-SNAPSHOT
Generating HTML files ...
Generating allschemas.html ...
Generating summary.html ...
Generating generator.html ...
Generating deprecated-list.html ...
Generating index-list.html ...
Generating allpackages.html ...
Generating index.html ...
Generating <unit>.html ...
13 packages processed successfully.
Done (5.806 seconds).
PLDoc version: 0.9.10-SNAPSHOT
Throwable at package <testinput/chinese.pks>: net.sourceforge.pldoc.parser.TokenMgrError: Lexical error at line 3, column 48. Encountered: "\u662f" (26159), after : ""
net.sourceforge.pldoc.parser.TokenMgrError: Lexical error at line 3, column 48. Encountered: "\u662f" (26159), after : ""
at net.sourceforge.pldoc.parser.PLSQLParserTokenManager.getNextToken(PLSQLParserTokenManager.java:4368)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_scan_token(PLSQLParser.java:32480)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_3R_368(PLSQLParser.java:27435)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_3R_339(PLSQLParser.java:29155)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_3R_308(PLSQLParser.java:29162)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_3R_256(PLSQLParser.java:28911)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_3R_168(PLSQLParser.java:29001)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_3R_145(PLSQLParser.java:29460)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_3R_103(PLSQLParser.java:29621)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_3_1(PLSQLParser.java:30124)
at net.sourceforge.pldoc.parser.PLSQLParser.jj_2_1(PLSQLParser.java:25400)
at net.sourceforge.pldoc.parser.PLSQLParser.input(PLSQLParser.java:627)
at net.sourceforge.pldoc.PLDoc.processPackage(PLDoc.java:489)
at net.sourceforge.pldoc.PLDoc.run(PLDoc.java:190)
at net.sourceforge.pldoc.PLDoc.main(PLDoc.java:124)
Package testinput/chinese.pks skipped.
Generating HTML files ...
Generating allschemas.html ...
Generating summary.html ...
Generating generator.html ...
Generating deprecated-list.html ...
Generating index-list.html ...
Generating allpackages.html ...
Generating index.html ...
Generating <unit>.html ...
Following packages were skipped due to errors:
testinput/chinese.pks
1 packages skipped!
0 packages processed successfully.
Done (1.386 seconds).
"