1. ͂߂
	̃vOĆAKAGParsergAȉ̋@\ǉB

	A. KAG^O𕡐sɂ킽ċLqł(@A[]Ƃ)
	B. }N`ɁÃftHglwł
	C. [while][endwhile][continue][break]^O
	D. ignoreCRViIŕύXł
	E. !ignoreCRs[np]}NĂяo悤ɂł
	F. [call][return]O[call]ViIύXꂽ
	@ ƂɂA[call]xTĖ߂邱Ƃł
	G. G[`FbNiƃG[bZ[Wڍ׉
	   F[if][ignore][while]XR[vɃx鎞̓G[
	H. V\L[&tjs]𓱓B[emb exp=tjs]Ɠ
	I. [macroname arg1 arg2=2 arg3]Ń}NĂяoƂA
	   }Nmacronameŕϐ%1(=arg1)A%2(=arg2)A%3(=arg3)
	   QƉ\
	J. [Jϐ $val ܂ kag.conductor.lf gp\B
	   [call][call]悪[JϐɁA܂I
	@ [pushlocalvar][poplocalvar]^OŃ[Jϐ̐Ԃ
	@ w\
	K. Tu[`ւ̈A[call]̃[Jϐ̃o
	@ ĎQƉ\
	L. [iscript]-[endscript][macro]-[endmacro]Ŏg
	@ 悤ɕύX
	M. [pmacro]
	N. [iscript]̍s*𖳎(xƂĂ͎舵Ȃ)

	2014/01/26ɋggZ(1.0.0.1)KAGPlugin\[XR[h
	@򂵂܂BggZɊւXɊӒv܂B


2. g
	ExtKAGParser.dllggoCi(krkr.exe)ƓfBNg
	ɃRs[āAgq .tpm ɕύXB

	܂́AExtKAGParser.dllggQ[fBNg(Ƃ
	plugin/ȉ)ɔzuAdata/Initialize.tjs 邢́A
	Override.tjs̒ŁA
	Plugins.link("plugin/ExtKAGParser.dll");
	̂悤ɂēǂݍށBggZ̏ꍇAKAGParser.dll ̑
	ǂݍł悢B

	KAG^O̕sɘjLqȂAAfterinit.tjs 
		kag.mainConductor.multiLineTagEnabled = true;
	ǉ邱ƁB

	[return][call]T悤ɂɂ͈ȉǉ邱ƁB
		kag.mainConductor.fuzzyReturn = true;

	[return]sɃG[Ił͂ȂXNvgsɂ
	ȉǉ邱ƁB
		kag.mainConductor.returnErrorStorage = 'returnerror.ks';

	}Nϐ %1, %2,...  Lɂɂ́Aȉǉ邱ƁB
	kag.mainConductor.numericMacroArgumentsEnabled = true;


3. ExtKAGParserŎgpł悤ɂȂ@\ڍ

  A. KAG^O𕡐sɂ킽ċLqł(@A[]Ƃ)
	KAGParser multiLineTagEnabled  true ɂ邱ƂŁA
	s '\' łKAG^O𕡐sɘjċLq
	ƂłB
	ignoreCR̒lɊւ炸A܂s̐擪 ';' ǋL
	KvȂB

	၄
	; ŏɎs
	[eval exp="kag.mainConductor.multiLineTagEnabled = true"]
	(snip)
	[image storage=摜 layer=base page=back \
		top=%top \
		left=%left]
	@wait \
		time=2000

	KAGParser.dll Ŏ̍s`FbNĂɂ傲ɂ債
	BKAGParserEx.dll ł͕s cond= tꍇɏ
	łĂȂ߁A ExtKAGParser.dll ł͂Ƃ
	قȂB
	As\Ȃ̂̓^O̐؂ڂɌB^O
	s͂łȂÅԂŉs邱ƂłȂB

	\LȒPȑɁA̍sŃG[NƂA\
	G[sus̍ŉsvɂȂ邱ƂɒӁB͂dlB

  B. }N`ɁÃftHglwł

	}N`̂ƂɁA}NɓnɂāAꂪ
	}NgpɎw肳Ȃ̃ftHgl
	w\B

	၄
	[macro name=\ layer=base page=fore]
	[image storage= layer=%layer page=%page]
	[endmacro]

	̂ƂA
	[\ page=back]
	́A
	[image storage= layer=base page=back]
	ƏB

	ۂɂ́A̋@\́Ã}N`IɈȉ̂悤ɓWJ
	L^邱ƂŎĂ(̂߁A}N擪
	sǉ)B

	[macro name=\]
	[eval exp=mp.layer='base' cond=mp.layer===void]ǉ
	[eval exp=mp.page='fore' cond=mp.page===void]ǉ
	[image layer=%layer page=%fore]
	[endmacro]
		
  C. [while][endwhile][continue][break]^O

	KAG^OƂāA[while][endwhile][continue][break]V݁B
	݂͈ȉ̐ɒӁB

	E[if][ignore]^OƓlA[while]`[endwhile]Ԃɂ̓x
	@݂Ă͂ȂȂB
	@[while][call ...]łȂ烉xzuO.K.B
	@@A[call]ƓlAZ[uŃViIύXɎキȂ
	@@Ƃɒ
	Eꃋ[v\[while]`[endwhile]A[break][continue]̓t@C
	@܂ŋLqĂ͂ȂȂB
	E[while][jump]ŔĂ悢B

	F	[while init= exp= each=]
	F	(=exp)ɏ]A[endwhile]܂łKAGXNvg[v
		B
		[v͓qɂ邱Ƃ\B
	F	init=	[vJnɈxsTJS(ȗ)
		exp=	[vp邩ǂfTJS(ȗs)
			true=[vpAfalse=[vI
		each=	̃[vJnOɖsTJS(ȗ)

	F	[endwhile]
	F	Ή[while]^OƂ̊ԂKAGXNvg[vB
		[if][else][endif][ignore][endignore]ȂǂƓqԂ
		ƂȂ̂ŁÃ^O͕KΉ邱ƁB

	F	[continue]
	F	œ[while]݂̌̃[v𒆒fÃ[vsB
		̃[vł́A̍sȍ~KAG^O͎sȂB

	F	[break]
	F	œ[while]݂̌̃[v𒆒fA[while]𔲂B


	၄
	 TJS̊֐need_to_loop()trueԂԃ[v
	[while exp="need_to_be_loop()"]
		; KAG̏
	[endwhile]

	; Cfor̂悤Ȃ̂
	[while init="tf.i = 0" exp="tf.i < 10" each="tf.i++"]
		; KAG̏
	[endwhile]

	; foreach 炱ȁH
	[while init="(tf.ary = [5, 8, 2, 9]).reverse()" \
		exp="(tf.val = tf.ary.pop()) !== void"]
		; tf.val ɔz̗vfÂă[v
		; KAG̏
	[endwhile]

  D. ignoreCRViIŕύXł

	IWiKAGParserłignoreCŔuύXł邪Z[u
	Ȃ߁AConfig.tjsŒ`lύXK
	Ƃɖ߂ȂƂȂvƂÂ
	ViIŕύX鎞͒ӂKvB
	ExtKAGParserłKAGParserNXIgnoreCRZ[u悤
	ύX߁AViIŔCӂɕύX\ƂȂB
	ۂɂ͎͂ E. ̋@\̕z΁B

  E. !ignoreCRs[np]}NĂяo悤ɂł

	KAGParserCX^X(kag.mainConductor)ɂāA
	ignoreCR=false  enableNP=true ŁAs "[np]\"
	}N}悤ɂ(\)BɂAKAG
	ViIt@C̋LqȈՂɂȂBnp  New Page
	̗ƎvƋgB

	၄
	(kag.mainConductor.)ignoreCR = false łꍇ̈ȉ
	LqlB
	===  ===
	[eval exp="kag.mainConductor.enableNP = true"]\
	̍sł͉s܂B
	̍sł͉sꂸA̍s[[np]}܂B
	
	킩邩ȁH

	=== ܂ ===

	́A(ignoreCR=truȅꍇł)ȉ̂悤ɉ߂

	===  ===
	[eval exp="kag.mainConductor.enableNP = true"]
	̍sł͉s܂B[r eol=true]
	̍sł͉sꂸA̍s[[np]}܂B
	[np]
	킩邩ȁH
	[np]
	=== ܂ ===

	Pɋsuꍇ́A܂łignoreCR=false̎
	lARgs(';')ݒu邱ƁB

  F. [call][return]O[call]ViIύXꂽƂɂA
     [call]xTĖ߂邱Ƃł

	݂ȂƂāAQ[ɏoƂȂ肪
	G[bZ[WAuViIt@CɕύX
	 return ̖߂ʒuł܂vB
	ExtKAGParserł́Aȉ`邱ƂŁÃbZ[W
	x邱ƂłB
	[eval exp="kag.mainConductor.fuzzyReturn = true"]
	fuzzyReturn͌̈ӂɃZ[uȂ悤ɂĂ(
	ςKvoɑΉ邽)̂ŁAfirst.ks
	擪AfterInit.tjsŒ`邱Ƃ߂B

	̓Iɂ́Au[return]߂ʒu(=[call storage=xxx]܂
	s)AVViIt@CőO\s͈̔͂ŒTvB
	IWił͖߂낤ƂsɕύXꍇ͖ⓚ
	pŃG[ɂĂAExtKAGParserł͂
	߂*Ȃ*B

	Aȉ̂悤ȃP[Xł́Aꏊɖ߂ꍇ
	邱ƂɂӁB
	[macro name=np]
	[p]
	[cr]
	[call storage=saveanyware.ks target=*saveanywhere]
	[endmacro]
	Ƃ}N炩ߒ`Ă̂ƂB

	ύXÕViI
	łĂӂłB
	[np] 
	勹؂Ȃ邩łB
	[np]@@@@@@@@@@ ŃZ[u
	r񓙋؂ł
	[np]

	ύX̃ViI
	łĂӂłB[r]
	vbVAbvƂ܂B[r]
	Ƃ̃}łB[r]
	݂ȓ̘rɂȂ܂B
	[np]@@@@@@@@@@ [hƂĊJ
	勹؂Ȃ܂B
	[np]			 ĊJĂق̂ɁI
	r񓙋؂ł
	[np]

	fuzzyReturńAύXÕViI[call]ŝƓ
	e̍s(ł[np])AȑOł߂ӏTB
	̂߁A̗ł́A[np]܂܂Ƃ߂()
	sĊJĂ܂B

	Ƃ͂AIWiKAGParserł悤ȂƂ͋N
	Ă킯ŁA炻̂炢͂ȂAƑËB
	ƂSɖhɂ́A}WɃj[NȃZ[u
	xzuKv͕̂ςȂB

	ȂA[return]Ŗ߂ʒuTȂꍇAʏ
	uViIt@CɕύX߁cvƂ̃b
	Z[W\ăG[I邪AreturnErrorStorage
	`Ă΂ĂŏpB
	returnErrorStorageZ[uȂ̂ŁAgȂfirst.ks
	̓AfterInit.tjsŒ`邱ƁB

	first.ks̓ł̒`၄
	[eval exp="kag.mainConductor.returnErrorStorage = 'returnerror.ks'"]

	returnerror.ks̗၄
	[eval exp="System.inform('܂[return]Ŗ߂܂ł[')"]
	; ⓚpŃ^Cgɖ߂Ⴄ
	[gotostart]

    G. G[`FbNiƃG[bZ[Wڍ׉

	[if][ignore]([while][pushlocalvar])XR[vɃx
	̓G[ɂB}jAɂ́uȁvƖmɏ
	̂ɁAۂɂ̎ɂ̓G[ɂꂸĂ߁A
	G[ɂ悤ύXBɂA܂܂(Ă
	Ȃ)ĂQ[ȂȂ\
	邱ƂɒӁB
	http://devdoc.kikyou.info/tvp/docs/kag3doc/contents/Tags.html#if
	http://devdoc.kikyou.info/tvp/docs/kag3doc/contents/Tags.html#ignore
	āA@G[̏ꍇAR\[OɁȀڍׂ
	CurPosCurLineStr\悤ɂB

    H. V\L[&tjs]𓱓B[emb exp=tjs]Ɠ

	[emb]̒Z\L~Ƃv]󂯂āB

    I. [macroname arg1 arg2=2 arg3]Ń}NĂяoƂA
       }Nmacronameŕϐ%1(=arg1)A%2(=arg2)A%3(=arg3)
       QƉ\

	numericMacroArgumentEnabled(def:false)trueɂ邱ƂŁA
	}N%1,%2,%3...ȂǂQƂł悤ɂȂB
	NScripter̂悤ȁAw肳ꂽ̏ԂŃp[^
	n}NɎgpB

	first.ks̓ł̒`၄
	[eval exp="kag.mainConductor.numericMacroArgumentsEnabled = true"]

	[macro name=test]
	[ch text=%1]
	[endmacro]

	[test abcdefg]   ( [ch text=abcdefg] ɒu)

	̂Ƃ}ŇĂяoł͈̖Oɐl͎gȂ
	([test 1=5]Ȃ)ƂɒӁBȂƂlȂ
	낤ǁB

	[emb exp=][if exp=] ȂǁATJSw肷^O
	gpɂ́A%1 ł͂ȂAmp['1'] Ǝw肷Kv
	邱ƂɒӁB
	၄
	[emb exp=%1] ł͂Ȃ [emb exp="mp['1']"]A
	[if exp="%1=='abc'"] ł͂Ȃ [if exp="mp['1']=='abc'"]

    J. [Jϐ $val ܂ kag.conductor.lf gp\B

	[Jϐ́Akag.conductor.lf.XXX Ƃč쐬\
	ϐBKAG^Oł $XXX łQƉ\B
	XNvgłgpłAZ[u邪A
	[pushlocalvar][poplocalvar]ԁA܂[call][return]Ԃł
	VK쐬AoƂ̊ԂɎgp̂Y
	ɖ߂B
	[if][while]ƓlA[pushlocalvar]-[poplocalvar]Ԃɂ
	xzuĂ͂ȂȂB

	[localvar arg1=val1 arg2=val2 ...]
		[JϐɒlBۂɂtagname=localvar
		ꏏɒ`Ă܂ƂɒӁB
		[eval exp="&kag.conductor.lf.i = 5"]ƂłłB

	[pushlocalvar copyvar=true_or_false arg1=val1 arg2=varl2 ...]
		[Jϐ̃XR[vJnBȉŒ`
		[Jϐ́A[poplocalvar]܂Œ`EQƁEύX
		\BqɂłB
		copyvar=true/false(def)
			Õ[JϐSăRs[
			Vȃ[JϐƂĎgp邩ǂB
			def=false(ȑÕ[Jϐ̓Rs[A
			ł͉`Ȃ)
			@tagname=pushlocalval͒`
		arg#= ...
			V[Jϐ`B
			[eval exp="kag.conductor.lf.arg=2"]Ȃǂ
			Ă`\Bۂɂtagname=pushlocalvar
			(ƏꍇɂĂcopyvar=true)`
			Ƃɒ
			
	[poplocalvar]
		[Jϐ̃XR[vIB[pushlocalvar]`
		[Jϐ͑SĖYA[pushlocalvar]ȑO
		`Ă[JϐQɖ߂B
		[pushlocalvar][poplocalvar]Ԃ[jump]ŔĂ悢B

	၄
		@iscript
		// ʓ|Ȃ̂ŁAlf = kag.conductor.lf ƂĒ`Ă
		property lf
		  { getter { return kag.conductor.lf; } }
		@endscript

		; łO[oXR[ṽ[Jϐ͎gpłB
		@localvar i=5 j=7
		@pushlocalvar i=6
			łlf.i=6Alf.j݂͑Ȃ
			@eval exp=lf.i++
			lf.i=7ɂȂ
			KAG^Oł́$ilf.iQƂłB
			@ch text=$i
			"&lf.i"$iw肵̂Ɠ
			@ch text=&lf.i
		@poplocalvar
		łlf.i=5Alf.j=7
		@s

    K. [call]̈A[call]̃[Jϐ̃oƂ
    @ QƉ\

	[call]ȉ̂悤ɎgƁATu[`Ń[Jϐ
	oƂ[call]̈QƂłB܂A[call]
	nB[pushlocalvar] ƓlAcopyvar nƍL
	[JϐSăRs[ēnB
	A͑S[Jϐɂ̂ŁAtagname,storage,
	targetȂǂ̃[Jϐ쐬邱ƂɒӁB
		@iscript
		property lf
		  { getter { return kag.conductor.lf; } }
		@endscript

		@eval exp="lf.aaa = 5"
		@call target=*subroutine arg1=val1
		; ł͑ς炸 lf.aaa = 5
		@s

		*subroutine
		ł́Alf.tagname=call, lf.target=*subroutine, lf.arg1=val1
		copyvar=true w肳ĂȂ̂ lf.aaa ̓Rs[ĂȂ
		[ch text=$arg1]
		;  "val1" ƕ\
		[return]

	[Jϐ[call][return]܂ŗLB[call]̃[Jϐ
	[pushlocalvar]ƓlV쐬Ă邽߁A[call]Õ[Jϐ
	㏑邱Ƃ͂ȂB

    L. [iscript]-[endscript][macro]-[endmacro]Ŏg
    @ 悤ɕύX

	܂ł͂łȂAł悤ɂB
	͊ȒPŁA[iscript]-[endscript]Ԃ̃XNvgAS
	[eval exp="xxx"]Ƃmacroɖߍނ悤ɂB̂B
	̂߃}N[iscript]łonScript()Cxg͋N
	ȂƂɒӁB
	escape/unescapeJԂ̂őxIɂ͏sB
	\ȂAŏ [eval] ŏĂق悢B

    M. [pmacro]

	p[^}NBKAG^Ȏ̕}N
	oAȒPȋLqŎw肷邱ƂłB

	P
	[pmacro name=wi\C layer=base page=fore]
	;
	[image storage=X wi\C]
	;  [image storage=X layer=base page=fore] ƂȂ

	Q
	[pmacro name=Ί = =΂ =]
	;
	[ Ί =s[X]
	;  [ = =΂ =] ƂȂ

	Ap[^}Ngp鎞́A=XXX tĂ
	ȂȂB̂߁Ap[T =XXX ꍇ
	p[^}Nł͂ȂƔfĂ邽߁B

	pmacrogp鎞̈၄
	[image storage=X wi\C=true]
	;  "wi\C" ̓p[^}Nł͂Ȃʂ̑
	; @@āÂ܂[image]^Oɓn

	܂AnumericMacroArgumentEnabled=true ̎A}N
	󂯎p[^̓p[^}NWJꂽ
	̂Ap[^}N̂ݏsɂȂ邱ƂɒӁB

	pmacrogp鎞̗၄
	[ Ί =s[X]
	;
	[macor name=]
	[ch text=%1] uvEuvEuځv̂ꂩ
	[ch text=%2] %1ȊÓuvEuvEuځv̂ꂩ
	[ch text=%3] %1%2ȊÓuvEuvEuځv̂ꂩ
	[ch text=%4] ́uv
	;
	[endmacro]

    N. [iscript]̍s*𖳎(xƂĂ͎舵Ȃ)

	ftHgKAGParseŕA[iscript]-[endscript]łĂA
	s*oĂƂx()FĂB̂߁A
	uiscript̉ςŃxAZ[uf[^
	݊vƂB
	ExtKAGParserł͂邽߁Aiscriptł͍s
	'*'Ă𖳎悤ɂB̂߁At
	܂łKAGParserŃZ[uf[^ĊJłȂƂB
	ExtKAGParserExtKAGParser̃Z[uf[^݂̂Ŏgp邱ƁB


4. gg2ƋggZł̑
	ggZ(ɂJŋgg2?)ł́Aȉ̊֐ǉĂB

	void TVPExecuteScript(const ttstr &, iTJSDispatch2 *, tTJSVariant *);

	gg2.32r2ɂ͂̊֐݂Ȃ߁AExtKAGParserł́A
	̊֐gEgȂIł悤Ƀ\[XR[hō׍H
	BRpC͕KvB


5. ӓ_
	EggZKAGParserQlɂ߁ACBSDCZXƂȂB
	@ȂƋR(?)dll͋ggłgpłႤǂˁI
	EVC2010ŃrĥŁAWinXPO(Win2kȂ)ł͓삵ȂB


6. \[Xt@CƂ
	ExtKAGParser.h ...... ̊֐gEgȂ̃rh𕪂`
	KAGParser.cpp ....... KAGParser{
	KAGParser.h ......... KAGParserpwb_
	Main.cpp ............ dllǂݍݗpC
	TJSAry.h ............ TJS̔zC++ォgp邽߂̏NX
	TJSAry.cpp .......... ̎
	TJSDic.h ............ TJS̎C++ォgp邽߂̏NX
	TJSDic.cpp .......... ̎
	tjsHashSearch.h ..... nbVpwb_(gg[2Z]ʂ)
	tp_stub.cpp ......... ggZ(1.0.0.1)玝Ă tp_stub.cpp
	tp_stub.h ........... ggZ(1.0.0.1)玝Ă tp_stub.h


7. Ql
	KAGPluginEx.dll
		https://sv.kikyou.info/svn/kirikiri2/trunk/kirikiri2/src/plugins/win32/KAGParserEx/
	KAGPluginExb.dll:
		http://kasekey.blog101.fc2.com/blog-entry-203.html
		https://github.com/sakano/KAGParserExb
	ggZ
		http://www.kaede-software.com/cat20/z/
	KAGPlugin.dll for ggZ
		https://github.com/krkrz/krkrz/tree/master/src/plugins/win32/KAGParser
	gg^j`f^sirGkX29 ̏Zl̕X
	http://peace.2ch.net/test/read.cgi/gamedev/1433436610/


8. ̑
	E[while][endwhile]ł̃[v́A[jump target=*loop]ł
	@[vR{قǍBR\[ւ̏o͗ʂ̖̍͗lB
	Eӌ~BقALqɂׂA
	@ȋ@\~AȂǁB[EfłǂB
		[: s_narayyahoo[dot]co[dot]jp  Ђ˂Ă̂Œ
		f: http://b.koroweb.com/pa/patio.cgi?room=kaicho
	EяȂ̂ŁAĂ΂ċlɎgĒB
	@񂩂񍐂ΕsȂǂւ̑Ή͉\Ȍ葁
	@iB


AFȂ[if][ignore][while][pushlocalvar]XR[vɃxzu
       łȂ
	R͊ȒPAS֌WȂƂ납炻[jump]ȂǂŔ
	܂ƁA̒n_̏ϐlmɂȂȂB

	ƂΈȉ̗ł́AAn_ɔэ񂾂Ƃ̕ϐ tf.a 
	l͂ɂȂ邩ۏ؂łȂA][else]ȉ
	sׂǂ킩ȂȂĂ܂BāA
	tf.a != 2 ̎ɂэނƂłĂ܂AXNvg
	_j]B

	၄
	[jump target=*An_]
	;
	[if exp=tf.a == 2]
	*An_
		[ch text=&tf.a]
	[else]
		[ch text=&tf.a]
	[endif]

	{́uZ[u|Cg͔zułv(̎_ł̃f[^
	oĂ΂)̂ł邪AKAGł̓Z[u|Cg
	u߂ɂ̓xK{Ȃ̂ŁA][if][ignore][while]
	[pushlocalvar]̃XR[vɃZ[u|CgzułȂ
	ȂĂB

B: [jump]
	KA[if][ignore][while][pushlocalvar]XR[vOłȂ
	ȂȂBjumpɓRfBVƂĂ
	XR[vOł邱Ƃ邽߁BR̓AƓB


t^AFExtKAGParserɒǉATJSォQƂłKAGParser̃vpeB

enableNP(true/false(def)):
	!ignoreCRsA}N[np]ǉ邩ǂ

fuzzyReturn(true/false(def)):
	callŃZ[uꂽcallɍsǉE폜ꂽƂA
	callTǂ

returnErrorStorage(def=""(Ȃ)):
	call֖߂邱ƂɎsɁAG[Îł͂Ȃ
	KAGXNvgsꍇKAGXNvgwB
	ȂŃG[I

multiLineTagEnabled(true/false(def)):
	^O𕡐sɂ킽ċLqł邩ǂBtruȅꍇA
	s \ ƁA^O̍sɑĂƂ݂Ȃ

numericMacroArgumentsEnabled(true/false(false)):
	}NɎw肵ȀԂŃ}N %1A%2...
	ŎQƉ\ɂ邩ǂB

currentLocalVariables(z):
	KAG^O $var ȂǂŎQƂł郍[Jϐ̊i[B
	[call]܂[pushlocalvar]ŃX^bNɋl܂A[return]܂
	[poplocalvar]ŃX^bN߂B

lf(z):
	currentLocalVariablesƓ

prelf(z):
	̃X^bÑ[Jϐ

pmacros(z):
	p[^}N

ifLevel():
	݂ IfLevelB[if]܂[while]̃lXgƂ+1A
	[endif]܂[endwhile]Ƃ-1

whileStackDepth():
	݂ while X^bN̐[B[while]ł+1A
	[endwhile]𔲂-1B

localVariablesDepth():
	[Jϐ̃X^bN̐[B[call]܂[pushlocalvar]
	+1A[return]܂[poplocalvar]-1B

localVariables(z̔z):
	[JϐX^bNS


F
	Esyntax error `FbNExtKAGParserChecker.exe
	@쐬ׂl
	EsԍwZ[uł悤ɁAExtKAGParserɈȉ̊֐
	@ׂl
	  void tTJSNI_KAGParser::GoToLine(const tjs_int lineno);
	  void tTJSNI_GoToStorageAndLine(const ttstr &storage, const tjs_int lineno);
