JudoScript v0.7 Grammar

For legends, see Syntax and Semantics.

  Script  ::= used by       semantics 
( UsageDeclaration
| ImportStatement
| Directives
| ConstantDefinition
| ClassDefinition
| JavaExtensionDefinition
| FunctionDeclaration
| ThreadDeclaration
| StaticJavaFunctionDeclaration
| SgmlHandlerDeclaration
| Statement
| catch :
| finally :
)*
( EndScript LOCALDATA )?
  UsageDeclaration  ::= used by       semantics 
usage { IDENTIFIER = Expr ; )+ } obtainUsage
  ImportStatement  ::= used by       semantics 
import JAVA_CLASS_NAME_COLLECTION ;
  Directives  ::= used by       semantics 
IncludeDirective | Pragma | JavaClassShortcuts
  IncludeDirective  ::= used by       semantics 
!include ( if Expr | ifexists | ( ifdef | ifndef ) CONST_NAME )? STRING_LIT
  Pragma  ::= used by       semantics 
!pragma PragmaType Literal
  JavaClassShortcuts  ::= used by       semantics 
!JavaPackages < IDENTIFIER > ( CONST_NAME ),+
| !DefineJavaPackages ( < )? IDENTIFIER ( > )? { ( JavaClassName ),+ }
| !JavaBaseClass ( CONST_NAME ),+
| !JavaGuiClass ( CONST_NAME ),+
| !JavaEnterpriseClass ( CONST_NAME ),+
| !JavaCorbaClass ( CONST_NAME ),+
  ConstantDefinition  ::= used by       semantics 
( const )? CONST_NAME = ( Expr | HereDoc | ArrayAllocator | StructAllocator | SetAllocator ) ( ifndef | if Expr )? ;
  ClassDefinition  ::= used by       semantics 
class IDENTIFIER ( extends ( IDENTIFIER | OrderedMap | SortedMap ComparatorDecl | TreeNode ) )?
{ ( ConstructorDeclaration )? ( FunctionDeclaration )* }
  JavaExtensionDefinition  ::= used by       semantics 
class IDENTIFIER extends java :: ( JavaClassName | CONST_NAME ),+
{
( ConstructorDeclaration
| JavaType ( IDENTIFIER ),+ ;
| JavaType IDENTIFIER ( ( JavaType IDENTIFIER ),+ ) Block
)*
}
  JavaType  ::= used by       semantics 
( JavaClassName | CONST_NAME | JavaPrimitiveTypes ) ( [> )*
  ConstructorDeclaration  ::= used by       semantics 
( constructor | ctor ) ( FormalParameters )? Block
  FunctionDeclaration  ::= used by       semantics 
function FUNCTION_NAME FormalParameters Block
  FormalParameters  ::= used by       semantics 
( ( )? ( .. | ( IDENTIFIER ( = Expr )? ),+ ( , .. )? )? ( ) )?
  LambdaDeclaration  ::= used by       semantics 
function FormalParameters Block
  ThreadDeclaration  ::= used by       semantics 
thread FUNCTION_NAME FormalParameters Block
  StaticJavaFunctionDeclaration  ::= used by       semantics 
function FUNCTION_NAME
for ( JavaClassName | CONST_NAME ) :: IDENTIFIER ( ( ) )? ;
  JavaClassName  ::= used by       semantics 
IDENTIFIER ( . IDENTIFIER )*
  Literal  ::= used by       semantics 
INT_LIT | FLOAT_LIT | STRING_LIT | true | false | null | nl | eof
  Expr  ::= used by       semantics 
defined CONST_NAME | Assignment
| ConditionalExpr ( @ ConditionalExpr )*
  ConditionalExpr  ::= used by       semantics 
ConditionalOrExpr ( ? Expr : ConditionalExpr )?
  ConditionalOrExpr  ::= used by       semantics 
ConditionalAndExpr ( || ConditionalAndExpr )*
  ConditionalAndExpr  ::= used by       semantics 
InclusiveOrExpr ( && InclusiveOrExpr )*
  InclusiveOrExpr  ::= used by       semantics 
ExclusiveOrExpr ( | ExclusiveOrExpr )*
  ExclusiveOrExpr  ::= used by       semantics 
AndExpr ( ^ AndExpr )*
  AndExpr  ::= used by       semantics 
EqualityExpr ( & EqualityExpr )*
  EqualityExpr  ::= used by       semantics 
RelationalExpr ( ( == | != ) RelationalExpr )*
  RelationalExpr  ::= used by       semantics 
ShiftExpr ( ( | > | <= | >= ) ShiftExpr )?
  ShiftExpr  ::= used by       semantics 
AdditiveExpr ( ( << | >> | >>> ) AdditiveExpr )*
  AdditiveExpr  ::= used by       semantics 
MultiplicativeExpr ( ( + | - ) MultiplicativeExpr )*
  MultiplicativeExpr  ::= used by       semantics 
UnaryExpr ( ( * | / | % ) UnaryExpr )*
  UnaryExpr  ::= used by       semantics 
( + | - ) UnaryExpr | PrefixExpr | UnaryExprNotPlusMinus
  PrefixExpr  ::= used by       semantics 
( ++ | -- ) PrimaryExpr
  UnaryExprNotPlusMinus  ::= used by       semantics 
( ~ | ! ) UnaryExpr | PostfixExpr | Literal
  PostfixExpr  ::= used by       semantics 
PrimaryExpr ( ++ | -- )?
  PrimaryExpr  ::= used by       semantics 
ObjectAllocator | JavaAllocator | JavaClassAllocator | LambdaDeclaration | ${ IDENTIFIER } | & IDENTIFIER | AtomicExpr getEnvVar
  ObjectAllocator  ::= used by       semantics 
new ( IDENTIFIER | SortedMap ComparatorDecl ) ( MemberInitList | AnonMemberInitList )?
  MemberInitList  ::= used by       semantics 
( ( ( IDENTIFIER | STRING_LIT ) = Expr ),+ )
  AnonMemberInitList  ::= used by       semantics 
( ( Expr ),+ )
  ArrayAllocator  ::= used by       semantics 
( LinkedList )? [> .. Expr | ( ArrayAllocator | Expr | HereDoc | Dom ),* ( , )? ]
  StructAllocator  ::= used by       semantics 
{ ( IDENTIFIER ( : | = ) ( Expr | HereDoc | Dom ) ),* ( , )? }
  SetAllocator  ::= used by       semantics 
Set ComparatorDecl ( [> Expr ),* ] )?
  ComparatorDecl  ::= used by       semantics 
( < ( ( Number | String | Date ) ( - | + )? | Expr )? > )?
  JavaAllocator  ::= used by       semantics 
new java ::
( JavaPrimitiveTypes | JavaClassName | CONST_NAME | : IDENTIFIER )
( Arguments )? | ( [> )+ JavaArrayAllocator | ( [> ] )+ )
  JavaArrayAllocator  ::= used by       semantics 
{ ( JavaArrayAllocator | Expr | HereDoc | Dom ),* ( , )? }
  JavaPrimitiveTypes  ::= used by       semantics 
boolean | byte | char | short | int | long | float | double | String
  JavaClassAllocator  ::= used by       semantics 
java :: ( JavaClassName | CONST_NAME )
  AtomicExpr  ::= used by       semantics 
(
( :: )? IDENTIFIER | CONST_NAME | FUNCTION_NAME | JavaClassName :: IDENTIFIER
| super . IDENTIFIER | this
| ( Expr )
| #args | #options | #cmd_args | #prog
| $_ | $__ | $$ | $$con | $$timer | $$args | $$fs_result | $$local | $$bsf
| column ( ( STRING_LIT | INT_LIT ) )
)
(
[> ( , Expr )* ]
| . ( IDENTIFIER | STRING_LIT | ( Expr ) )
| < IDENTIFIER ( : IDENTIFIER )? >
| ( -> )? Arguments )
)*
  Arguments  ::= used by       semantics 
( ( {{ )? ( ( JavaPrimitiveTypes )? Expr ),* ( }} )? )
  HereDoc  ::= used by       semantics 
( [[* | [[[* ) Mixture *]]
  Mixture  ::= used by       semantics 
( PLAIN_TEXT | (* Expr *) )*
  Assignment  ::= used by       semantics 
PrimaryExpr
( = | @= | *= | /= | %= | += | -= | <<= | >>= | >>>= | &= | ^= | |= )
( Expr | HereDoc | ArrayAllocator | StructAllocator | SetAllocator | Dom )
  LocalVariableDeclaration  ::= used by       semantics 
local IDENTIFIER ( = ( Expr | HereDoc | ArrayAllocator | StructAllocator | SetAllocator | Dom ) )?
  Statement  ::= used by       semantics 
Block
| LocalVariableDeclaration
| FUNCTION_NAME ArgumentList ;
| ( Expr )? ;
| IfStatement
| SwitchStatement
| WhileStatement
| DoWHileStatement
| ForStatements
| LinesStatement
| BreakStatement ;
| ContinueStatement ;
| ResumeStatement ;
| ReturnStatement ;
| ThrowStatement ;
| StartThreadStatement
| DynamicStatements
| PrintStatement ;
| PrintTableDataStatement ;
| EchoStatement ;
| DeleteStatement ;
| JdbcStatements
| FileSystemStatements ;
| XmlStatement
| XsltStatement
| SgmlStatement
| ScheduleStatement
| ExecStatement
| SCPStatement ;
| MailStatement ;
| GuiEventsStatement
  Block  ::= used by       semantics 
{ ( Statement )* ( catch : ( Statement )+ )? ( finally : ( Statement )+ )? }
  SimpleBlock  ::= used by       semantics 
{ ( Statement )* }
  IfStatement  ::= used by       semantics 
if ( ( )? Expr ( ) )? Statement
( ( elif | else if ) ( ( )? Expr ( ) )? Statement )*
( else Statement )?
  SwitchStatement  ::= used by       semantics 
switch Expr { ( ( case Expr | default ) : ( Statement )* )* }
  WhileStatement  ::= used by       semantics 
( LABEL_NAME : )? while ( ( )? Expr ( ) )? Statement
  DoWhileStatement  ::= used by       semantics 
( LABEL_NAME : )? do SimpleBlock while Expr ;
  ForStatements  ::= used by       semantics 
( ForStatement | ForInStatement | ForFromToStatement | RepeatStatement )
  ForStatement  ::= used by       semantics 
( LABEL_NAME : )? for ( ( )? ( Expr ),* ; Expr ; ( Expr ),* ( ) )? Statement
  ForInStatement  ::= used by       semantics 
( LABEL_NAME : )? for ( ( )? IDENTIFIER in Expr
( backward | ( from Expr )? ( ( to | downto ) Expr ) ( step Expr )? )? ( ) )?
Statement
  ForFromToStatement  ::= used by       semantics 
( LABEL_NAME : )? for ( ( )? IDENTIFIER ( from Expr )? ( to | downto ) Expr ( step Expr )? ( ) )?
Statement
  RepeatStatement  ::= used by       semantics 
( LABEL_NAME : )? repeat Expr ( times )?
SimpleBlock
  LinesStatement  ::= used by       semantics 
( LABEL_NAME : )? do Expr ( in Expr )? ( < IDENTIFIER > )? as lines ( for Expr )? ( Expr )? SimpleBlock
  BreakStatement  ::= used by       semantics 
break ( LABEL_NAME | schedule )
  ContinueStatement  ::= used by       semantics 
continue ( LABEL_NAME | schedule )
  ResumeStatement  ::= used by       semantics 
resume
  ReturnStatement  ::= used by       semantics 
return ( Expr | HereDoc | ArrayAllocator | StructAllocator | SetAllocator | Dom )?
  ThrowStatement  ::= used by       semantics 
throw
( new ( java :: JavaClassName | CONST_NAME | : IDENTIFIER ) ( Arguments )?
| IDENTIFIER ( , Expr )?
)?
  StartThreadStatement  ::= used by       semantics 
start ( daemon )? thread ( Expr )?
( FUNCTION_NAME ( Arguments )? ; ) | FormalParameters Block )
  DynamicStatements  ::= used by       semantics 
( eval | evalExternal | evalFile ) ( Expr | HereDoc )
( with ArgumentList )? ;
  PrintStatement  ::= used by       semantics 
( print | println | flush | . ) ( { Expr } )?
( < ( out | err | log | pipe | PrimaryExpr ) > )?
( PrintArgument ),*
  PrintArgument  ::= used by       semantics 
( HereDoc | Expr ) ( : ( < | > | * )? Expr ( ! )? )? ( { Expr } | repeat Expr )?
  PrintTableDataStatement  ::= used by       semantics 
printTable ( < ( out | err | log | pipe | PrimaryExpr ) > )?
Expr ( skip Expr )? ( limit Expr )?
for ( PrintArgument ),*
  EchoStatement  ::= used by       semantics 
echo ( on | off | Expr )
  DeleteStatement  ::= used by       semantics 
delete Expr
  VoidStatement  ::= used by       semantics 
void Expr
  SgmlStatement  ::= used by       semantics 
do Expr ( in Expr )? ( < IDENTIFIER > )? as ( sgml ( case )? | html )
( with IDENTIFIER ;
| ( extends IDENTIFIER )? { ( SgmlEvent : ( Statement )+ )+ }
)
  SgmlHandlerDeclaration  ::= used by       semantics 
( sgml ( case )? | html ) IDENTIFIER ( extends IDENTIFIER )?
{ ( SgmlEvent : ( Statement )+ )+ }
  SgmlEvent  ::= used by       semantics 
BEFORE | AFTER | < > | ( < | </ ) IDENTIFIER > | TEXT | <!-->

These are the SGML events that can be generated by a SGML parser. All events except for and are for tags. A regular tag is name or name. is for a piece of text between two tags. Any unhandled tags are represented by ; this do not include special tags, which start with , and

  ScheduleStatement  ::= used by       semantics 
schedule ( absolute )? ( ( starting | after ) Expr )? ( repeat Expr )?
SimpleBlock
( listen on Expr ( title Expr )? SimpleBlock )?
  ExecStatement  ::= used by       semantics 
exec ( < IDENTIFIER > )? Expr ( from Expr )?
( with ( Expr | ( IDENTIFIER = Expr ),+ )
( ( needSystemIn )? ( ; | output SimpleBlock )
| input SimpleBlock ( output SimpleBlock )?
) readPipe
  SCPStatement  ::= used by       semantics 
scp Expr , Expr , Expr ( , Expr )?
from ( remote | local ) Expr ( to Expr )? ( recursive | echo )*
  MailStatement  ::= used by       semantics 
sendMail ( Expr )?
( from | to | cc | bcc | subject | attach | body | htmlBody ) ( Expr )?
: ( Expr | HereDoc ) )+ ; connectMailServer disconnectMailServer
  GuiEventsStatement  ::= used by       semantics 
guiEvents {
( < (
( ? IDENTIFIER | ( PrimaryExpr ),+ )
: IDENTIFIER
: ( IDENTIFIER ),+
),+ > : ( Statement )+
)*
} getGuiHandler
  FileSystemStatements  ::= used by       semantics 
FSListStatement
| FSFileModStatements
| FSMakeRemoveDirStatements
| FSCopyStatement
| FSMoveStatement
  FSListStatement  ::= used by       semantics 
( listFiles ( { Expr } )? | listPrintFiles | ls ) ( Expr )? ( in Expr | except Expr )?
( recursive | noHidden | fileOnly | dirOnly | perFile | perDir
| count | countLines | size | compressedSize | as tree | ordered ( by ( Date | size | extension ) )
)*
  FSFileModStatements  ::= used by       semantics 
( remove | setFileTime | setReadOnly | chgrp | chmod | chown ) ( Expr )?
( except Expr | in Expr | to Expr | recursive | noHidden | fileOnly | dirOnly )*
  FSMakeRemoveDirStatements  ::= used by       semantics 
( removeDir | rmdir | makeDir | mkdir ) Expr ( in Expr )? ( force )?
  FSCopyStatement  ::= used by       semantics 
copy Expr
( except Expr | in Expr | strip Expr | under Expr | ( to | into ) Expr
| recursive | echo | Echo | noHidden | keepDirs | compress | store
| transform ( Expr | IDENTIFIER , IDENTIFIER Block )
)* IODevice
  FSMoveStatement  ::= used by       semantics 
( rename | move ) Expr ( except Expr | to Expr | echo )*
  JdbcStatements  ::= used by       semantics 
ConnectStatement
| PrepareStatement
| PreparedExecuteStatement
| PreparedExecuteQueryStatement
| PreapredExecuteUpdateStatement
| ExecuteQueryStatement
| ExecuteUpdateStatement
| ExecuteSqlStatement
| ExecuteBatchStatement
| ExecuteAnyStatement
| CreateBatchStatement
| AddBatchStatement
| DumpTableStatement
  ConnectStatement  ::= used by       semantics 
connect ( IDENTIFIER )? ( MemberInitList )? to Expr ( , Expr ( , Expr )? )? ;
  PrepareStatement  ::= used by       semantics 
( prepare | prepareCall ) ( IDENTIFIER )? ( using IDENTIFIER )? : Mixture ;
  PreparedExecuteStatement  ::= used by       semantics 
( preparedExecute | preparedExecuteCall ) ( IDENTIFIER )?
( using IDENTIFIER )? : Mixture ; ( with BindVariableList )? ;
  PreparedExecuteQueryStatement  ::= used by       semantics 
( preparedExecuteQuery | preparedExecuteQueryCall ) ( IDENTIFIER )?
( using IDENTIFIER )? : Mixture ; ( with BindVariableList )? ;
( ; | onSuccess SimpleBlock ( else SimpleBlock )? )
  PreparedExecuteUpdateStatement  ::= used by       semantics 
( preparedExecuteUpdate | preparedExecuteUpdateCall ) ( IDENTIFIER )?
( using IDENTIFIER )? : Mixture ; ( with BindVariableList )? ;
  ExecuteQueryStatement  ::= used by       semantics 
executeQuery
( ( IDENTIFIER )? ( using IDENTIFIER )? : Mixture ;
| ( IDENTIFIER )? ( with BindVariableList )? ;
) ( ; | onSuccess SimpleBlock ( else SimpleBlock )? )
  ExecuteUpdateStatement  ::= used by       semantics 
executeUpdate ( IDENTIFIER )? ( with BindVariableList )? ;
  ExecuteSqlStatement  ::= used by       semantics 
executeSQL ( using IDENTIFIER )?
( RawSqlList | : Mixture ; | ( IDENTIFIER )? ( with BindVariableList )? ; )
  ExecuteAnyStatement  ::= used by       semantics 
executeAny ( using IDENTIFIER )? HereDoc
  ExecuteBatchStatement  ::= used by       semantics 
executeBatch ( IDENTIFIER )? ( using IDENTIFIER )? ( RawSqlList | ; )
  RawSqlList  ::= used by       semantics 
{ ( Mixture ; )+ }
  BindVariableList  ::= used by       semantics 
( @ INT_LIT
( :: FUNCTION_NAME Arguments
| ( : array | bigDecimal | blob | boolean | byte | bytes | clob | Date | double
| float | int | long | Numeric | ref | short | String | Struct | time
| timestamp | varchar | other | oracle_rowid | oracle_cursor | oracle_bfile
)? ( = Expr | => PrimaryExpr | <=> PrimaryExpr )?
) ),+
  CreateBatchStatement  ::= used by       semantics 
createBatch IDENTIFIER ( using IDENTIFIER )? ;
  AddBatchStatement  ::= used by       semantics 
addBatch ( to )? IDENTIFIER : Mixture ;
  DumpTableStatement  ::= used by       semantics 
dumpTable Expr
( using IDENTIFIER | into Expr | limit Expr | prompt Expr )*
( where Mixture )? ; openTableDump
  Dom  ::= used by       semantics 
do Expr ( systemID Expr )? as dom ( XmlInitList )?
  XmlInitList  ::= used by       semantics 
with ( IDENTIFIER ( = true | false )? | xmlns ( : IDENTIFIER )? = STRING_LIT ),+
  XmlStatement  ::= used by       semantics 
do Expr ( in Expr )? ( < IDENTIFIER > )? ( systemID Expr )? as xml ( XmlInitList )? {
( BEFORE | AFTER | < > | ( < | </ )+ IDENTIFIER ( : IDENTIFIER )+ >
| TEXT ( < IDENTIFIER ( : IDENTIFIER )+ > ( + | - )? )?
| WARNING | ERROR | START_DOC | END_DOC | START_NS_MAP | END_NS_MAP
| PI | WHITESPACE | COMMENT | START_CDATA | END_CDATA
| START_DTD | END_DTD | START_ENTITY | END_ENTITY | ELEMENT_DECL
| ATTR_DECL | ENTITY_DECL | EXT_ENTITY_DECL | SKIPPED_ENTITY
) : ( Statement )+
)+ }
  XsltStatement  ::= used by       semantics 
xslt
( copy
| ( xpath ( )? Expr ( systemID Expr )? ( ) )? on
)
Expr ( systemID Expr )?
( as dom
| ( into | to ) Expr ( systemID Expr )?
)
( outputProperties MemberInitList | parameters MemberInitList )*
XmlInitList   XmlInitList  ::= used by       semantics 
with ( IDENTIFIER ( = true | false )? | xmlns ( : IDENTIFIER )? = STRING_LIT ),+
  XmlStatement  ::= used by       semantics 
do Expr ( in Expr )? ( < IDENTIFIER > )? ( systemID Expr )? as xml ( XmlInitList )? {
( BEFORE | AFTER | < > | ( < | </ )+ IDENTIFIER ( : IDENTIFIER )+ >
| TEXT ( < IDENTIFIER ( : IDENTIFIER )+ > ( + | - )? )?
| WARNING | ERROR | START_DOC | END_DOC | START_NS_MAP | END_NS_MAP
| PI | WHITESPACE | COMMENT | START_CDATA | END_CDATA
| START_DTD | END_DTD | START_ENTITY | END_ENTITY | ELEMENT_DECL
| ATTR_DECL | ENTITY_DECL | EXT_ENTITY_DECL | SKIPPED_ENTITY
) : ( Statement )+
)+ }
  XsltStatement  ::= used by       semantics 
xslt
( copy
| ( xpath ( )? Expr ( systemID Expr )? ( ) )? on
)
Expr ( systemID Expr )?
( as dom
| ( into | to ) Expr ( systemID Expr )?
)
( outputProperties MemberInitList | parameters MemberInitList )*
XmlInitList   XmlInitList  ::= used by       semantics 
with ( IDENTIFIER ( = true | false )? | xmlns ( : IDENTIFIER )? = STRING_LIT ),+