Skip to content

Commit be72348

Browse files
committed
2 parents 4637575 + a2f6aec commit be72348

File tree

6 files changed

+236
-6
lines changed

6 files changed

+236
-6
lines changed

.DS_Store

6 KB
Binary file not shown.

examples/Get File Extension.nys

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
log(last(split(last(arg()), ".")))

examples/Tic Tack Toe.nys

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
dec arr places: "1", "2", "3", "4", "5", "6", "7", "8", "9";
2+
dec str who_first: "x";
3+
loop(9) {
4+
log("
5+
"places(0)" | "places(1)" | "places(2)"
6+
---------
7+
"places(3)" | "places(4)" | "places(5)"
8+
---------
9+
"places(6)" | "places(7)" | "places(8)"
10+
");
11+
log("Player "who_first" pick a space where you want to go")
12+
dec int player_pick: input();
13+
if(places(player_pick-1) != "x" && places(player_pick-1) != "o") {
14+
places(player_pick-1): who_first;
15+
}
16+
else {
17+
log("Sorry that place is already taken");
18+
exit();
19+
}
20+
if(places(0) == places(1) && places(0) == places(2)) {
21+
log("player "places(0)" you won!");
22+
exit();
23+
}
24+
if(places(6) == places(7) && places(6) == places(8)) {
25+
log("player "places(6)" you won!");
26+
exit();
27+
}
28+
if(places(0) == places(3) && places(0) == places(6)) {
29+
log("player "places(0)" you won!");
30+
exit();
31+
}
32+
if(places(2) == places(5) && places(2) == places(8)) {
33+
log("player "places(2)" you won!");
34+
exit();
35+
}
36+
if(places(1) == places(4) && places(1) == places(7)) {
37+
log("player "places(1)" you won!");
38+
exit();
39+
}
40+
if(places(0) == places(4) && places(0) == places(8)) {
41+
log("player "places(0)" you won!");
42+
exit();
43+
}
44+
if(places(2) == places(4) && places(2) == places(6)) {
45+
log("player "places(2)" you won!");
46+
exit();
47+
}
48+
if(who_first == "x") {
49+
who_first: "o";
50+
}
51+
else {
52+
who_first: "x";
53+
}
54+
}
55+
log("It was a tie!");

examples/test.nys

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
1-
dec int age : 10 + 10 * 10;
2-
log(age)
1+
func(count(number)) {
2+
dec int new_number: number+1;
3+
log(new_number);
4+
count(count(new_number));
5+
}
6+
count(0);

src/run.rs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,8 @@ pub fn run(
441441
let mut types = false;
442442
let mut position = x + 1;
443443
let _square_brackets = 0;
444+
let mut infer = false;
445+
let mut find_int_str = false;
444446

445447
// get type
446448
if contents[position] == "int" {
@@ -459,13 +461,28 @@ pub fn run(
459461
memory_types.push(String::from("grp"));
460462
memory_names.push(contents[position + 1].clone());
461463
position += 1;
462-
} else if contents[position] == "inf" {
463-
memory_types.push(String::from("inf"));
464-
memory_names.push(contents[position + 1].clone());
465-
position += 1;
466464
} else if contents[position] == "anon" {
467465
memory_types.push(String::from("anon"));
468466
types = true;
467+
} else {
468+
infer = true;
469+
}
470+
if infer == true {
471+
if contents[x+3] == "[" {
472+
memory_types.push(String::from("arr"));
473+
memory_names.push(contents[position + 1].clone());
474+
position += 1;
475+
} else if contents[x+3] == "\""{
476+
memory_types.push(String::from("str"));
477+
memory_names.push(contents[position + 1].clone());
478+
position += 1;
479+
} else if contents[x+3] == "{" {
480+
memory_types.push(String::from("grp"));
481+
memory_names.push(contents[position + 1].clone());
482+
position += 1;
483+
} else {
484+
find_int_str = true
485+
}
469486
}
470487

471488
//more vars

src/run/functions.rs

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,86 @@ pub fn getstring(
291291
}
292292
}
293293
skips = leng;
294+
} else if vec[y] == "split" {
295+
imput_s.push_str(
296+
split(
297+
y,
298+
vec.to_vec(),
299+
memory_names.clone(),
300+
memory_values.clone(),
301+
memory_types.clone(),
302+
func_names.clone(),
303+
func_par.clone(),
304+
func_code.clone(),
305+
dev,
306+
uses.clone(),
307+
)
308+
.to_string()
309+
.as_str(),
310+
);
311+
let mut leng = 0;
312+
let mut n2 = 0;
313+
let mut skip1 = false;
314+
for elem in y + 1..vec.len() {
315+
if !skip1 {
316+
if vec[y + 1] != "(" {
317+
println!("You have to put a parentheses after a log");
318+
std::process::exit(1);
319+
}
320+
if contents[elem] == "(" {
321+
n2 += 1;
322+
} else if contents[elem] == ")" {
323+
n2 -= 1;
324+
}
325+
if n2 == 0 {
326+
skip1 = true;
327+
for _z in y + 1..elem + 1 {
328+
leng += 1;
329+
}
330+
}
331+
}
332+
}
333+
skips = leng;
334+
} else if vec[y] == "splitK" {
335+
imput_s.push_str(
336+
split_k(
337+
y,
338+
vec.to_vec(),
339+
memory_names.clone(),
340+
memory_values.clone(),
341+
memory_types.clone(),
342+
func_names.clone(),
343+
func_par.clone(),
344+
func_code.clone(),
345+
dev,
346+
uses.clone(),
347+
)
348+
.to_string()
349+
.as_str(),
350+
);
351+
let mut leng = 0;
352+
let mut n2 = 0;
353+
let mut skip1 = false;
354+
for elem in y + 1..vec.len() {
355+
if !skip1 {
356+
if vec[y + 1] != "(" {
357+
println!("You have to put a parentheses after a log");
358+
std::process::exit(1);
359+
}
360+
if contents[elem] == "(" {
361+
n2 += 1;
362+
} else if contents[elem] == ")" {
363+
n2 -= 1;
364+
}
365+
if n2 == 0 {
366+
skip1 = true;
367+
for _z in y + 1..elem + 1 {
368+
leng += 1;
369+
}
370+
}
371+
}
372+
}
373+
skips = leng;
294374
} else if vec[y] == "length" {
295375
imput_s.push_str(
296376
length(
@@ -1430,6 +1510,79 @@ pub fn round(
14301510
.round() as i32
14311511
}
14321512

1513+
pub fn split(
1514+
x: usize,
1515+
contents: Vec<String>,
1516+
memory_names: Vec<String>,
1517+
memory_values: Vec<String>,
1518+
memory_types: Vec<String>,
1519+
func_names: Vec<String>,
1520+
func_par: Vec<String>,
1521+
func_code: Vec<String>,
1522+
dev: bool,
1523+
uses: Vec<String>,
1524+
) -> String {
1525+
let mut items = getstring(
1526+
x,
1527+
contents,
1528+
memory_names,
1529+
memory_values,
1530+
memory_types,
1531+
func_names,
1532+
func_par,
1533+
func_code,
1534+
dev,
1535+
uses,
1536+
0,
1537+
);
1538+
let replacer: String = items.last().unwrap().to_string();
1539+
items.pop();
1540+
items
1541+
.join("zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v")
1542+
.replace(&replacer, "zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v")
1543+
}
1544+
1545+
pub fn split_k(
1546+
x: usize,
1547+
contents: Vec<String>,
1548+
memory_names: Vec<String>,
1549+
memory_values: Vec<String>,
1550+
memory_types: Vec<String>,
1551+
func_names: Vec<String>,
1552+
func_par: Vec<String>,
1553+
func_code: Vec<String>,
1554+
dev: bool,
1555+
uses: Vec<String>,
1556+
) -> String {
1557+
let mut items = getstring(
1558+
x,
1559+
contents,
1560+
memory_names,
1561+
memory_values,
1562+
memory_types,
1563+
func_names,
1564+
func_par,
1565+
func_code,
1566+
dev,
1567+
uses,
1568+
0,
1569+
);
1570+
let replacer: String = items.last().unwrap().to_string();
1571+
items.pop();
1572+
let mut replaced: String = "zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v".to_string();
1573+
replaced.push_str(&*replacer);
1574+
replaced.push_str("zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v");
1575+
items
1576+
.join("zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v")
1577+
.replace(&replacer, &replaced)
1578+
1579+
.strip_prefix("zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v")
1580+
.unwrap()
1581+
.strip_suffix("zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v")
1582+
.unwrap()
1583+
.to_string()
1584+
}
1585+
14331586
pub fn length(
14341587
x: usize,
14351588
contents: Vec<String>,

0 commit comments

Comments
 (0)