Sample Syntax - MarkyVasconcelos/cajuscript GitHub Wiki
#summary Can create your syntax.
=Syntax=
Customize the syntax is allowed, you can define your style.
You can define your style of syntax using the class org.cajuscript.Syntax.
Register the new instance of Syntax in the CajuScript: {{{ org.cajuscript.CajuScript.addGlobalSyntax("SYNTAX_NAME", syntaxInstance); }}}
To use your syntax, just in first line of your script put this:
caju.syntax: SYNTAX_NAME
Right now you can execute your script: {{{ javax.script.ScriptEngine caju = new org.cajuscript.CajuScriptEngine(); caju.eval(YOUR_SCRIPT); }}}
See about samples of scripts using the custom syntax: [sampleSyntaxBasic Basic], [sampleSyntaxJava Java], [sampleSyntaxPortuguese Portuguese]
===Java===
Define your style: {{{ org.cajuscript.Syntax syntaxJ = new org.cajuscript.Syntax(); syntaxJ.setIf(Pattern.compile("if\s*([\s+|[\s*\(]][^\{]+)\{")); syntaxJ.setElseIf(Pattern.compile("\}\selse\s+if\s([\s+|[\s*\(]][^\{]+)\{")); syntaxJ.setElse(Pattern.compile("\}\selse\s\{")); syntaxJ.setIfEnd(Pattern.compile("\}")); syntaxJ.setLoop(Pattern.compile("while\s*([\s+|[\s*\(]][^\{]+)\{")); syntaxJ.setLoopEnd(Pattern.compile("\}")); syntaxJ.setTry(Pattern.compile("try\s*([\s+|[\s*\(]][^\{]+)\{")); syntaxJ.setTryCatch(Pattern.compile("\}\scatch\s\{")); syntaxJ.setTryFinally(Pattern.compile("\}\sfinally\s\{")); syntaxJ.setTryEnd(Pattern.compile("\}")); syntaxJ.setFunction(Pattern.compile("function\s*([\s+|[\s*\(]][^\{]+)\{")); syntaxJ.setFunctionEnd(Pattern.compile("\}")); syntaxJ.setNull(Pattern.compile("null")); syntaxJ.setReturn(Pattern.compile("return")); syntaxJ.setImport(Pattern.compile("import\s+")); syntaxJ.setRootContext(Pattern.compile("root\.")); syntaxJ.setContinue(Pattern.compile("continue")); syntaxJ.setBreak(Pattern.compile("break")); }}}
Register the instance of Syntax in the CajuScript: {{{ org.cajuscript.CajuScript.addGlobalSyntax("MyJava", syntaxJ); }}}
To use your syntax, just in first line of your script put this:
caju.syntax: MyJava
===Basic===
Define your style: {{{ org.cajuscript.Syntax syntaxB = new org.cajuscript.Syntax(); syntaxB.setIf(Pattern.compile("^[\s+i|i]f\s*([\s+|[\s*\(]].+)\s*")); syntaxB.setElseIf(Pattern.compile("^[\s+e|e]lseif\s*([\s+|[\s*\(]].+)\s*")); syntaxB.setElse(Pattern.compile("^[\s+e|e]ls[e\s+|e]$")); syntaxB.setIfEnd(Pattern.compile("^[\s+e|e]n[d\s+|d]$")); syntaxB.setLoop(Pattern.compile("^[\s+w|w]hile\s*([\s+|[\s*\(]].+)\s*")); syntaxB.setLoopEnd(Pattern.compile("^[\s+e|e]n[d\s+|d]$")); syntaxB.setTry(Pattern.compile("^[\s+t|t]ry\s*([\s+|[\s*\(]].+)\s*")); syntaxB.setTryCatch(Pattern.compile("^[\s+c|c]atc[h\s+|h]$")); syntaxB.setTryFinally(Pattern.compile("^[\s+f|f]inall[y\s+|y]$")); syntaxB.setTryEnd(Pattern.compile("^[\s+e|e]n[d\s+|d]$")); syntaxB.setFunction(Pattern.compile("^[\s+f|f]unction\s*([\s+|[\s*\(]].+)\s*")); syntaxB.setFunctionEnd(Pattern.compile("^[\s+e|e]n[d\s+|d]$")); syntaxB.setNull(Pattern.compile("null")); syntaxB.setReturn(Pattern.compile("return")); syntaxB.setImport(Pattern.compile("import\s+")); syntaxB.setRootContext(Pattern.compile("root\.")); syntaxB.setContinue(Pattern.compile("continue")); syntaxB.setBreak(Pattern.compile("break")); }}}
Register the instance of Syntax in the CajuScript: {{{ org.cajuscript.CajuScript.addGlobalSyntax("MyBasic", syntaxB); }}}
To use your syntax, just in first line of your script put this:
caju.syntax: MyBasic