TNB Library
クラス | 公開型 | 公開メンバ関数 | 全メンバ一覧
CTmlParser クラス

TinyMacroLang パーサー [詳解]

#include <TnbTmlParser.h>

+ CTmlParser の継承関係図

クラス

struct  IListener
 TinyMacroLang リスナー [詳解]
 

公開型

enum  ELogLevel { ELL_ABSOLUTE , ELL_FUNC , ELL_BRANCH , ELL_DETAILS }
 LOG表示レベル. [詳解]
 
enum  EOperation {
  Operation_Non , Operation_Text , Operation_Text_Esc , Operation_Text_EscHex ,
  Operation_Calc , Operation_CheckFunc , Operation_CheckStatement , Operation_FindingFunc ,
  Operation_FileAccess
}
 オペレーションコード [詳解]
 
enum  EResult {
  Result_Success = 1 , Result_Nop = 0 , Result_UnknownError = -10000 , Result_InvalidEscSeq ,
  Result_InvalidHexNotation , Result_NotFoundParentheses , Result_NotCloseParentheses , Result_InvalidParenthesesPosition ,
  Result_UnfinishedExpression , Result_ZeroDivide , Result_UnknownKeyword , Result_InvalidWordPosition ,
  Result_NotName , Result_AlreadyExistName , Result_UnnecessaryParam , Result_ManyParam ,
  Result_NotenoughParam , Result_OutOfRange , Result_InvalidMacroContentsLevel , Result_OpenFailure ,
  Result_ReadFailure , Result_SendFailure , Result_InvalidState , Result_NotFoundFunction ,
  Result_UserInterruption , Result_ProgramableInterruption
}
 リザルトコード [詳解]
 
enum  EScene {
  Scene_Non , Scene_Val , Scene_Array , Scene_Func ,
  Scene_If , Scene_Else , Scene_Switch , Scene_Case ,
  Scene_Default , Scene_While , Scene_Break , Scene_Return ,
  Scene_Include , Scene_End
}
 シーンコード [詳解]
 

公開メンバ関数

CTmlResult AddMacroContents (LPCTSTR lpszName, LPCSTR lpszData)
 [追加] マクロコンテンツの追加. [詳解]
 
CTmlResult AddMacroFile (LPCTSTR lpszName, LPCTSTR lpszPath=NULL)
 [追加] マクロファイルの追加. [詳解]
 
 CTmlParser (void)
 コンストラクタ [詳解]
 
void DecMacroLevel (void)
 [設定] マクロレベル−1. [詳解]
 
void Empty (void)
 [設定] クリア. [詳解]
 
CTmlResult ExecFunction (CTmlValue &_answer, LPCSTR lpszFuncName)
 [処理] 指定関数の実行. [詳解]
 
CTmlResult ExecFunction (CTmlValue &_answer, LPCSTR lpszFuncName, const CTmlValuesVector &aValues)
 [処理] 指定関数の実行. [詳解]
 
CTmlResult ExecMacro (CTmlGrammar &_gram, CTmlValue &_answer)
 [処理] マクロ実行. [詳解]
 
bool ExistFunction (LPCSTR lpszFuncName) const
 [確認] 指定関数の有無チェック. [詳解]
 
void IncMacroLevel (void)
 [設定] マクロレベル+1. [詳解]
 
bool IsTestMode (void) const
 [取得] テストモード状態取得 [詳解]
 
void SetExpander (ITmlExpander *piExpander=NULL)
 [設定] 拡張関数のインターフェイス設定. [詳解]
 
void SetListener (IListener *piListener=NULL)
 [設定] リスナー用インターフェイス設定. [詳解]
 
void SetLogLevel (ELogLevel eLevel)
 [設定] ログレベル、設定. [詳解]
 
void SetTestMode (bool boIsTestMode)
 [設定] テストモード設定/解除. [詳解]
 
 ~CTmlParser (void)
 デストラクタ [詳解]
 

詳解

TinyMacroLang パーサー

必要ファイル
TnbTmlParser.h
日付
06/01/01 新規作成
09/08/18 改新

TnbTmlParser.h48 行目に定義があります。

列挙型メンバ詳解

◆ ELogLevel

enum ELogLevel

LOG表示レベル.

参照
SetLogLevel
列挙値
ELL_ABSOLUTE 

絶対

ELL_FUNC 

関数/命令

ELL_BRANCH 

分岐

ELL_DETAILS 

詳細

TnbTmlParser.h91 行目に定義があります。

◆ EOperation

enum EOperation
inherited

オペレーションコード

列挙値
Operation_Non 

未定義

Operation_Text 

文字列処理中

Operation_Text_Esc 

文字列 ¥? 処理中

Operation_Text_EscHex 

文字列 ¥x 処理中

Operation_Calc 

計算処理中

Operation_CheckFunc 

関数チェック中

Operation_CheckStatement 

ステートメントチェック中

Operation_FindingFunc 

関数検索中

Operation_FileAccess 

Fileアクセス中

TnbTmlResult.h71 行目に定義があります。

◆ EResult

enum EResult
inherited

リザルトコード

列挙値
Result_Success 

成功

Result_Nop 

処理なし

Result_UnknownError 

その他のエラー

Result_InvalidEscSeq 

エスケープシーケンスが異常

Result_InvalidHexNotation 

HEX表記が異常

Result_NotFoundParentheses 

括弧が必要なところにない

Result_NotCloseParentheses 

括弧が閉じていない

Result_InvalidParenthesesPosition 

括弧の位置がおかしい

Result_UnfinishedExpression 

計算式が途中で終わっている

Result_ZeroDivide 

0で割ろうとしてます

Result_UnknownKeyword 

知らないキーワード

Result_InvalidWordPosition 

単語位置が異常です(そこには存在しないはず)

Result_NotName 

名前がありません

Result_AlreadyExistName 

既にある名前です

Result_UnnecessaryParam 

引数は不必要です

Result_ManyParam 

引数が多すぎます

Result_NotenoughParam 

引数が足りません

Result_OutOfRange 

範囲外

Result_InvalidMacroContentsLevel 

マクロコンテンツレベルが異常です

Result_OpenFailure 

Open失敗

Result_ReadFailure 

Read失敗

Result_SendFailure 

Send失敗

Result_InvalidState 

状態エラー(今、実行できません)

Result_NotFoundFunction 

必要な関数がありません

Result_UserInterruption 

ユーザによる中断

Result_ProgramableInterruption 

プログラムによる中断

TnbTmlResult.h86 行目に定義があります。

◆ EScene

enum EScene
inherited

シーンコード

列挙値
Scene_Non 

未定義

Scene_Val 

val文処理中

Scene_Array 

array文処理中

Scene_Func 

func文処理中

Scene_If 

if文処理中

Scene_Else 

else文処理中

Scene_Switch 

switch文処理中

Scene_Case 

case文処理中

Scene_Default 

default文処理中

Scene_While 

while文処理中

Scene_Break 

break文処理中

Scene_Return 

return文処理中

Scene_Include 

include文処理中

Scene_End 

end文処理中

TnbTmlResult.h52 行目に定義があります。

構築子と解体子

◆ CTmlParser()

CTmlParser ( void  )

コンストラクタ

TnbTmlParser.h104 行目に定義があります。

◆ ~CTmlParser()

~CTmlParser ( void  )

デストラクタ

TnbTmlParser.h112 行目に定義があります。

関数詳解

◆ AddMacroContents()

CTmlResult AddMacroContents ( LPCTSTR  lpszName,
LPCSTR  lpszData 
)

[追加] マクロコンテンツの追加.

変数レベルと、コンテンツレベルは、変更せず使用されます。

引数
lpszNameファイル名(登録用)
lpszDataコンテンツ内容
戻り値
結果。

TnbTmlParser.h224 行目に定義があります。

◆ AddMacroFile()

CTmlResult AddMacroFile ( LPCTSTR  lpszName,
LPCTSTR  lpszPath = NULL 
)

[追加] マクロファイルの追加.

変数レベルと、コンテンツレベルは、変更せず使用されます。

引数
lpszNameファイル名
lpszPathパス名(省略なら、プロセスパスからの相対になります)
戻り値
結果。

TnbTmlParser.h188 行目に定義があります。

◆ DecMacroLevel()

void DecMacroLevel ( void  )

[設定] マクロレベル−1.

AddMacro〜()で追加するレベルを指定します。マクロ追加の前に+1しておくと、 Decするだけで、追加されたマクロを破棄することができます。 マクロ実行中には実行しないでください。

TnbTmlParser.h268 行目に定義があります。

◆ Empty()

void Empty ( void  )

[設定] クリア.

持しているコンテンツ、変数内容をクリアし、レベルを1にします。

TnbTmlParser.h142 行目に定義があります。

◆ ExecFunction() [1/2]

CTmlResult ExecFunction ( CTmlValue _answer,
LPCSTR  lpszFuncName 
)

[処理] 指定関数の実行.

テキスト位置情報を退避して実行し、終了後元に戻しています。

引数
[out]_answer結果の値。
lpszFuncName関数名
戻り値
結果

TnbTmlParser.h295 行目に定義があります。

◆ ExecFunction() [2/2]

CTmlResult ExecFunction ( CTmlValue _answer,
LPCSTR  lpszFuncName,
const CTmlValuesVector aValues 
)

[処理] 指定関数の実行.

テキスト位置情報を退避して実行し、終了後元に戻しています。

引数
[out]_answer結果の値。
lpszFuncName関数名
aValues引数
戻り値
結果

TnbTmlParser.h309 行目に定義があります。

◆ ExecMacro()

CTmlResult ExecMacro ( CTmlGrammar _gram,
CTmlValue _answer 
)

[処理] マクロ実行.

文解析&実行。 ブロック終了文字か NIL文字まで処理します。

引数
[out]_answer結果の値。
[in,out]_gramマクロ情報。
戻り値
動いた文字数 マイナスならエラー(ETmCTmlResult)

TnbTmlParser.h380 行目に定義があります。

◆ ExistFunction()

bool ExistFunction ( LPCSTR  lpszFuncName) const

[確認] 指定関数の有無チェック.

指定の関数が登録されているか。

引数
lpszFuncName検索する関数名
戻り値
true指定の関数がある。
false無い。

TnbTmlParser.h281 行目に定義があります。

◆ IncMacroLevel()

void IncMacroLevel ( void  )

[設定] マクロレベル+1.

AddMacro〜()で追加するレベルを指定します。マクロ追加の前に+1しておくと、 Decするだけで、追加されたマクロを破棄することができます。 マクロ実行中には実行しないでください。

TnbTmlParser.h256 行目に定義があります。

◆ IsTestMode()

bool IsTestMode ( void  ) const

[取得] テストモード状態取得

戻り値
trueテストモード中。
false通常。

TnbTmlParser.h133 行目に定義があります。

◆ SetExpander()

void SetExpander ( ITmlExpander piExpander = NULL)

[設定] 拡張関数のインターフェイス設定.

引数
piExpander拡張オブジェクトの参照。省略すると解除になります。

TnbTmlParser.h167 行目に定義があります。

◆ SetListener()

void SetListener ( IListener piListener = NULL)

[設定] リスナー用インターフェイス設定.

引数
piListenerリスナーの参照。省略すると解除になります。

TnbTmlParser.h158 行目に定義があります。

◆ SetLogLevel()

void SetLogLevel ( ELogLevel  eLevel)

[設定] ログレベル、設定.

引数
eLevelレベル。

TnbTmlParser.h176 行目に定義があります。

◆ SetTestMode()

void SetTestMode ( bool  boIsTestMode)

[設定] テストモード設定/解除.

覚え書き
テストモード=文法チェックモードです。このモードで実行すると、 全ステートメントがtrueとして実行されます。つまり、全条件を、 実行し、文法のチェックが行えます。
引数
boIsTestModetrueならテストモード。

TnbTmlParser.h123 行目に定義があります。