Skip to content
Snippets Groups Projects
Commit 82721077 authored by Lukas Stadler's avatar Lukas Stadler
Browse files

Merge pull request #506 in G/fastr from ~STEPAN.SINDELAR_ORACLE.COM/fastr:fix/small-fixes to master

* commit '55510925':
  as.complex has internal generic dispatch
  Parser: hex float literals without decimal point (e.g. 0x0p0)
parents a4948c63 55510925
No related branches found
No related tags found
No related merge requests found
...@@ -29,12 +29,13 @@ import com.oracle.truffle.api.dsl.Specialization; ...@@ -29,12 +29,13 @@ import com.oracle.truffle.api.dsl.Specialization;
import com.oracle.truffle.api.profiles.ConditionProfile; import com.oracle.truffle.api.profiles.ConditionProfile;
import com.oracle.truffle.r.nodes.builtin.CastBuilder; import com.oracle.truffle.r.nodes.builtin.CastBuilder;
import com.oracle.truffle.r.nodes.builtin.RBuiltinNode; import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
import com.oracle.truffle.r.runtime.RDispatch;
import com.oracle.truffle.r.runtime.builtins.RBuiltin; import com.oracle.truffle.r.runtime.builtins.RBuiltin;
import com.oracle.truffle.r.runtime.data.RDataFactory; import com.oracle.truffle.r.runtime.data.RDataFactory;
import com.oracle.truffle.r.runtime.data.RNull; import com.oracle.truffle.r.runtime.data.RNull;
import com.oracle.truffle.r.runtime.data.model.RAbstractComplexVector; import com.oracle.truffle.r.runtime.data.model.RAbstractComplexVector;
@RBuiltin(name = "as.complex", kind = PRIMITIVE, parameterNames = {"x", "..."}, behavior = PURE) @RBuiltin(name = "as.complex", kind = PRIMITIVE, dispatch = RDispatch.INTERNAL_GENERIC, parameterNames = {"x", "..."}, behavior = PURE)
public abstract class AsComplex extends RBuiltinNode { public abstract class AsComplex extends RBuiltinNode {
private final ConditionProfile noAttributes = ConditionProfile.createBinaryProfile(); private final ConditionProfile noAttributes = ConditionProfile.createBinaryProfile();
......
...@@ -86,6 +86,7 @@ public class ParserGeneration { ...@@ -86,6 +86,7 @@ public class ParserGeneration {
"remove deprecated calls to Source functions", "remove deprecated calls to Source functions",
"remove restricion on fixed number of digits in UTF codes", "remove restricion on fixed number of digits in UTF codes",
"support ? for help", "support ? for help",
"support for hex float literals" "support for hex float literals",
"support for hex float literals without decimal point: 0x0p0",
}; };
} }
...@@ -575,13 +575,13 @@ INTEGER ...@@ -575,13 +575,13 @@ INTEGER
COMPLEX COMPLEX
: ('0'..'9')+ '.' ('0'..'9')* EXPONENT? 'i' { setText(getText().substring(0, getText().length()-1)); } : ('0'..'9')+ '.' ('0'..'9')* EXPONENT? 'i' { setText(getText().substring(0, getText().length()-1)); }
| '.'? ('0'..'9')+ EXPONENT? 'i' { setText(getText().substring(0, getText().length()-1)); } | '.'? ('0'..'9')+ EXPONENT? 'i' { setText(getText().substring(0, getText().length()-1)); }
| '0x' HEX_DIGIT+ ('.' HEX_DIGIT* HEX_EXPONENT)? 'i' { setText(getText().substring(0, getText().length()-1)); } | '0x' HEX_DIGIT+ ('.'? HEX_DIGIT* HEX_EXPONENT)? 'i' { setText(getText().substring(0, getText().length()-1)); }
; ;
DOUBLE DOUBLE
: ('0'..'9')+ '.' ('0'..'9')* EXPONENT? : ('0'..'9')+ '.' ('0'..'9')* EXPONENT?
| '.'? ('0'..'9')+ EXPONENT? | '.'? ('0'..'9')+ EXPONENT?
| '0x' HEX_DIGIT+ ('.' HEX_DIGIT* HEX_EXPONENT)? | '0x' HEX_DIGIT+ ('.'? HEX_DIGIT* HEX_EXPONENT)?
; ;
DD : '..' ('0'..'9')+ ; DD : '..' ('0'..'9')+ ;
......
...@@ -54,6 +54,8 @@ public class TestParser extends TestBase { ...@@ -54,6 +54,8 @@ public class TestParser extends TestBase {
@Test @Test
public void testDoubleLiterals() { public void testDoubleLiterals() {
assertEval("0x1.1p2"); assertEval("0x1.1p2");
assertEval("0x1p2");
assertEval("0x0p0");
assertEval("0x1.aP2"); assertEval("0x1.aP2");
assertEval("0xa.p2"); assertEval("0xa.p2");
assertEval("0xa.bp1i"); assertEval("0xa.bp1i");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment