This commit is contained in:
cozis
2022-04-06 23:49:39 +02:00
parent 13f80915c7
commit f8fdf7d0df
2 changed files with 56 additions and 36 deletions
+38 -36
View File
@@ -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)): error("Not implemented yet");
return parseNumber(ctx); return res, err;
error("Not implemented yet");
} }
#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));
+18
View File
@@ -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');