return null; String unquoted = unSingleQuote(quoted); if (unquoted == null) { return quoted; BasicEnvironment benv = getEnvironment(); if (benv != null) { backslashProcessingEnabled = benv return unquoted; return decodeString(token, unquoted);
/** * @param parser the {@link AbstractParser} instance * @deprecated clients should invoke {@link #lexer(Monitor, DerivedPrsStream)} */ @Deprecated public void lexToTokens(Monitor monitor, AbstractParser parser) { lexer(monitor, parser.getIPrsStream()); }
public AbstractLexer getLexer() { return getAbstractParser().getLexer(); }
public void lexerError(int errorCode, int startOffset, int endOffset) { ProblemHandler problemHandler = getProblemHandler(); if (problemHandler != null) { String inputText = '"' + parser.computeInputString(startOffset, endOffset) + '"'; int tokenIndex = parser.getIPrsStream().getTokenIndexAtCharacter(startOffset); if (tokenIndex < 0) { tokenIndex = -tokenIndex; } String locInfo = parser.getIPrsStream().getEndLineNumberOfTokenAt(tokenIndex) + ":" + parser.getIPrsStream().getEndColumnOfTokenAt(tokenIndex); //$NON-NLS-1$ String messageTemplate = ProblemHandler.ERROR_MESSAGES[errorCode]; String message = OCLMessages.bind(messageTemplate, locInfo, inputText); problemHandler.lexerProblem(Severity.ERROR, message, null, startOffset, endOffset); } }
/** * Define the input text by reading from a reader. * * @param reader * providing the source text * @param fileName * the associated finleName of the input, or <code>null</code> if none. * @throws IOException * if reading fails * @since 3.0 */ public void reset(Reader reader, String fileName) throws IOException { AbstractLexer lexer = getLexer(); lexer.reset(reader, fileName); AbstractParser parser = getAbstractParser(); if (parser.getIPrsStream() == null) { parser.reset(lexer.getILexStream()); } }
char ch = decodeEscapeSequence(i); if (ch != StringCharacterIterator.DONE) { s.append(ch); BasicEnvironment benv = getEnvironment(); benv.problem(ProblemHandler.Severity.ERROR, ProblemHandler.Phase.PARSER, OCLMessages .bind(OCLMessages.InvalidEscapeSequence_ERROR, string.substring(iStart, i.getIndex())),
BasicEnvironment benv = getEnvironment(); return decodeString(token, quoted.substring(1, quotedLength-1));
case '3' : { int c1 = c - '0'; int c2 = decodeOctalCharacter(i); if (c2 < 0) { return (char)(c1); int c3 = decodeOctalCharacter(i); if (c3 < 0) { return (char)((c1 << 3) + c2); case '7' : { int c1 = c - '0'; int c2 = decodeOctalCharacter(i); if (c2 < 0) { i.previous(); int c1 = decodeHexCharacter(i.next()); int c2 = decodeHexCharacter(i.next()); if ((c1 < 0) || (c2 < 0)) { break; int c1 = decodeHexCharacter(i.next()); int c2 = decodeHexCharacter(i.next()); int c3 = decodeHexCharacter(i.next()); int c4 = decodeHexCharacter(i.next()); if ((c1 < 0) || (c2 < 0) || (c3 < 0) || (c4 < 0)) { break;
protected AbstractAnalyzer(AbstractParser parser) { this.parser = parser; this.environment = parser.getEnvironment(); }
/** * @deprecated clients should invoke {@link #parser()} */ @Deprecated public CSTNode parseTokensToCST() { return parser(null, defaultRepairCount); }
/** * Obtains the text from which the specified CST <code>node</code> was * parsed. * * @param node * a concrete syntax node * * @return its text */ public String computeInputString(CSTNode node) { return getAbstractParser().computeInputString(node.getStartOffset(), node.getEndOffset()); }
/** * <p> * Initializes a concrete-syntax node's start and end offsets from the * current token in the parser stream. * <p> * * <p> * <b>Note:</b> this method resided in the OCLEssential.g template since 1.2 * It has been incorporated in the abstract parser since 3.0 * </p> * * @param cstNode a concrete-syntax node * * @since 3.0 */ protected void setOffsets(CSTNode cstNode) { IToken firstToken = getRhsIToken(1); cstNode.setStartToken(firstToken); cstNode.setEndToken(firstToken); cstNode.setStartOffset(firstToken.getStartOffset()); cstNode.setEndOffset(firstToken.getEndOffset()-1); }
public void lexerError(int errorCode, int startOffset, int endOffset) { ProblemHandler problemHandler = getProblemHandler(); if (problemHandler != null) { String inputText = '"' + parser.computeInputString(startOffset, endOffset) + '"'; int tokenIndex = parser.getIPrsStream().getTokenIndexAtCharacter(startOffset); if (tokenIndex < 0) { tokenIndex = -tokenIndex; } String locInfo = parser.getIPrsStream().getEndLineNumberOfTokenAt(tokenIndex) + ":" + parser.getIPrsStream().getEndColumnOfTokenAt(tokenIndex); //$NON-NLS-1$ String messageTemplate = ProblemHandler.ERROR_MESSAGES[errorCode]; String message = OCLMessages.bind(messageTemplate, locInfo, inputText); problemHandler.lexerProblem(Severity.ERROR, message, null, startOffset, endOffset); } }
/** * Define the input text by reading from a reader. * * @param reader * providing the source text * @param fileName * the associated finleName of the input, or <code>null</code> if none. * @throws IOException * if reading fails * @since 3.0 */ public void reset(Reader reader, String fileName) throws IOException { AbstractLexer lexer = getLexer(); lexer.reset(reader, fileName); AbstractParser parser = getAbstractParser(); if (parser.getIPrsStream() == null) { parser.reset(lexer.getILexStream()); } }
char ch = decodeEscapeSequence(i); if (ch != StringCharacterIterator.DONE) { s.append(ch); BasicEnvironment benv = getEnvironment(); benv.problem(ProblemHandler.Severity.ERROR, ProblemHandler.Phase.PARSER, OCLMessages .bind(OCLMessages.InvalidEscapeSequence_ERROR, string.substring(iStart, i.getIndex())),
BasicEnvironment benv = getEnvironment(); return decodeString(token, quoted.substring(1, quotedLength-1));
case '3' : { int c1 = c - '0'; int c2 = decodeOctalCharacter(i); if (c2 < 0) { return (char)(c1); int c3 = decodeOctalCharacter(i); if (c3 < 0) { return (char)((c1 << 3) + c2); case '7' : { int c1 = c - '0'; int c2 = decodeOctalCharacter(i); if (c2 < 0) { i.previous(); int c1 = decodeHexCharacter(i.next()); int c2 = decodeHexCharacter(i.next()); if ((c1 < 0) || (c2 < 0)) { break; int c1 = decodeHexCharacter(i.next()); int c2 = decodeHexCharacter(i.next()); int c3 = decodeHexCharacter(i.next()); int c4 = decodeHexCharacter(i.next()); if ((c1 < 0) || (c2 < 0) || (c3 < 0) || (c4 < 0)) { break;
protected AbstractAnalyzer(AbstractParser parser) { this.parser = parser; this.environment = parser.getEnvironment(); }
/** * @deprecated clients should invoke {@link #parser()} */ @Deprecated public CSTNode parseTokensToCST() { return parser(null, defaultRepairCount); }
/** * Obtains the text from which the specified CST <code>node</code> was * parsed. * * @param node * a concrete syntax node * * @return its text */ public String computeInputString(CSTNode node) { return getAbstractParser().computeInputString(node.getStartOffset(), node.getEndOffset()); }