bug fix
This commit is contained in:
+37
-35
@@ -40,7 +40,8 @@ fun parse(str) {
|
|||||||
if ended(ctx):
|
if ended(ctx):
|
||||||
return none, 'Source only contains whitespace';
|
return none, 'Source only contains whitespace';
|
||||||
|
|
||||||
return parseAny(ctx);
|
res, err = parseAny(ctx);
|
||||||
|
return res, err;
|
||||||
}
|
}
|
||||||
|
|
||||||
fun parseArray(ctx) {
|
fun parseArray(ctx) {
|
||||||
@@ -228,43 +229,44 @@ fun parseAny(ctx) {
|
|||||||
assert(not ended(ctx));
|
assert(not ended(ctx));
|
||||||
|
|
||||||
if current(ctx) == '[':
|
if current(ctx) == '[':
|
||||||
return parseArray(ctx);
|
res, err = parseArray(ctx);
|
||||||
|
else if current(ctx) == '{':
|
||||||
if current(ctx) == '{':
|
res, err = parseObject(ctx);
|
||||||
return parseObject(ctx);
|
else if current(ctx) == '"':
|
||||||
|
res, err = parseString(ctx);
|
||||||
if current(ctx) == '"':
|
else if isDigit(current(ctx)):
|
||||||
return parseString(ctx);
|
res, err = parseNumber(ctx);
|
||||||
|
else
|
||||||
if isDigit(current(ctx)):
|
|
||||||
return parseNumber(ctx);
|
|
||||||
|
|
||||||
error("Not implemented yet");
|
error("Not implemented yet");
|
||||||
|
return res, err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#tests = ['', '1', '10', '1.10', '"jeje"', '[]', '[1,2,3]', ' [ ] ', ' [ 1 , 2 , 3 ]', '{}', ' { } ', '{"hoy":4}', ' { "hoy" : 4 } '];
|
tests = [
|
||||||
|
'', '1', '10',
|
||||||
|
'1.@10', '1.10', '"jeje"',
|
||||||
|
'[]', '[1,2,3]', ' [ ] ', ' [ 1 , 2 , 3 ]', '{}', ' { } ', '{"hoy":4}', ' { "hoy" : 4 } '];
|
||||||
|
|
||||||
#i = 0;
|
i = 0;
|
||||||
#while i < count(tests): {
|
while i < count(tests): {
|
||||||
# r = parse(tests[i]);
|
res, err = parse(tests[i]);
|
||||||
# if r == none:
|
if res == none:
|
||||||
# print('\nTest ', i, ' failed\n');
|
print('Test ', i, ' failed (', err, ')\n');
|
||||||
# else
|
else
|
||||||
# print(tests[i], ' -> ', r, '\n');
|
print('Test ', i, ' passed (', tests[i], ' -> ', res, ')\n');
|
||||||
# i = i + 1;
|
i = i + 1;
|
||||||
#}
|
}
|
||||||
|
|
||||||
file = files.openFile('examples/large-file.json', files.READ);
|
#file = files.openFile('examples/large-file.json', #files.READ);
|
||||||
if file == none:
|
#if file == none:
|
||||||
error("Failed to open file");
|
# error("Failed to open file");
|
||||||
|
#
|
||||||
buff = newBuffer(30000000);
|
#buff = newBuffer(30000000);
|
||||||
if buff == none:
|
#if buff == none:
|
||||||
error("Failed to create buffer");
|
# error("Failed to create buffer");
|
||||||
|
#
|
||||||
n = files.read(file, buff);
|
#n = files.read(file, buff);
|
||||||
|
#
|
||||||
text = bufferToString(sliceBuffer(buff, 0, n));
|
#text = bufferToString(sliceBuffer(buff, 0, n));
|
||||||
|
#
|
||||||
print(parse(text));
|
#print(parse(text));
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
fun duplica_forse(a) {
|
||||||
|
if a >= 10:
|
||||||
|
return a*2;
|
||||||
|
return none, "Il numero è inferiore a 10!";
|
||||||
|
}
|
||||||
|
|
||||||
|
fun duplica_forse2(a) {
|
||||||
|
return all duplica_forse(a);
|
||||||
|
}
|
||||||
|
|
||||||
|
num = 5;
|
||||||
|
num2, err = duplica_forse2(num);
|
||||||
|
|
||||||
|
if num2 == none:
|
||||||
|
print('ERRORE!!! ', err, '\n');
|
||||||
|
else
|
||||||
|
print(num2, '\n');
|
||||||
Reference in New Issue
Block a user