AT&T Home | AT&T Labs | Research
AT&T Labs, Inc. - Research

The Yoix® Scripting Language

Home | What's New | Grammar | Documentation | Download | License | YChart | YDAT | YWAIT | Byzgraf | FAQs
reference grammar
 
In this brief reference of the Yoix grammar, non-terminals start with an upper case letter and are shown in italic type; all terminals, except for the three undefined symbols name, number, and string, are shown in bold type exactly as they would appear in a Yoix program.
Statement:
	Compound
	Declaration ;
	Expression ;
	FunctionDefinition
	NamedBlock
	Permissions ;
	break ;
	case UnaryExpression :
	continue ;
	default :
	do Statement while ( Expression ) ;
	exit ExpressionOPT ;
	finally Compound
        for ( name in Expression ) Statement
        for ( name in Expression by Expression ) Statement
	for ( ExpressionOPT ; ExpressionOPT ; ExpressionOPT ) Statement
	if ( Expression ) Statement
	if ( Expression ) Statement else Statement
	import Lvalue ;
	import Lvalue .* ;
	import yoix.*.* ;
	include string ;
	return ExpressionOPT ;
	save Lvalue ;
	save Lvalue = Expression ;
	switch ( Expression ) Compound
	synchronized ( Expression ) Statement 
	try Compound catch ( name ) Compound
	typedef name ( ParameterList ) Compound
	while ( Expression ) Statement
	;

StatementList:
	Statement
	StatementList Statement

Compound:
	{ }
	{ StatementList }

NamedBlock:
	Lvalue { }
	Lvalue { StatementList }
	global Lvalue { StatementList }
	restricted Lvalue { StatementList }
	this Lvalue { StatementList }
	global { StatementList }
	restricted { StatementList }

Expression:
	UnaryExpression
	UnaryExpression * UnaryExpression
	UnaryExpression / UnaryExpression
	UnaryExpression % UnaryExpression
	UnaryExpression + UnaryExpression
	UnaryExpression - UnaryExpression
	UnaryExpression << UnaryExpression
	UnaryExpression >> UnaryExpression
	UnaryExpression >>> UnaryExpression
	UnaryExpression < UnaryExpression
	UnaryExpression <= UnaryExpression
	UnaryExpression > UnaryExpression
	UnaryExpression >= UnaryExpression
	UnaryExpression instanceof Typename
	UnaryExpression == UnaryExpression
	UnaryExpression != UnaryExpression
	UnaryExpression === UnaryExpression
	UnaryExpression !== UnaryExpression
	UnaryExpression =~ UnaryExpression
	UnaryExpression !~ UnaryExpression
	UnaryExpression & UnaryExpression
	UnaryExpression ^ UnaryExpression
	UnaryExpression | UnaryExpression
	UnaryExpression && UnaryExpression
	UnaryExpression ^^ UnaryExpression
	UnaryExpression || UnaryExpression
	UnaryExpression ? Expression : Expression
	UnaryExpression = UnaryExpression
	UnaryExpression *= UnaryExpression
	UnaryExpression /= UnaryExpression
	UnaryExpression %= UnaryExpression
	UnaryExpression += UnaryExpression
	UnaryExpression -= UnaryExpression
	UnaryExpression <<= UnaryExpression
	UnaryExpression >>= UnaryExpression
	UnaryExpression >>>= UnaryExpression
	UnaryExpression &= UnaryExpression
	UnaryExpression ^= UnaryExpression
	UnaryExpression |= UnaryExpression
	UnaryExpression , UnaryExpression

ExpressionList:
	Expression
	ExpressionList , Expression

UnaryExpression:
	( Expression )
	Attribute
	Cast
	Lvalue
	Lvalue ++
	Lvalue --
	++ Lvalue
	-- Lvalue
	+ UnaryExpression
	- UnaryExpression
	! UnaryExpression
	~ UnaryExpression
	new Dvalue InitializerOPT
	number
	string

Attribute:
	Lvalue @ access
	Lvalue @ length
	Lvalue @ major
	Lvalue @ minor
	Lvalue @ nameof
	Lvalue @ offset
	Lvalue @ sizeof
	Lvalue @ typename

Cast:
	( name ) UnaryExpression

Lvalue:
	Lvalue . name
	Lvalue [ Expression ]
	Lvalue ( ExpressionListOPT )
	& Lvalue
	* Lvalue
	* Pointer
	global
	name
	this

Pointer:
	Lvalue ++
	Lvalue --
	++ Lvalue
	-- Lvalue
	( Expression )

Declaration:
	QualifierOPT Typename DeclaratorList

Declarator:
	Dvalue
	Dvalue = Initializer

DeclaratorList:
	Declarator
	DeclaratorList , Declarator

Dvalue:
	name
	name [ Expression ]
	name [ Expression , Expression ]
	name [ Expression , ... ]

Initializer:
	Compound
	Expression
	{ ExpressionList }

Qualifier:
	const
	final

Typename:
	name

FunctionDefinition:
        finalOPT name ( ) Compound
        finalOPT name ( ) = Expression
        finalOPT name ( ParameterList ) Compound
        finalOPT name ( ParameterList ) = Expression
        finalOPT name ( ParameterList , ... ) Compound
        finalOPT name ( ParameterList , ... ) = Expression

ParameterList:
	TypenameOPT name
	ParameterList , TypenameOPT name

Permissions:
	Qualifier Lvalue
	Qualifier Lvalue = Expression

 

Yoix is a registered trademark of AT&T Inc.