/** * generate parsing error */ public void yyerror(String message) { lexer.compile_error(PID.GRAMMAR_ERROR, message); }
/** * generate parsing error */ public void yyerror(String message) { lexer.compile_error(PID.GRAMMAR_ERROR, message); }
/** * generate parsing error * @param message text to be displayed. * @param expected list of acceptable tokens, if available. */ public void yyerror(String message, String[] expected, String found) { lexer.compile_error(PID.GRAMMAR_ERROR, message + ", unexpected " + found + "\n"); }
/** * generate parsing error * @param message text to be displayed. * @param expected list of acceptable tokens, if available. */ public void yyerror(String message, String[] expected, String found) { lexer.compile_error(PID.GRAMMAR_ERROR, message + ", unexpected " + found + "\n"); }
@Override protected void mismatchedRegexpEncodingError(Encoding optionEncoding, Encoding encoding) { compile_error(PID.REGEXP_ENCODING_MISMATCH, "regexp encoding option '" + optionsEncodingChar(optionEncoding) + "' differs from source encoding '" + encoding + "'"); }
public Node new_yield(ISourcePosition position, Node node) { if (node != null && node instanceof BlockPassNode) { lexer.compile_error(PID.BLOCK_ARG_UNEXPECTED, "Block argument should not be given."); } return new YieldNode(position, node); }
public void backrefAssignError(Node node) { if (node instanceof NthRefNode) { String varName = "$" + ((NthRefNode) node).getMatchNumber(); lexer.compile_error(PID.INVALID_ASSIGNMENT, "Can't set variable " + varName + '.'); } else if (node instanceof BackRefNode) { String varName = "$" + ((BackRefNode) node).getType(); lexer.compile_error(PID.INVALID_ASSIGNMENT, "Can't set variable " + varName + '.'); } }
@Override protected RegexpOptions parseRegexpFlags() throws IOException { StringBuilder unknownFlags = new StringBuilder(10); RegexpOptions options = parseRegexpFlags(unknownFlags); if (unknownFlags.length() != 0) { compile_error(PID.REGEXP_UNKNOWN_OPTION, "unknown regexp option" + (unknownFlags.length() > 1 ? "s" : "") + " - " + unknownFlags); } return options; }
public void backrefAssignError(Node node) { if (node instanceof NthRefNode) { String varName = "$" + ((NthRefNode) node).getMatchNumber(); lexer.compile_error(PID.INVALID_ASSIGNMENT, "Can't set variable " + varName + '.'); } else if (node instanceof BackRefNode) { String varName = "$" + ((BackRefNode) node).getType(); lexer.compile_error(PID.INVALID_ASSIGNMENT, "Can't set variable " + varName + '.'); } }
@Override protected void mismatchedRegexpEncodingError(Encoding optionEncoding, Encoding encoding) { compile_error(PID.REGEXP_ENCODING_MISMATCH, "regexp encoding option '" + optionsEncodingChar(optionEncoding) + "' differs from source encoding '" + encoding + "'"); }
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); } }
public void frobnicate_fcall_args(FCallNode fcall, Node args, Node iter) { if (args instanceof BlockPassNode) { if (iter != null) lexer.compile_error(PID.BLOCK_ARG_AND_BLOCK_GIVEN, "Both block arg and actual block given."); BlockPassNode blockPass = (BlockPassNode) args; args = blockPass.getArgsNode(); iter = blockPass; } fcall.setArgsNode(args); fcall.setIterNode(iter); }
public void frobnicate_fcall_args(FCallNode fcall, Node args, Node iter) { if (args instanceof BlockPassNode) { if (iter != null) lexer.compile_error(PID.BLOCK_ARG_AND_BLOCK_GIVEN, "Both block arg and actual block given."); BlockPassNode blockPass = (BlockPassNode) args; args = blockPass.getArgsNode(); iter = blockPass; } fcall.setArgsNode(args); fcall.setIterNode(iter); }
@Override public Object execute(ParserSupport support, RubyLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { if (((Node)yyVals[-1+yyTop]) != null && ((BlockAcceptingNode)yyVals[-1+yyTop]).getIterNode() instanceof BlockPassNode) { lexer.compile_error(PID.BLOCK_ARG_AND_BLOCK_GIVEN, "Both block arg and actual block given."); } yyVal = ((BlockAcceptingNode)yyVals[-1+yyTop]).setIterNode(((IterNode)yyVals[0+yyTop])); ((Node)yyVal).setPosition(((Node)yyVals[-1+yyTop]).getPosition()); return yyVal; } };
@Override public Object execute(ParserSupport support, RubyLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { if (support.isInClass() && !support.isInDef() && !support.getCurrentScope().isBlockScope()) { lexer.compile_error(PID.TOP_LEVEL_RETURN, "Invalid return in class/module body"); } yyVal = ((ISourcePosition)yyVals[0+yyTop]); return yyVal; } };
private int getNumberToken(String number, boolean seen_e, boolean seen_point, int nondigit) throws IOException { boolean isFloat = seen_e || seen_point; if (nondigit != '\0') { compile_error(PID.TRAILING_UNDERSCORE_IN_NUMBER, "Trailing '_' in number."); } else if (isFloat) { int suffix = numberLiteralSuffix(seen_e ? SUFFIX_I : SUFFIX_ALL); return getFloatToken(number, suffix); } return getIntegerToken(number, 10, numberLiteralSuffix(SUFFIX_ALL)); }
@Override public Object execute(ParserSupport support, RubyLexer lexer, Object yyVal, Object[] yyVals, int yyTop) { if (support.isInClass() && !support.isInDef() && !support.getCurrentScope().isBlockScope()) { lexer.compile_error(PID.TOP_LEVEL_RETURN, "Invalid return in class/module body"); } yyVal = ((ISourcePosition)yyVals[0+yyTop]); return yyVal; } };
private int getNumberToken(String number, boolean seen_e, boolean seen_point, int nondigit) throws IOException { boolean isFloat = seen_e || seen_point; if (nondigit != '\0') { compile_error(PID.TRAILING_UNDERSCORE_IN_NUMBER, "Trailing '_' in number."); } else if (isFloat) { int suffix = numberLiteralSuffix(seen_e ? SUFFIX_I : SUFFIX_ALL); return getFloatToken(number, suffix); } return getIntegerToken(number, 10, numberLiteralSuffix(SUFFIX_ALL)); }
public Node new_call(Node receiver, ByteList callType, ByteList name, Node argsNode, Node iter) { if (argsNode instanceof BlockPassNode) { if (iter != null) lexer.compile_error(PID.BLOCK_ARG_AND_BLOCK_GIVEN, "Both block arg and actual block given."); BlockPassNode blockPass = (BlockPassNode) argsNode; return new CallNode(position(receiver, argsNode), receiver, symbolID(name), blockPass.getArgsNode(), blockPass, isLazy(callType)); } return new CallNode(position(receiver, argsNode), receiver, symbolID(name), argsNode, iter, isLazy(callType)); }
public Node new_call(Node receiver, ByteList callType, ByteList name, Node argsNode, Node iter) { if (argsNode instanceof BlockPassNode) { if (iter != null) lexer.compile_error(PID.BLOCK_ARG_AND_BLOCK_GIVEN, "Both block arg and actual block given."); BlockPassNode blockPass = (BlockPassNode) argsNode; return new CallNode(position(receiver, argsNode), receiver, symbolID(name), blockPass.getArgsNode(), blockPass, isLazy(callType)); } return new CallNode(position(receiver, argsNode), receiver, symbolID(name), argsNode, iter, isLazy(callType)); }