private int singleQuote(boolean commandState) throws IOException { int label = isLabelPossible(commandState) ? str_label : 0; lex_strterm = new StringTerm(str_squote|label, '\0', '\'', ruby_sourceline); yaccValue = Q; return RubyParser.tSTRING_BEG; }
private void escaped(RubyLexer lexer, ByteList buffer) throws java.io.IOException { int c; switch (c = lexer.nextc()) { case '\\': parseEscapeIntoBuffer(lexer, buffer); break; case EOF: lexer.compile_error("Invalid escape character syntax"); default: buffer.append(c); } }
if (c == end && nest == 0) return endFound(lexer); ByteList buffer = createByteList(lexer); lexer.newtok(true); if ((flags & STR_FUNC_EXPAND) != 0 && c == '#') { enc[0] = lexer.getEncoding(); if (parseStringIntoBuffer(lexer, buffer, enc) == EOF) { lexer.setRubySourceline(startLine); lexer.compile_error("unterminated " + ((flags & STR_FUNC_REGEXP) != 0 ? "regexp" : "string") + " meets end of file");
if ((c = new StringTerm(flags, '\0', '\n').parseStringIntoBuffer(lexer, src, str)) == RubyYaccLexer.EOF) { syntaxError(src); lexer.setStrTerm(new StringTerm(-1, '\0', '\0')); lexer.yaccValue = lexer.createStrNode(position, str, 0); return Tokens.tSTRING_CONTENT;
mixedEscape(lexer, buffer.getEncoding(), encoding); if (regexp) { src.unread(c); parseEscapeIntoBuffer(lexer, encoding, src, buffer); mixedEscape(lexer, buffer.getEncoding(), encoding); mixedEscape(lexer, buffer.getEncoding(), encoding); if (addNonAsciiToBuffer(c, src, encoding, lexer, buffer) == RubyYaccLexer.EOF) return RubyYaccLexer.EOF; hasNonAscii = true; if (buffer.getEncoding() != encoding) { mixedEscape(lexer, buffer.getEncoding(), encoding);
mixedEscape(lexer, buffer.getEncoding(), enc[0]); mixedEscape(lexer, buffer.getEncoding(), enc[0]); continue; if (c == end && !simple_re_meta(c)) { buffer.append(c); continue; parseEscapeIntoBuffer(lexer, buffer); mixedEscape(lexer, buffer.getEncoding(), enc[0]); mixedEscape(lexer, buffer.getEncoding(), enc[0]); continue; hasNonAscii = true; if (buffer.getEncoding() != enc[0]) { mixedEscape(lexer, buffer.getEncoding(), enc[0]); continue;
escaped(lexer, encoding, src, buffer); break; case 'C': escaped(lexer, encoding, src, buffer); break; case 'c': buffer.append(new byte[] { '\\', 'c' }); escaped(lexer, encoding, src, buffer); break; case RubyYaccLexer.EOF: default: if (!lexer.isOneEight() && !Encoding.isAscii((byte) c)) { addNonAsciiToBuffer(c, src, encoding, lexer, buffer); } else { if (c != '\\' || c != end) buffer.append('\\');
private int endFound(RubyYaccLexer lexer, LexerSource src) throws IOException { if ((flags & RubyYaccLexer.STR_FUNC_QWORDS) != 0) { flags = -1; lexer.getPosition(); return ' '; } if ((flags & RubyYaccLexer.STR_FUNC_REGEXP) != 0) { RegexpOptions options = parseRegexpFlags(src); ByteList regexpBytelist = ByteList.create(""); lexer.setValue(new RegexpNode(src.getPosition(), regexpBytelist, options)); return Tokens.tREGEXP_END; } lexer.setValue(new Token("\"", lexer.getPosition())); return Tokens.tSTRING_END; }
if (c == end && nest == 0) return endFound(lexer); ByteList buffer = createByteList(lexer); lexer.newtok(true); if ((flags & STR_FUNC_EXPAND) != 0 && c == '#') { enc[0] = lexer.getEncoding(); if (parseStringIntoBuffer(lexer, buffer, enc) == EOF) { lexer.setRubySourceline(startLine); lexer.compile_error("unterminated " + ((flags & STR_FUNC_REGEXP) != 0 ? "regexp" : "string") + " meets end of file");
if ((c = new StringTerm(flags, '\0', '\n').parseStringIntoBuffer(lexer, src, str)) == RubyYaccLexer.EOF) { syntaxError(src); lexer.setStrTerm(new StringTerm(-1, '\0', '\0')); lexer.yaccValue = lexer.createStrNode(position, str, 0); return Tokens.tSTRING_CONTENT;
mixedEscape(lexer, buffer.getEncoding(), encoding); if (regexp) { src.unread(c); parseEscapeIntoBuffer(lexer, encoding, src, buffer); mixedEscape(lexer, buffer.getEncoding(), encoding); mixedEscape(lexer, buffer.getEncoding(), encoding); if (addNonAsciiToBuffer(c, src, encoding, lexer, buffer) == RubyYaccLexer.EOF) return RubyYaccLexer.EOF; hasNonAscii = true; if (buffer.getEncoding() != encoding) { mixedEscape(lexer, buffer.getEncoding(), encoding);
mixedEscape(lexer, buffer.getEncoding(), enc[0]); mixedEscape(lexer, buffer.getEncoding(), enc[0]); continue; if (c == end && !simple_re_meta(c)) { buffer.append(c); continue; parseEscapeIntoBuffer(lexer, buffer); mixedEscape(lexer, buffer.getEncoding(), enc[0]); mixedEscape(lexer, buffer.getEncoding(), enc[0]); continue; hasNonAscii = true; if (buffer.getEncoding() != enc[0]) { mixedEscape(lexer, buffer.getEncoding(), enc[0]); continue;
escaped(lexer, encoding, src, buffer); break; case 'C': escaped(lexer, encoding, src, buffer); break; case 'c': buffer.append(new byte[] { '\\', 'c' }); escaped(lexer, encoding, src, buffer); break; case RubyYaccLexer.EOF: default: if (!lexer.isOneEight() && !Encoding.isAscii((byte) c)) { addNonAsciiToBuffer(c, src, encoding, lexer, buffer); } else { if (c != '\\' || c != end) buffer.append('\\');
private int endFound(RubyYaccLexer lexer, LexerSource src) throws IOException { if ((flags & RubyYaccLexer.STR_FUNC_QWORDS) != 0) { flags = -1; lexer.getPosition(); return ' '; } if ((flags & RubyYaccLexer.STR_FUNC_REGEXP) != 0) { RegexpOptions options = parseRegexpFlags(src); ByteList regexpBytelist = ByteList.create(""); lexer.setValue(new RegexpNode(src.getPosition(), regexpBytelist, options)); return Tokens.tREGEXP_END; } lexer.setValue(new Token("\"", lexer.getPosition())); return Tokens.tSTRING_END; }
if (c == end && nest == 0) return endFound(lexer, src); ByteList buffer = createByteList(lexer); if (parseStringIntoBuffer(lexer, src, buffer) == RubyYaccLexer.EOF) { throw new SyntaxException(PID.STRING_HITS_EOF, src.getPosition(), src.getCurrentLine(), "unterminated string meets end of file");
private int doubleQuote(boolean commandState) throws IOException { int label = isLabelPossible(commandState) ? str_label : 0; lex_strterm = new StringTerm(str_dquote|label, '\0', '"', ruby_sourceline); yaccValue = QQ; return RubyParser.tSTRING_BEG; }
enc[0] = lexer.getEncoding(); if ((c = new StringTerm(flags, '\0', '\n', lexer.getRubySourceline()).parseStringIntoBuffer(lexer, tok, enc)) == EOF) { if (lexer.eofp) return error(lexer, len, str, eos); return restore(lexer);
private void escaped(RubyLexer lexer, ByteList buffer) throws java.io.IOException { int c; switch (c = lexer.nextc()) { case '\\': parseEscapeIntoBuffer(lexer, buffer); break; case EOF: lexer.compile_error("Invalid escape character syntax"); default: buffer.append(c); } }