#include "NewtType.h"
#include "NewtParser.h"
マクロ定義 | |
| #define | kNBCFieldMask 0x07 |
| バイトコードフィールドのマスク | |
| #define | kNBCInstructionsLen 26 |
| 命令セットテーブルの長さ | |
| #define | kNBCSimpleInstructionsLen 8 |
| シンプル命令セットテーブルの長さ | |
| #define | kBCFuncsLen 25 |
| 関数テーブルの長さ | |
列挙型 | |
| enum | { kNBCPop = 000, kNBCDup = 001, kNBCReturn = 002, kNBCPushSelf = 003, kNBCSetLexScope = 004, kNBCIterNext = 005, kNBCIterDone = 006, kNBCPopHandlers = 007 } |
| enum | { kNBCPush = 0030, kNBCPushConstant = 0040, kNBCCall = 0050, kNBCInvoke = 0060, kNBCSend = 0070, kNBCSendIfDefined = 0100, kNBCResend = 0110, kNBCResendIfDefined = 0120, kNBCBranch = 0130, kNBCBranchIfTrue = 0140, kNBCBranchIfFalse = 0150, kNBCFindVar = 0160, kNBCGetVar = 0170, kNBCMakeFrame = 0200, kNBCMakeArray = 0210, kNBCGetPath = 0220, kNBCSetPath = 0230, kNBCSetVar = 0240, kNBCFindAndSetVar = 0250, kNBCIncrVar = 0260, kNBCBranchIfLoopNotDone = 0270, kNBCFreqFunc = 0300, kNBCNewHandlers = 0310 } |
| enum | { kNBCAdd = 0, kNBCSubtract = 1, kNBCAref = 2, kNBCSetAref = 3, kNBCEquals = 4, kNBCNot = 5, kNBCNotEqual = 6, kNBCMultiply = 7, kNBCDivide = 8, kNBCDiv = 9, kNBCLessThan = 10, kNBCGreaterThan = 11, kNBCGreaterOrEqual = 12, kNBCLessOrEqual = 13, kNBCBitAnd = 14, kNBCBitOr = 15, kNBCBitNot = 16, kNBCNewIterator = 17, kNBCLength = 18, kNBCClone = 19, kNBCSetClass = 20, kNBCAddArraySlot = 21, kNBCStringer = 22, kNBCHasPath = 23, kNBCClassOf = 24 } |
関数 | |
| newtRef | NBCGenBC (nps_syntax_node_t *stree, uint32_t size, bool ret) |
| newtRef | NBCCompileFile (char *s, bool ret) |
| newtRef | NBCCompileStr (char *s, bool ret) |
| void | NBError (int32_t err) |
NewtBC.h で定義されています。
| newtRef NBCCompileFile | ( | char * | s, | |
| bool | ret | |||
| ) |
ソースファイルをコンパイル
| s | [in] ソースファイルのパス | |
| ret | [in] 戻り値の有無 |
参照先 kNewtRefUnbind・NBCGenBC()・NPSCleanup()・NPSParseFile().
参照元 NsCompileFile().
関数の呼び出しグラフ:

| newtRef NBCCompileStr | ( | char * | s, | |
| bool | ret | |||
| ) |
文字列をコンパイル
| s | [in] スクリプト文字列 | |
| ret | [in] 戻り値の有無 |
参照先 kNewtRefNIL・kNewtRefUnbind・NBCGenBC()・NewtThrow()・NPSCleanup()・NPSParseStr().
参照元 NsCompile().
関数の呼び出しグラフ:

| newtRef NBCGenBC | ( | nps_syntax_node_t * | stree, | |
| uint32_t | size, | |||
| bool | ret | |||
| ) |
バイトコードの生成
| stree | [in] 構文木 | |
| size | [in] 構文木の長さ | |
| ret | [in] 戻り値の有無 |
参照先 NBCCleanup()・NBCEnvNew()・NBCFnDone()・NBCGenBC_sub()・NBCInit()・newt_bc_env・NEWT_DUMPBC・NewtFprintf()・NewtPackLiteral()・NewtRefIsNotNIL・NVMDumpFn().
参照元 NBCCompileFile()・NBCCompileStr()・NVMInterpret2().
関数の呼び出しグラフ:

| void NBError | ( | int32_t | err | ) |
エラーメッセージの表示
| err | [in] エラーコード |
参照先 kNErrAssignToConstant・kNErrSyntaxError・kNErrWrongNumberOfArgs・NewtFprintf().
参照元 NBCGenAsign()・NBCGenCallFn()・NBCGenConstant()・NBCGenExists()・NBCGenGlobalVar()・NBCGenLocalVar()・NBCMakeFnArgFrame()・NBCTypeValid().
関数の呼び出しグラフ:

1.5.0