< WE Language grammar >
¡Ø ¾Æ·¡ Ç¥±â¿¡¼ ´Ü¾î µÞÆíÀÇ '~' Ç¥½Ã´Â »ý·« °¡´ÉÇÔÀ» ÀǹÌÇÑ´Ù.
-------------------------------------------------------------------------------
expression:
primary
- expression
! expression
~ expression
++ lvalue
-- lvalue
lvalue ++
lvalue --
expression binop expression
lvalue asgnop expression
expression , expression
primary:
identifier
constant
string
( expression )
identifier ( expression-list~ )
identifier [ expression-list ]
lvalue:
identifier
identifier [ expression ]
binop:
, ~ || && | ^ & == !=
> >= < <= << >> + - *
/ % **
asgnop:
= ~= += -= *= /= %= |= ^=
&= <<= >>= **=
declaration:
type-specifier init-declarator-list;
type-specifier:
char
int
long
float
double
string
free
init-declarator-list:
init-declarator
init-declarator, init-declarator-list
init-declarator:
declarator initializer~
declarator-list:
declarator
declarator, declarator-list
declarator:
identifier
declarator [ constant-expression ]
initializer:
= expression
compound-statement:
{ declaration-list~ statement-list~ }
declaration-list:
declaration
declaration declaration-list
statement-list:
statement
statement statement-list
statement:
compound-statement
expression;
if (expression) statement
if (expression) statement else statement
while (expression) statement
do statement while expession;
for (expression-1~; expression-2~; expression-3~) statement
break;
continue;
return;
return expression;
vlock declarator-list;
vunlock declarator-list;
vfree declarator-list;
goto identifier;
identifier : statement
;
program:
function-definition
function-definition program
function-definition:
function type-specifier~ function-declarator function-body
function-declarator:
declarator ( parameter-list~ )
parameter-list:
identifier
identifier , parameter-list
function-body:
type-decl-list function-statement
function-statement:
{ declaration-list~ statement-list }
------------------------------------------------------------------------------
|