[csrdl]

[\]
CƗގ\\
ZɎgp֐ɒx(delay, wait, wait_event)gpx֐A
x֐pxZƒʏ֐̔x֐݂܂B
ꕔ߂̉Zɂ͒xZgpłȂdlɂȂĂ܂B

[\]
-- C݊ڎw --
int short long unsigned signed char float double
struct union enum
typedef
auto static extern register
if else while do for switch case default break continue
return
{ }

-- O --
#define
#if
#else
#endif
defined
#ifdef
#line
#error

-- ǉ\ --
thread init final wait delay kill
once always event wait_event
print

[Zq]
+ - * / %
+= -= *= /= %=
& | ~ ^ << >>
&= |= ^= <<= >>=
&& || !
== != <= >= > <
? :
[]
()
* -> .

[gݍlib֐]
ڍׂ͔J

[C̕@ňقȂӖ̂]
const   : ܂
auto    : ܂
register: ܂
double  : floatƓł
extern  : CꑤŏOďo֐錾
static  : gbvXbhX^bN̈Ɋmۂꂽϐ
	֐AXbh̎q֐AqXbhȂł{}ǂĐeł΃ANZXłϐ
	void func(void )
	{
	  static int i;
	  int j;
	  void func2(void)
	  {
	    i = 0; // OK
	    j = 0; // Error
	  }
	}

[print]
Wo͂1vfo͂(o͍Ōɉss)

  print 1;
  print 1.23f;
  int i = 20;
  print i;
  print "string"
  char str[] = "string";
  print str;
  int ia[2] = { 1, 2 };
  print ia[0];
  print &ia[0];
  print ia;
  print (void*)i;	// 00000001 |C^Ƃĕ\32bit 16i\
  ALq邱Ƃɂ1sɕvfo͂
  print "i = " print i;	// i = 1

ɊȈՃfobOp̊mFo͂ƂėpAȕWo͂puts, printfĎgp

[thread]
[Xbhsx߂p邱Ƃő̃Xbhɏڂ܂B

\
thread statement;

thread g[N1Xe[gg1XbhƂėグAɏ̃XbhɈڂ܂B
sɂ킽鏈sꍇ { } ň͂ނƂł܂B


  thread {
    print "1";
    delay(1);
    print "3";
  }
  thread {
    print "2"
    delay(1);
    print "4";
  }

[init]
thread̋NɎsXe[gg1`܂
initł͒xXe[gg(delay, wait, wait_event Ȃǂ͎g܂)

\
init statement;


  print "1";
  thread {
	init {
		print "2";
	}
	print "4";
  }
  print "3";
  delay(1);
  print "5";

[final]
thread̏IɎsXe[gg1`܂
finalł͒xXe[gg(delay, wait, wait_event Ȃǂ͎g܂)

\
final statement;


 print "1";
 thread {
   init print "2";
   print "1";
   delay(1);
   print "3";
   final {
   	print "5";
   }
 }
 print "3";
 thread {
   init print "4";
   final {  // thread̉ɏĂOK
     final "7";
   }
   print "2";
   delay(1);
   print "4";
   delay(1);
 }
 print "5";
 delay(1);
 print "6";
 final {
  print "6";
 }

[kill]
wthread𑦍ɏI
\
kill xZ
kill (int)thread_id;


  int sub_thread_id;
  thread {
	init {
		sub_thread_id = $thread_id;	// $thread_id̓VXeϐŌ݂̃XbhIDlł
						// sub_thread_id̓O[oϐɂ̂ŕthreadANZXł
	}
	delay(100);
	final {
		print 2;
	}
  }
  delay(1);
  print 1;
  kill sub_thread_id;
  print 3;

[delay]
p[^l̃t[s𒆒f܂B

\
delay xZ;

\
delay 1;
delay (val);


[wait]
藧܂ŎXe[ggɏڂ܂B

\
wait xZ;
\
wait (val == true);

[event]
Cxgԍ𔭍s(Stask̑SthreadΏ)

\
event evenet_no:萔;

[once]
onceevent_no 󂯎ƈxs statement o^

\
once ( event_no:萔 ) statement;

[always]
always event_no 󂯎Ǝs statement o^

\
always ( event_no:萔 ) statement;

[wait_event]
event_no󂯎܂Ŏs𒆒f܂B

\
wait_event event_no:萔
