ƒXƒNƒŠƒvƒgŒ¾Œê‚܂Ƃñ


ƒuƒƒO
Œ¾ŒêŽd—l
’è”’è‹`

Back
Home

‚܂ƂñŒ¾ŒêŽd—l


’è”
	:=	”’l’è”
	|	•¶Žš’è”
	;
”’l’è”
	:=	®”’è”
	|	•‚“®¬”“_’è”
	;

®”’è”
	:=	‚P‚Oi”’è”
	|	‚Wi”’è”
	|	‚P‚Ui”’è”
	;

•„†
	:= ( '+' | '-' )
	;

‚P‚Oi”’è”
	:=	( ‚P‚Oi”’l - '0' ) ( ‚P‚Oi”’l | '_' )*
	|	'0'
	;

‚Wi”’è”
	:=	'0' ‚Wi” ( ‚Wi” | '_' ) *
	;

‚P‚Ui”’è”
	:=	( "0x" | "0X" ) ‚P‚Ui” ( ‚P‚Ui” | '_' )*
	;

•‚“®¬”“_’è”
	:=	‚P‚Oi”  ( ‚P‚Oi” | '_' )* '.' ( ‚P‚Oi” | '_' )+ ( 'e' | 'E' ) •„†? ( ‚P‚Oi” | '_' )+
	|	‚P‚Oi”? ( ‚P‚Oi” | '_' )* '.' ( ‚P‚Oi” | '_' )+ ( ( 'e' | 'E' ) •„†? ( ‚P‚Oi” | '_' )+ )?
	|	‚P‚Oi”  ( ‚P‚Oi” | '_' )* '.' ( ‚P‚Oi” | '_' )* ( ( 'e' | 'E' ) •„†? ( ‚P‚Oi” | '_' )+ )?
	;

•¶Žš’è”
	:= '"' ( "\\\"" | ( ”CˆÓ•¶Žš - '"' ) )* '"'
	;

ޝ•ÊŽq
	:=	( ( ”CˆÓ•¶Žš - •„† - ';' - '"' - ‹ó”’ ) ( ”CˆÓ•¶Žš - •„† - ';' - ‹ó”’ )* ) - —\–ñŒê
	;
	
Š®‘SCüޝ•ÊŽq
	:=	ޝ•ÊŽq ( '.' Š®‘SCüޝ•ÊŽq )?
	;

ƒRƒƒ“ƒg
	:=	"//" ( ”CˆÓ•¶Žš - s’[ )
	|	"/--" ( ”CˆÓ•¶Žš - "--/" )* "--/"
	|	"/*" ( ”CˆÓ•¶Žš - "*/" )* "*/"
	;

ƒL[ƒ[ƒh
	:=	Œ^錾ƒL[ƒ[ƒh
	|	§Œä\•¶ƒL[ƒ[ƒh
	|	\‘¢‰»ƒL[ƒ[ƒh
	;

Œ^錾ƒL[ƒ[ƒh
	:=	"integer" "real" "string" "array" "object" "functum" "accessor"
	;

§Œä\•¶ƒL[ƒ[ƒh
	:=	"if" "switch" "case" "default" "for" "for_each" "while" "do" "continue" "break" "goto"
	;
	
\‘¢‰»ƒL[ƒ[ƒh
	:=	"module" "import"
	; 

// ‰‰ŽZŽq

‘ã“ü‰‰ŽZŽq
	:=	"=" | "+=" | "-=" | "*=" | "/=" | "%="
	;

// ‰‰ŽZ

Šî–{‰‰ŽZ
	:=	ޝ•ÊŽq
	|	’è”
	|	'(' ‰‰ŽZ ')'
	;
	
Œã’u‰‰ŽZ
	:=	Šî–{‰‰ŽZ Œã’u‰‰ŽZCüŽq
	;

Œã’u‰‰ŽZCüŽq
	:=	( '[' ‰‰ŽZ ']'
		| '(' ƒpƒ‰ƒ[ƒ^”z—ñ? ')'
		| '++'
		| '--'
		) Œã’u‰‰ŽZCüŽq
	| e
	;
	
’P€‰‰ŽZ
	:=	Œã’u‰‰ŽZ
	|	"++" ’P€‰‰ŽZ
	|	"--" ’P€‰‰ŽZ
	|	’P€‰‰ŽZŽq ƒLƒƒƒXƒg‰‰ŽZ
	;
	
’P€‰‰ŽZŽq
	:= '+' | '-'
	;

ƒLƒƒƒXƒg‰‰ŽZ
	:=	'(' Œ^錾ƒL[ƒ[ƒh ')' ƒLƒƒƒXƒg‰‰ŽZ
	|	’P€‰‰ŽZ
	;
	
ƒpƒ‰ƒ[ƒ^”z—ñ
	:=	‘ã“ü‰‰ŽZ ( ',' ‘ã“ü‰‰ŽZ )*

‘ã“ü‰‰ŽZ
	:=	ޝ•ÊŽq ‘ã“ü‰‰ŽZŽq ( ’è” | ޝ•ÊŽq )
	|	ޝ•ÊŽq ‘ã“ü‰‰ŽZŽq ‰‰ŽZ
	;

‹@”\Žq
	:=	–¼‘O•t‚«‹@”\Žq
	|	“½–¼‹@”\Žq
	;

–¼‘O•t‚«‹@”\Žq
	:=	"functum" identifier ƒpƒ‰ƒ[ƒ^”z—ñ? '{' \•¶* '}'
	;

“½–¼‹@”\Žq
	:=	'{' \•¶* '}' - \•¶
	;

// \•¶’è‹`

錾•¶
	:=	Œ^錾ƒL[ƒ[ƒh ޝ•ÊŽq ';'
	|	Œ^錾ƒL[ƒ[ƒh ‘ã“ü•¶ ( ',' ‘ã“ü•¶ )* ';'
	;

// §Œä\•¶

for\•¶
	:=	"for" '(' ‘O’uŽÀs\•¶ ';' ðŒŽ® ';' Œã’uŽÀs\•¶ ')' ‹@”\Žq
	;
	
while\•¶
	:=	"while" '(' ðŒŽ® ')' ‹@”\Žq
	;

do_while\•¶
	:=	"do" ‹@”\Žq "while" '(' ðŒŽ® ')' ';'
	;

if\•¶
	:=	"if" '(' ðŒŽ® ')' ‹@”\Žq ( "else" if\•¶ )* ( "else" ‹@”\Žq )?
	G

switch_case\•¶
	:=	"switch" '(' ‰‰ŽZ ')' '{' ( "case" ’è” ‹@”\Žq )* ( "default" ‹@”\Žq )? '}'
	;