|
@@ -47,6 +47,7 @@ smalltalk.parser = (function(){
|
|
|
"string": parse_string,
|
|
|
"symbol": parse_symbol,
|
|
|
"number": parse_number,
|
|
|
+ "hex": parse_hex,
|
|
|
"float": parse_float,
|
|
|
"integer": parse_integer,
|
|
|
"literalArray": parse_literalArray,
|
|
@@ -770,9 +771,12 @@ smalltalk.parser = (function(){
|
|
|
var pos0;
|
|
|
|
|
|
pos0 = pos;
|
|
|
- result0 = parse_float();
|
|
|
+ result0 = parse_hex();
|
|
|
if (result0 === null) {
|
|
|
- result0 = parse_integer();
|
|
|
+ result0 = parse_float();
|
|
|
+ if (result0 === null) {
|
|
|
+ result0 = parse_integer();
|
|
|
+ }
|
|
|
}
|
|
|
if (result0 !== null) {
|
|
|
result0 = (function(offset, n) {
|
|
@@ -786,6 +790,82 @@ smalltalk.parser = (function(){
|
|
|
return result0;
|
|
|
}
|
|
|
|
|
|
+ function parse_hex() {
|
|
|
+ var result0, result1, result2, result3;
|
|
|
+ var pos0, pos1;
|
|
|
+
|
|
|
+ pos0 = pos;
|
|
|
+ pos1 = pos;
|
|
|
+ if (/^[\-]/.test(input.charAt(pos))) {
|
|
|
+ result0 = input.charAt(pos);
|
|
|
+ pos++;
|
|
|
+ } else {
|
|
|
+ result0 = null;
|
|
|
+ if (reportFailures === 0) {
|
|
|
+ matchFailed("[\\-]");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ result0 = result0 !== null ? result0 : "";
|
|
|
+ if (result0 !== null) {
|
|
|
+ if (input.substr(pos, 3) === "16r") {
|
|
|
+ result1 = "16r";
|
|
|
+ pos += 3;
|
|
|
+ } else {
|
|
|
+ result1 = null;
|
|
|
+ if (reportFailures === 0) {
|
|
|
+ matchFailed("\"16r\"");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (result1 !== null) {
|
|
|
+ if (/^[0-9a-zA-Z]/.test(input.charAt(pos))) {
|
|
|
+ result3 = input.charAt(pos);
|
|
|
+ pos++;
|
|
|
+ } else {
|
|
|
+ result3 = null;
|
|
|
+ if (reportFailures === 0) {
|
|
|
+ matchFailed("[0-9a-zA-Z]");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (result3 !== null) {
|
|
|
+ result2 = [];
|
|
|
+ while (result3 !== null) {
|
|
|
+ result2.push(result3);
|
|
|
+ if (/^[0-9a-zA-Z]/.test(input.charAt(pos))) {
|
|
|
+ result3 = input.charAt(pos);
|
|
|
+ pos++;
|
|
|
+ } else {
|
|
|
+ result3 = null;
|
|
|
+ if (reportFailures === 0) {
|
|
|
+ matchFailed("[0-9a-zA-Z]");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ result2 = null;
|
|
|
+ }
|
|
|
+ if (result2 !== null) {
|
|
|
+ result0 = [result0, result1, result2];
|
|
|
+ } else {
|
|
|
+ result0 = null;
|
|
|
+ pos = pos1;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ result0 = null;
|
|
|
+ pos = pos1;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ result0 = null;
|
|
|
+ pos = pos1;
|
|
|
+ }
|
|
|
+ if (result0 !== null) {
|
|
|
+ result0 = (function(offset, neg, num) {return parseInt((neg + num.join("")), 16)})(pos0, result0[0], result0[2]);
|
|
|
+ }
|
|
|
+ if (result0 === null) {
|
|
|
+ pos = pos0;
|
|
|
+ }
|
|
|
+ return result0;
|
|
|
+ }
|
|
|
+
|
|
|
function parse_float() {
|
|
|
var result0, result1, result2, result3, result4;
|
|
|
var pos0, pos1;
|
|
@@ -1271,7 +1351,8 @@ smalltalk.parser = (function(){
|
|
|
}
|
|
|
if (result0 !== null) {
|
|
|
result0 = (function(offset, val) {
|
|
|
- return smalltalk.ValueNode._new()._value_(val)
|
|
|
+ return smalltalk.ValueNode._new()
|
|
|
+ ._value_(val)
|
|
|
})(pos0, result0);
|
|
|
}
|
|
|
if (result0 === null) {
|
|
@@ -3103,7 +3184,7 @@ smalltalk.parser = (function(){
|
|
|
if (result0 !== null) {
|
|
|
result0 = (function(offset, val) {
|
|
|
return smalltalk.JSStatementNode._new()
|
|
|
- ._source_(val.join(""))
|
|
|
+ ._source_(val.join(""))
|
|
|
})(pos0, result0[1]);
|
|
|
}
|
|
|
if (result0 === null) {
|
|
@@ -3159,9 +3240,9 @@ smalltalk.parser = (function(){
|
|
|
if (result0 !== null) {
|
|
|
result0 = (function(offset, pattern, sequence) {
|
|
|
return smalltalk.MethodNode._new()
|
|
|
- ._selector_(pattern[0])
|
|
|
- ._arguments_(pattern[1])
|
|
|
- ._nodes_([sequence])
|
|
|
+ ._selector_(pattern[0])
|
|
|
+ ._arguments_(pattern[1])
|
|
|
+ ._nodes_([sequence])
|
|
|
})(pos0, result0[1], result0[3]);
|
|
|
}
|
|
|
if (result0 === null) {
|