diff --git a/1.10patch1.tar.gz b/1.10patch1.tar.gz deleted file mode 100644 index 97ed2e5..0000000 Binary files a/1.10patch1.tar.gz and /dev/null differ diff --git a/Example.bas b/Example.bas old mode 100644 new mode 100755 index 168ca13..66b3912 --- a/Example.bas +++ b/Example.bas @@ -1,12 +1,11 @@ -Print Ow!~n. +Print Ow!. Bool a,true. -Print $a. -Print Hi~n. +Print Hi. +Sub Hi2: + Print No! +End. Sub Hi: - Int a,1 - Print Hi~n - Print $a - Bool a,true Print $a End. -Call Hi(). \ No newline at end of file +Arg a:$a,b:c. +Call_If $a,Hi. \ No newline at end of file diff --git a/Hi.bas b/Hi.bas new file mode 100755 index 0000000..a37c5aa --- /dev/null +++ b/Hi.bas @@ -0,0 +1,5 @@ +Sub s: + Bool a,true + Print $a +End. +Call s(). \ No newline at end of file diff --git a/ReB.rb b/ReB.rb old mode 100644 new mode 100755 index 41d88f0..cb6ce86 --- a/ReB.rb +++ b/ReB.rb @@ -1,12 +1,15 @@ require "./modules/kernel.rb" if ARGV[0] == "-v" - puts "ReactBasic 1.10 patch1 (2018-2-11) By RBasicTeam" + puts "ReactBasic 1.12 (2018-3-4) By RBasicTeam" exit() end if FileTest.exist?(ARGV[0]) != true $NoFileErr.throw(ARGV[0]) end BasicScirpt=File.read(ARGV[0]) +if BasicScirpt[-1] == "\n" + BasicScirpt.slice!(-1) +end Basic=BasicScirpt.split(".") puts "==ReactBASIC==" Basic.each do |i| diff --git a/ReactBASIC_1.12.tar.gz b/ReactBASIC_1.12.tar.gz new file mode 100755 index 0000000..d28720f Binary files /dev/null and b/ReactBASIC_1.12.tar.gz differ diff --git a/core/protrol.rb b/core/protrol.rb index 9d2a3c1..252e7f3 100644 --- a/core/protrol.rb +++ b/core/protrol.rb @@ -5,4 +5,4 @@ $Var={} $Sub={} $S_Var={} -$Sym_Table={"~c"=>",","~~"=>"~","~s"=>"#","~n"=>"\n","~t"=>"\t"} \ No newline at end of file +$Sym_Table={"~c"=>",","~d"=>".","~s"=>"#","~n"=>"\n","~t"=>"\t","~f"=>"~"} diff --git a/modules/kernel.rb b/modules/kernel.rb index f9088e2..15ea00e 100644 --- a/modules/kernel.rb +++ b/modules/kernel.rb @@ -6,7 +6,7 @@ def ReactBasic_Parse(such) a=such a.slice!(0,6) a0=get_value(a) - a0.to_s() + # a0.to_s() if a0.class!=String print a0 else @@ -26,6 +26,8 @@ def ReactBasic_Parse(such) end $Var[list[0]]=get_value(list[1]) elsif /^Rem/ =~ such + elsif /^Exit/ =~ such + exit() elsif /^Sleep/ =~ such a=such a.slice!(0,6) @@ -33,27 +35,62 @@ def ReactBasic_Parse(such) sleep(a0) elsif /^Sub/ =~ such a=such - a.slice!(0,5) + a.slice!(0,4) a.slice!(-1) a.slice!(-1) a.slice!(-1) a.slice!(-1) list=a.split(":") $Sub[list[0]]=list[1] - elsif /^Int/ =~ such + elsif /^Arg/ =~ such a=such a.slice!(0,5) list=a.split(",") + list.each do |i| + j=i.split(":") + if /^\$/ =~ j[1] + b=" " + b.concat(j[1]) + j[1]=b + end + $S_Var[j[0]]=get_value(j[1]) + end + elsif /^Int/ =~ such + a=such + a.slice!(0,4) + list=a.split(",") $Var[list[0]]=list[1].to_i() elsif /^Bool/ =~ such a=such - a.slice!(0,6) + a.slice!(0,5) list=a.split(",") if list[1]=="true" $Var[list[0]]=true else $Var[list[0]]=false end + elsif /^Call_If/ =~ such + b=such + b.slice!(0,9) + list=b.split(",") + if /^\$/ =~ list[0] + b=" " + b.concat(list[0]) + list[0]=b + end + c=get_value(list[0]) + if c=="true" || c==true + if $Sub.include?(list[1]) + a0=$Sub[list[1]] + list=a0.split("\n ") + list.delete("") + list.each do |i| + ReactBasic_Parse_block(i) + end + else + $NoSubErr.throw(list[1]) + end + end elsif /^Call/ =~ such b=such b.slice!(0,6) @@ -104,6 +141,43 @@ def ReactBasic_Parse_block(such) end print a0 end + elsif /^Arg/ =~ such + a=such + a.slice!(0,4) + list=a.split(",") + list.each do |i| + j=i.split(":") + if /^\$/ =~ j[1] + b=" " + b.concat(j[1]) + j[1]=b + end + $S_Var[j[0]]=get_value(j[1]) + end + elsif /^Call_If/ =~ such + b=such + b.slice!(0,8) + list=b.split(",") + if /^\$/ =~ list[0] + b=" " + b.concat(list[0]) + list[0]=b + end + c=get_value(list[0]) + if c=="true" || c==true + if $Sub.include?(list[1]) + a0=$Sub[list[1]] + list=a0.split("\n ") + list.delete("") + list.each do |i| + ReactBasic_Parse_block(i) + end + else + $NoSubErr.throw(list[1]) + end + end + elsif /^Exit/ =~ such + exit() elsif /^Int/ =~ such a=such a.slice!(0,4)