Graphomata

Sandbox AngelScript Dialect

Supported

Unsupported

Supported Syntax*

SCRIPT(CLASS | INTERFACE | ;)*
CLASS INTERFACE ;
INTERFACEinterface IDENTIFIER (; | ((: IDENTIFIER (, IDENTIFIER)*)? { INTFMTHD* }))
interface IDENTIFIER ; : IDENTIFIER , { INTFMTHD }
CLASS(abstract | final)* class IDENTIFIER (; | ((: IDENTIFIER (, IDENTIFIER)*)? { (FUNC | VAR)* }))
abstract final class IDENTIFIER ; : IDENTIFIER , { FUNC VAR }
FUNC(private | protected)? (TYPE &?)? IDENTIFIER PARAMLIST const? FUNCATTR (; | STATBLOCK)
private protected TYPE & IDENTIFIER PARAMLIST const FUNCATTR ; STATBLOCK
VAR(private|protected)? TYPE IDENTIFIER (( = (INITLIST | EXPR)) | ARGLIST)? (, IDENTIFIER (( = (INITLIST | EXPR)) | ARGLIST)?)* ;
private protected TYPE IDENTIFIER = INITLIST EXPR ARGLIST , ;
INTFMTHDTYPE &? IDENTIFIER PARAMLIST const? ;
TYPE & IDENTIFIER PARAMLIST const ;
STATBLOCK{ (VAR | STATEMENT)* }
{ VAR STATEMENT }
PARAMLIST( (void | (TYPE TYPEMOD (... | IDENTIFIER? (= EXPR)?) (, TYPE TYPEMOD (... | IDENTIFIER? (= EXPR)?))*))? )
( void TYPE TYPEMOD ... IDENTIFIER = EXPR , )
TYPEMOD(& (in | out | inout)?)?
& in out inout
TYPEconst? SCOPE DATATYPE TEMPLTYPELIST? ( ([ ]) | (@ const?) )*
const SCOPE DATATYPE TEMPLTYPELIST [ ] @ const
TEMPLTYPELIST< TYPE (, TYPE)* >
< TYPE , >
INITLIST{ (ASSIGN | INITLIST)? (, (ASSIGN | INITLIST)?)* }
{ ASSIGN INITLIST , }
SCOPE::? (IDENTIFIER ::)* (IDENTIFIER TEMPLTYPELIST? ::)?
:: IDENTIFIER :: IDENTIFIER TEMPLTYPELIST ::
DATATYPE(IDENTIFIER | PRIMTYPE | ? | auto)
IDENTIFIER PRIMTYPE ? auto
PRIMTYPEvoid | int | int32 | uint | uint32 | float | double | bool
void int int32 uint uint32 float double bool
FUNCATTR(override | final | explicit | delete)*
override final explicit delete
STATEMENT(IF | FOR | WHILE | RETURN | STATBLOCK | BREAK | CONTINUE | DOWHILE | SWITCH | EXPRSTAT)
IF FOR WHILE RETURN STATBLOCK BREAK CONTINUE DOWHILE SWITCH EXPRSTAT
EXPRSTATASSIGN? ;
ASSIGN ;
SWITCHswitch ( ASSIGN ) { CASE* }
switch ( ASSIGN ) { CASE }
IFif ( ASSIGN ) STATEMENT (else STATEMENT)?
if ( ASSIGN ) STATEMENT else STATEMENT
FORfor ( (VAR | EXPRSTAT) EXPRSTAT (ASSIGN (, ASSIGN)*)? ) STATEMENT
for ( VAR EXPRSTAT EXPRSTAT ASSIGN , ) STATEMENT
WHILEwhile ( ASSIGN ) STATEMENT
while ( ASSIGN ) STATEMENT
DOWHILEdo STATEMENT while ( ASSIGN ) ;
do STATEMENT while ( ASSIGN ) ;
RETURNreturn ASSIGN? ;
return ASSIGN ;
BREAKbreak ;
break ;
CONTINUEcontinue ;
continue ;
EXPREXPRTERM (EXPROP EXPRTERM)*
EXPRTERM EXPROP EXPRTERM
CASE((case EXPR) | default) : STATEMENT*
case EXPR default : STATEMENT
EXPRTERM((TYPE =)? INITLIST) | (EXPRPREOP* EXPRVALUE EXPRPOSTOP*)
TYPE = INITLIST EXPRPREOP EXPRVALUE EXPRPOSTOP
EXPRVALUEvoid | CONSTRUCTCALL | FUNCCALL | VARACCESS | CAST | LITERAL | ( ASSIGN )
void CONSTRUCTCALL FUNCCALL VARACCESS CAST LITERAL ( ASSIGN )
CONSTRUCTCALLTYPE ARGLIST
TYPE ARGLIST
EXPRPREOP- | + | ! | ++ | -- | ~ | @
- + ! ++ -- ~ @
EXPRPOSTOP(. (FUNCCALL | IDENTIFIER)) | ([ (IDENTIFIER :)? ASSIGN (, (IDENTIFIER :)? ASSIGN)* ]) | ARGLIST | ++ | --
. FUNCCALL IDENTIFIER [ IDENTIFIER : ASSIGN , ] ARGLIST ++ --
CASTcast < TYPE > ( ASSIGN )
cast < TYPE > ( ASSIGN )
LITERALNUMBER | BITS | true | false | null
NUMBER BITS true false null
FUNCCALLSCOPE IDENTIFIER TEMPLTYPELIST? ARGLIST
SCOPE IDENTIFIER TEMPLTYPELIST ARGLIST
VARACCESSSCOPE IDENTIFIER
SCOPE IDENTIFIER
ARGLIST( (IDENTIFIER :)? ASSIGN (, (IDENTIFIER :)? ASSIGN)* )
( IDENTIFIER : ASSIGN , )
ASSIGNCONDITION ( ASSIGNOP ASSIGN )?
CONDITION ASSIGNOP ASSIGN
CONDITIONEXPR (? ASSIGN : ASSIGN)?
EXPR ? ASSIGN : ASSIGN
EXPROPMATHOP | COMPOP | LOGICOP | BITOP
MATHOP COMPOP LOGICOP BITOP
MATHOP+ | - | * | / | % | **
+ - * / % **
COMPOP== | != | < | <= | > | >= | is | !is
== != < <= > >= is !is
LOGICOP&& | || | ^^ | and | or | xor
&& || ^^ and or xor
BITOP& | | | ^ | << | >> | >>>
& | ^ << >> >>>
ASSIGNOP= | += | -= | *= | /= | |= | &= | ^= | %= | **= | <<= | >>= | >>>=
= += -= *= /= |= &= ^= %= **= <<= >>= >>>=
IDENTIFIERstarts with letter or _, can include any letter and digit, same as in C++
NUMBERincludes integers and real numbers, same as C++
BITSbinary 0b or 0B, octal 0o or 0O, decimal 0d or 0D, hexadecimal 0x or 0X
COMMENTstarts with // and ends with new line or starts with /* and ends with */
WHITESPACEspaces, tab, carriage return, and line feed

* Grammar rules adapted from the full EBNF (copyright (c) 2003-2025 Andreas Jönsson)

Supported Keywords – General

Supported Keywords – Control Flow

Supported Keywords – Type

Supported Methods – Arrays

Unsupported Keywords