diff --git a/autotests/folding/brightscript.brs.fold b/autotests/folding/brightscript.brs.fold new file mode 100644 --- /dev/null +++ b/autotests/folding/brightscript.brs.fold @@ -0,0 +1,99 @@ + +#i am macro + +library "a" + +function myfunc ( foo as Integer , bar as Float = 3.5 ) as Void +end function + +sub mysub ( foo as Integer , bar as Float = 3.5 ) as Void +end sub + +' my comment + +Function MyCamelCaseFunction() + lvalue = rvalue +a=5 +a=5! +a=5# +a=5% +a=5& + +a$=5 +a!=5 +a#=5 +a%=5 +a&=5 + +a=a$ +a=a! +a=a# +a=a% +a=a& + +foo() +a.foo() +a=a.foo() + +eval=5 +eval() +a.eval() + +a=eval +a=eval() +a=a.eval() + +sleep=5 +sleep() +a.sleep() + +a=sleep +a=sleep() +a=a.sleep() + +if a=b c=d +if a foo() +if a then foo() + +if a +end if + +if a then +end if + +if a +else if +else +end if + +if a +elseif +endif + +for each a in b +end for + +for a=1 to 10 step 2 +endFor + +for each a in b +next + +while a +end while + +while a +endWhile + +a [ "a" , 1, foo() ] = 1 +a.foo()[1]=1 + +a = { + a : 1 + b : "2" + c : function() : end function +} + +b.foo("string",1,{a:b},1.5,[1,2,3]) +a = b.foo("string",1,{a:b},1.5,[1,2,3]) +endFunction diff --git a/autotests/html/brightscript.brs.html b/autotests/html/brightscript.brs.html new file mode 100644 --- /dev/null +++ b/autotests/html/brightscript.brs.html @@ -0,0 +1,106 @@ + + + +brightscript.brs + +
+
+#i am macro
+
+library "a"
+
+function myfunc ( foo as Integer , bar as Float = 3.5 ) as Void
+end function
+
+sub mysub ( foo as Integer , bar as Float = 3.5 ) as Void
+end sub
+
+' my comment
+
+Function MyCamelCaseFunction()
+    lvalue = rvalue
+a=5
+a=5!
+a=5#
+a=5%
+a=5&
+
+a$=5
+a!=5
+a#=5
+a%=5
+a&=5
+
+a=a$
+a=a!
+a=a#
+a=a%
+a=a&
+
+foo()
+a.foo()
+a=a.foo()
+
+eval=5
+eval()
+a.eval()
+
+a=eval
+a=eval()
+a=a.eval()
+
+sleep=5
+sleep()
+a.sleep()
+
+a=sleep
+a=sleep()
+a=a.sleep()
+
+if a=b c=d
+if a foo()
+if a then foo()
+
+if a
+end if
+
+if a then
+end if
+
+if a
+else if
+else
+end if
+
+if a
+elseif
+endif
+
+for each a in b
+end for
+
+for a=1 to 10 step 2
+endFor
+
+for each a in b
+next
+
+while a
+end while
+
+while a
+endWhile
+
+a [ "a" , 1, foo() ] = 1
+a.foo()[1]=1
+
+a = {
+    a : 1
+    b : "2"
+    c : function() : end function
+}
+
+b.foo("string",1,{a:b},1.5,[1,2,3])
+a = b.foo("string",1,{a:b},1.5,[1,2,3])
+endFunction
+
diff --git a/autotests/input/brightscript.brs b/autotests/input/brightscript.brs new file mode 100644 --- /dev/null +++ b/autotests/input/brightscript.brs @@ -0,0 +1,99 @@ + +#i am macro + +library "a" + +function myfunc ( foo as Integer , bar as Float = 3.5 ) as Void +end function + +sub mysub ( foo as Integer , bar as Float = 3.5 ) as Void +end sub + +' my comment + +Function MyCamelCaseFunction() + lvalue = rvalue +a=5 +a=5! +a=5# +a=5% +a=5& + +a$=5 +a!=5 +a#=5 +a%=5 +a&=5 + +a=a$ +a=a! +a=a# +a=a% +a=a& + +foo() +a.foo() +a=a.foo() + +eval=5 +eval() +a.eval() + +a=eval +a=eval() +a=a.eval() + +sleep=5 +sleep() +a.sleep() + +a=sleep +a=sleep() +a=a.sleep() + +if a=b c=d +if a foo() +if a then foo() + +if a +end if + +if a then +end if + +if a +else if +else +end if + +if a +elseif +endif + +for each a in b +end for + +for a=1 to 10 step 2 +endFor + +for each a in b +next + +while a +end while + +while a +endWhile + +a [ "a" , 1, foo() ] = 1 +a.foo()[1]=1 + +a = { + a : 1 + b : "2" + c : function() : end function +} + +b.foo("string",1,{a:b},1.5,[1,2,3]) +a = b.foo("string",1,{a:b},1.5,[1,2,3]) +endFunction diff --git a/autotests/input/brightscript.brs.syntax b/autotests/input/brightscript.brs.syntax new file mode 100644 --- /dev/null +++ b/autotests/input/brightscript.brs.syntax @@ -0,0 +1 @@ +BrightScript diff --git a/autotests/reference/brightscript.brs.ref b/autotests/reference/brightscript.brs.ref new file mode 100644 --- /dev/null +++ b/autotests/reference/brightscript.brs.ref @@ -0,0 +1,99 @@ +
+#i am macro
+
+library "a"
+
+function myfunc ( foo as Integer , bar as Float = 3.5 ) as Void
+end function
+
+sub mysub ( foo as Integer , bar as Float = 3.5 ) as Void
+end sub
+
+' my comment
+
+Function MyCamelCaseFunction()
+ lvalue = rvalue
+a=5
+a=5!
+a=5#
+a=5%
+a=5&
+
+a$=5
+a!=5
+a#=5
+a%=5
+a&=5
+
+a=a$
+a=a!
+a=a#
+a=a%
+a=a&
+
+foo()
+a.foo()
+a=a.foo()
+
+eval=5
+eval()
+a.eval()
+
+a=eval
+a=eval()
+a=a.eval()
+
+sleep=5
+sleep()
+a.sleep()
+
+a=sleep
+a=sleep()
+a=a.sleep()
+
+if a=b c=d
+if a foo()
+if a then foo()
+
+if a
+end if
+
+if a then
+end if
+
+if a
+else if
+else
+end if
+
+if a
+elseif
+endif
+
+for each a in b
+end for
+
+for a=1 to 10 step 2
+endFor
+
+for each a in b
+next
+
+while a
+end while
+
+while a
+endWhile
+
+a [ "a" , 1, foo() ] = 1
+a.foo()[1]=1
+
+a = {
+ a : 1
+ b : "2"
+ c : function() : end function
+}
+
+b.foo("string",1,{a:b},1.5,[1,2,3])
+a = b.foo("string",1,{a:b},1.5,[1,2,3])
+endFunction
diff --git a/data/syntax/brightscript.xml b/data/syntax/brightscript.xml new file mode 100644 --- /dev/null +++ b/data/syntax/brightscript.xml @@ -0,0 +1,786 @@ + + + + + + + + + +library + +function +endfunction +sub +endsub +as + +end +exit + +if +endif +then +else +elseif + +while +endwhile +exitwhile + +for +endfor +each +in +to +step +next + +print +return + +dim +stop +goto + +m + + top + global + + + + then + end + exit + + + + not + + + + tab + pos + CreateObject + Type + GetGlobalAA + Box + Run + Eval + GetLastRunCompileError + GetLastRunRuntimeError + ObjFun + + + + Sleep + Wait + GetInterface + FindMemberFunction + UpTime + RebootSystem + ListDir + ReadAsciiFile + WriteAsciiFile + CopyFile + MoveFile + MatchFiles + DeleteFile + DeleteDirectory + CreateDirectory + FormatDrive + StrToI + RunGarbageCollector + ParseJson + FormatJson + Tr + + + + UCase + LCase + Asc + Chr + Instr + Left + Len + Mid + Str + StrI + String + StringI + Val + Substitute + + + + Abs + Atn + Cdbl + Cint + Cos + Csng + Exp + Fix + Int + Log + Rnd + Sgn + Sin + Sqr + Tan + + + + rem + + + + invalid + void + dynamic + boolean + integer + longinteger + float + double + string + object + function + interface + + + + true + false + invalid + LINE_NUM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +