cppにLuaを組み込んで下記、エラーで困っています。
教本「スクリプト言語によるゲーム開発」を参照しながら、下記コードを記述したのですが、
下記エラーが出て、困っています。

アドバイスの程、よろしくお願いいたします。

#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>

int GetSelection(const char *title){

    char input[100];

    printf("%s >",title);

    fgets(input, sizeof(input), stdin);
    printf("\n");

    if(strlen(input)==0 || !isdigit(input[0])){
        return -1;
    }
        return atoi(input);
}

struct SItemInfo{
    char name[100];
    int  price;
};

typedef struct SItemInfo ItemInfo;

#define MAX_SHOP_ITEMS 5

ItemInfo shop_items[MAX_SHOP_ITEMS] = {
    {"薬草",100},
    {"こん棒",1000},
    {"布の服",2000},
    {"",-1},
    {"",-1},
};

const char* GetItemName( int index){
    if(( index < 0 ) || (index>= MAX_SHOP_ITEMS)){
        return NULL;
    }
        return shop_items[index].name;
};

const int GetItemPrice( int index){
    if(( index < 0 ) || (index>= MAX_SHOP_ITEMS)){
        return -1;
}
        return shop_items[index].price;
};


void PrintStackItem(lua_State *L, int idx){
    int type = lua_type(L,idx);
    switch(type){
    case LUA_TSTRING:
    //
    printf("index %2d : type=%s : %s \n",idx,                               lua_typename(L,type),lua_tostring(L,idx));
    break;
    case LUA_TNUMBER:
//
 printf("index %2d : type=%s : %f\n",idx,           lua_typename(L,type),lua_tonumber(L,idx));
     break;
    case LUA_TBOOLEAN:
//          
    printf("index %2d : type=%s : %s \n",idx,     lua_typename(L,type),lua_toboolean(L,idx) ? "true" :"false");
    break;
    defalut:
    printf("index %2d : type=%s \n",idx, lua_typename(L,type));
    break;
    }
 }          

 void PrintStack(lua_State *L){

    printf("----- stack -------\n");
    int top = lua_gettop(L);
    //
    for(int i=top; i>=1; i--){
        PrintStackItem(L,i);
    }
    printf("----- ----- -------\n");
    //
    for(int i=-1; i>=-top; i--){
        PrintStackItem(L,i);
    }
    printf("----- ----- -------\n");

 }

     int GetItemNameGlue(lua_State *L){
  //    printf("GetItemName() 関数実行\n");
     //スタックを表示
     //PrintStack(L);
     //
    int index = (int)lua_tonumber(L,1);
    //
    const char *name =GetItemName(index);
    //
    lua_settop(L, 0);
    //
    lua_pushstring(L, name);
    //
    //PrintStack(L);

    return 1;

 }

 int GetItemPriceGlue(lua_State *L){
 // printf("GetItemName() 関数実行\n");
    //スタックを表示
 // PrintStack(L);
     //
     int index = (int)lua_tonumber(L,1);
     //
     int price =GetItemPrice(index);
     //
     lua_settop(L, 0);
    //
    lua_pushnumber(L, price);
     //
 // PrintStack(L);

     return 1;
 }

 int s_money = 0;

 int GetSelectionGlue(lua_State *L){
     //
     const char *title = lua_tostring(L,1);
     //
     int index = GetSelection(title);
     //
     lua_settop(L, 0);
    //
    lua_pushnumber(L, index);

    return 1;
 }


 int GetMoney(){
      return s_money;
 }


 void SetMoney(int money){
     s_money = money;
 }

 int GetMoneyGlue(lua_State *L){
     //
    int money = GetMoney();
     //
     lua_settop(L,0);
     //
    lua_pushnumber(L,money);
    return 1;
 }

 int SetMoneyGlue(lua_State *L){
     //
     int index = (int)lua_tonumber(L,1);
     //
     SetMoney(index);
     //
     lua_settop(L,0);
     return 0;
 }




 int main(int argc, char* argv[]){
     //乱数初期化
    srand((unsigned int)time(NULL));
     for(int i=0; i<100; i++) rand();

    //LuaのVMを生成する。
    lua_State *L = lua_open();

     //LUaの標準ライブラリを開く
    luaL_openlibs(L);

     //
    lua_pushnumber(L, MAX_SHOP_ITEMS);
    lua_setglobal(L, "MAX_SHOP_ITEMS"   );
     //
    lua_register(L, "GetItemName", GetItemNameGlue); 
    lua_register(L, "GetItemPrice", GetItemPriceGlue); 
    lua_register(L, "GetSelection", GetSelectionGlue); 

    lua_register(L, "GetMoney", GetMoneyGlue); 
    lua_register(L, "SetMoney", SetMoneyGlue); 




    //所持金決定
 // s_money = (rand()*10000 / RAND_MAX) + 500;
     s_money = 1500;

 //debug.tracebreack関数の実装へのポインタ
 lua_CFunction stack_trace_func = NULL;

 //debug.tracebreackの実装であるC関数を取得する
 lua_getglobal(L,"debug");
 if(!lua_isnil(L,-1)){
     lua_getfield(L,-1,"traceback");
    stack_trace_func = lua_tocfunction(L,-1);
    lua_pop(L,1);
 }
     lua_pop(L,1);

 //スタックのサイズを覚えておく

    int top = lua_gettop(L);
 // int ret1 = luaL_dofile(L,"douguya3.lua");   
    int ret1 = luaL_loadfile(L,"douguya3.lua"); 



 //エラー処理関数を積み、その上にグローバル関数shopを積む
     lua_pushcfunction(L,stack_trace_func);
     lua_getglobal(L,"Shop");
     ret1 = lua_pcall(L,0,0,-2);
    if(ret1!=0){
        //実行時エラー
         printf("error: %s\n", lua_tostring(L,-1));
         //スタックを戻す
        lua_settop(L,top);
        printf("<エンターキーを押すとスクリプトを読み直します。>\n");
        getchar();
        //douguya.luaをロードし直す    
        load_script(L);
 //     ret1=load_script(name='douguya3.lua',path='./');
     }
    else{
        //スタックを戻す
         lua_settop(L,top);
         break;
     }

    if(s_money<0){
        s_money=s_money*-1;
    }

    lua_close(L);

    return 0;

 }

エラー:test2_1.cpp: In function ‘int main(int, char**)’:
test2_1.cpp:247:16: error: ‘load_script’ was not declared in this scope
load_script(L);
^
test2_1.cpp:253:3: error: break statement not within loop or switch
break;
^