@Override public DStrNode createDStrNode(ISourcePosition position) { return new DStrNode(position, lexer.getEncoding()); }
@Override public DStrNode createDStrNode(ISourcePosition position) { return new DStrNode(position, lexer.getEncoding()); }
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { yyVal = ((Node)yyVals[0+yyTop]) instanceof EvStrNode ? new DStrNode(((Node)yyVals[0+yyTop]).getPosition(), lexer.getEncoding()).add(((Node)yyVals[0+yyTop])) : ((Node)yyVals[0+yyTop]); /* NODE *node = $1; if (!node) { node = NEW_STR(STR_NEW0()); } else { node = evstr2dstr(node); } $$ = node; */ return yyVal; } };
protected ByteList createByteList(RubyYaccLexer lexer) { if (lexer.isOneEight()) return new ByteList(); return new ByteList(new byte[]{}, lexer.getEncoding()); }
protected ByteList createByteList(RubyYaccLexer lexer) { if (lexer.isOneEight()) return new ByteList(); return new ByteList(new byte[]{}, lexer.getEncoding()); }
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { yyVal = ((Node)yyVals[0+yyTop]) instanceof EvStrNode ? new DStrNode(((Node)yyVals[0+yyTop]).getPosition(), lexer.getEncoding()).add(((Node)yyVals[0+yyTop])) : ((Node)yyVals[0+yyTop]); /* NODE *node = $1; if (!node) { node = NEW_STR(STR_NEW0()); } else { node = evstr2dstr(node); } $$ = node; */ return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { yyVal = ((Node)yyVals[0+yyTop]) instanceof EvStrNode ? new DStrNode(((Node)yyVals[0+yyTop]).getPosition(), lexer.getEncoding()).add(((Node)yyVals[0+yyTop])) : ((Node)yyVals[0+yyTop]); /* NODE *node = $1; if (!node) { node = NEW_STR(STR_NEW0()); } else { node = evstr2dstr(node); } $$ = node; */ return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { yyVal = ((ListNode)yyVals[-2+yyTop]).add(((Node)yyVals[-1+yyTop]) instanceof EvStrNode ? new DStrNode(((ListNode)yyVals[-2+yyTop]).getPosition(), lexer.getEncoding()).add(((Node)yyVals[-1+yyTop])) : ((Node)yyVals[-1+yyTop])); return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { ByteList aChar = ByteList.create(""); aChar.setEncoding(lexer.getEncoding()); yyVal = lexer.createStrNode(((Token)yyVals[0+yyTop]).getPosition(), aChar, 0); return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { yyVal = ((ListNode)yyVals[-2+yyTop]).add(((Node)yyVals[-1+yyTop]) instanceof EvStrNode ? new DStrNode(((ListNode)yyVals[-2+yyTop]).getPosition(), lexer.getEncoding()).add(((Node)yyVals[-1+yyTop])) : ((Node)yyVals[-1+yyTop])); return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { ByteList aChar = ByteList.create(""); aChar.setEncoding(lexer.getEncoding()); yyVal = lexer.createStrNode(((Token)yyVals[0+yyTop]).getPosition(), aChar, 0); return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { yyVal = ((ListNode)yyVals[-2+yyTop]).add(((Node)yyVals[-1+yyTop]) instanceof EvStrNode ? new DStrNode(((ListNode)yyVals[-2+yyTop]).getPosition(), lexer.getEncoding()).add(((Node)yyVals[-1+yyTop])) : ((Node)yyVals[-1+yyTop])); return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { yyVal = ((ListNode)yyVals[-2+yyTop]).add(((Node)yyVals[-1+yyTop]) instanceof EvStrNode ? new DStrNode(((ListNode)yyVals[-2+yyTop]).getPosition(), lexer.getEncoding()).add(((Node)yyVals[-1+yyTop])) : ((Node)yyVals[-1+yyTop])); return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { ByteList aChar = ByteList.create(""); aChar.setEncoding(lexer.getEncoding()); yyVal = lexer.createStrNode(((Token)yyVals[0+yyTop]).getPosition(), aChar, 0); return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { ByteList aChar = ByteList.create(""); aChar.setEncoding(lexer.getEncoding()); yyVal = lexer.createStrNode(((Token)yyVals[0+yyTop]).getPosition(), aChar, 0); return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { ByteList aChar = ByteList.create((String) ((Token)yyVals[0+yyTop]).getValue()); aChar.setEncoding(lexer.getEncoding()); yyVal = lexer.createStrNode(((Token)yyVals[-1+yyTop]).getPosition(), aChar, 0); return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { ByteList aChar = ByteList.create((String) ((Token)yyVals[0+yyTop]).getValue()); aChar.setEncoding(lexer.getEncoding()); yyVal = lexer.createStrNode(((Token)yyVals[-1+yyTop]).getPosition(), aChar, 0); return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { ByteList aChar = ByteList.create((String) ((Token)yyVals[0+yyTop]).getValue()); aChar.setEncoding(lexer.getEncoding()); yyVal = lexer.createStrNode(((Token)yyVals[-1+yyTop]).getPosition(), aChar, 0); return yyVal; } };
@Override public Object execute(ParserSupport support, RubyYaccLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { ByteList aChar = ByteList.create((String) ((Token)yyVals[0+yyTop]).getValue()); aChar.setEncoding(lexer.getEncoding()); yyVal = lexer.createStrNode(((Token)yyVals[-1+yyTop]).getPosition(), aChar, 0); return yyVal; } };
public StrNode createStrNode(ISourcePosition position, ByteList buffer, int flags) { Encoding bufferEncoding = buffer.getEncoding(); int codeRange = StringSupport.codeRangeScan(bufferEncoding, buffer); if ((flags & RubyYaccLexer.STR_FUNC_REGEXP) == 0 && bufferEncoding.isAsciiCompatible()) { // If we have characters outside 7-bit range and we are still ascii then change to ascii-8bit if (codeRange == StringSupport.CR_7BIT) { // Do nothing like MRI } else if (getEncoding() == RubyYaccLexer.USASCII_ENCODING && bufferEncoding != RubyYaccLexer.UTF8_ENCODING) { codeRange = ParserSupport.associateEncoding(buffer, RubyYaccLexer.ASCII8BIT_ENCODING, codeRange); } } return new StrNode(position, buffer, codeRange); }