亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? compiler.h

?? c-smile 一個語法類似與JS 又有點像C++的 編譯器
?? H
字號:
/*
*
* compiler.h
*
* Copyright (c) 2001, 2002
* Andrew Fedoniouk - andrew@terra-informatica.org
* Portions: Serge Kuznetsov - kuznetsov@deeptown.org
*
* See the file "COPYING" for information on usage 
* and redistribution of this file
*
*/

#include "vm.h"
#include "tool.h"
#include "scanner.h"
#include "sym_table.h"

namespace c_smile
{
  /* limits */
#define CMAX		32767	/* code buffer size */

  /* token definitions */
#define T_NOTOKEN     -1
#define T_EOF         0

  /* non-character tokens */
#define _TMIN         256
#define T_STRING      256
#define T_IDENTIFIER  257
#define T_NUMBER	    258
#define T_CLASS	      259
#define T_STATIC	    260
#define T_IF		      261
#define T_ELSE	      262
#define T_WHILE		    263
#define T_RETURN	    264
#define T_FOR	        265
#define T_BREAK		    266
#define T_CONTINUE	  267
#define T_DO		      268
#define T_NEW	        269
#define T_NULL		    270
#define T_LE		      271	/* '< = ' */
#define T_EQ      	  272	/* '= = ' */
#define T_NE      	  273	/* '! = ' */
#define T_GE      	  274	/* '> = ' */
#define T_SHL	        275	/* '<<' */
#define T_SHR         276	/* '>>' */
#define T_AND         277	/* '&&' */
#define T_OR          278	/* '||' */
#define T_INC         279	/* '++' */
#define T_DEC         280	/* '--' */
#define T_ADDEQ       281	/* '+ = ' */
#define T_SUBEQ       282	/* '- = ' */
#define T_MULEQ       283	/* '* = ' */
#define T_DIVEQ       284	/* '/ = ' */
#define T_REMEQ       285	/* '% = ' */
#define T_ANDEQ       286	/* '& = ' */
#define T_OREQ        287	/* '| = ' */
#define T_XOREQ       288	/* '^ = ' */
#define T_SHLEQ       289	/* '<< = ' */
#define T_SHREQ       290	/* '>> = ' */
#define T_CC          291	/* '::' */
#define T_MEMREF      292	/* '.' */
#define T_VAR         293
#define T_FUNCTION    294
#define T_PACKAGE     295
#define T_TRY         296
#define T_CATCH       297
#define T_THROW       298
#define T_PROPERTY    299
#define T_IMPORT      300
#define T_INSTANCEOF  301
#define T_UNDEFINED   302
#define T_ARGUMENT    303
#define T_ARGUMENTS   304
#define T_SWITCH      305
#define T_CASE        306
#define T_DEFAULT     307
#define T_MAKEREF     308
#define T_SYNCHRO     309
#define T_CONST       310

#define _TMAX         310

  class compiler;
  // partial value structure

  // break/continue stacks size
#define SSIZE	10

  class VM;

  class name_space
  {
    friend class compiler;
    sym_table     symbols;
    name_space *  parent;
    size_t        offset;
  public:

    name_space ( name_space *p = 0 ) : parent ( p ),  offset ( 0 ) 
    {
      offset = get_offset ();
    }

    ~name_space () 
    {
    }

    symbol_t
      find ( const char * name ) 
    {
      symbol_t sym;
      if ( symbols.find ( name, sym ) ) 
      {
        if ( parent ) 
          return offset + sym;
        else
          return sym;
      }
      if ( parent ) 
        return parent->find ( name );
      return undefined_symbol;
    }

    symbol_t
      add ( const char*name ) 
    {
      if ( symbols.exists ( name ) ) 
      {
        return undefined_symbol;
      }
      // error:already defined
      symbol_t t = symbols [ name ];

      if ( parent )
        return set_total ( offset + t );
      return set_total ( t );
    }

    size_t
      set_total ( size_t t ) 
    {
      if ( parent )
        parent->set_total ( t );
      // root
      else
      {
        size_t tt = t+1;
        if ( tt > offset )
          offset = tt;
      }
      return t;
    }

    size_t
      get_offset () 
    {
      if ( parent )
        return parent->get_offset () + parent->symbols.size ();
      else return 0;
    }

    size_t  get_total () 
    {
      if ( parent )
        return parent->get_total ();
      else
        return offset;
    }

    size_t
      size () 
    {
      return symbols.size ();
    }

    void
      clear () 
    {
      symbols.clear ();
      offset = 0;
    }

    const char *
      operator [] ( size_t idx ) 
    {
      return symbols [ idx ];
    }

  };

#ifdef COMPILER

  class compiler
  {
    friend class parse_error;

    // local variables

    CLASS         *methodclass;	// class of the current method
    unsigned char *cbuff;	 	    // code buffer
    int cptr;	 	 						    // code pointer

    name_space *  temporaries;  // namespace for locals
    sym_table     arguments;    // linear symtable for arguments

    PACKAGE *     package;      // current package
    string        file_name;
    string        dir_name;
    int           file_line;    // line number

    io_stream *   report_stream;

    // break/continue stacks
    int bstack [ SSIZE ];int *bsp;
    int cstack [ SSIZE ];int *csp;

    VALUE   temp;
    bool    inConstructor;

    scanner scan;


  public:

    struct PVAL;

    compiler ();

    ~compiler () 
    {
      //temporaries; // unwind temporaries stack please;
    }

    PACKAGE* compile ( io_stream *input ); //const char *fn,  int ( *getcf ) ( void * ),  void *getcd );
    void mark ();

  protected:
    void do_package ();
    void do_import ();
    void do_class ();
    ENTRY findmember ( CLASS *klass, const char *name );
    ENTRY rfindmember ( CLASS *klass, const char *name );
    void do_function ();
    void do_regular_function ( const char *name );
    void do_member_function ( CLASS *klass,  int type );
    void do_property_function ( CLASS *klass, int type );
    void do_member_data ( CLASS *klass, int type );

    CODE * do_code ( const char *name, CLASS *klass, int stype );

    PACKAGE *  get_package ( const char *name, bool reportError );
    CLASS *    get_class ( const char *name, PACKAGE *pkg = 0, bool reportError = false );
    CLASS *    get_class_or_package ( string& class_id, string& package_id );

    int  do_statement ();
    void do_if ();
    void do_switch ();
    int *addbreak ( int lbl );
    int  rembreak ( int *old, int lbl );
    int *addcontinue ( int lbl );
    void remcontinue ( int *old );
    void do_while ();
    void do_dowhile ();
    void do_for ();
    void do_break ();
    void do_continue ();
    int  do_block ( const char *parameter = 0 );
    void do_return ();
    void do_test ();
    void do_expr ();
    void do_vardecl ();
    void do_static_vardecl ( CLASS *klass,  bool constant );

    void do_try ();
    void do_throw ();

    void do_synchro ();

    void rvalue ( PVAL *pv );
    void chklvalue ( PVAL *pv );

    void do_assignment ( PVAL *pv, int op );

    void do_expr1 ( PVAL *pv );
    void do_expr2 ( PVAL *pv );
    void do_expr3 ( PVAL *pv );
    void do_expr4 ( PVAL *pv );
    void do_expr5 ( PVAL *pv );
    void do_expr6 ( PVAL *pv );
    void do_expr7 ( PVAL *pv );
    void do_expr8 ( PVAL *pv );
    void do_expr9 ( PVAL *pv );
    void do_expr10 ( PVAL *pv );
    void do_expr11 ( PVAL *pv );
    void do_expr12 ( PVAL *pv );
    void do_expr13 ( PVAL *pv );
    void do_expr14 ( PVAL *pv );
    void do_expr15 ( PVAL *pv );

    void do_preincrement ( PVAL *pv, int op );
    void do_postincrement ( PVAL *pv, int op );
    void do_new ( PVAL *pv );
    void do_primary ( PVAL *pv );
    void do_call ( PVAL *pv );

    void do_memref ( const char *selector, PVAL *pv );

    void do_index ( PVAL *pv );
    void do_lit_array ( PVAL *pv );
    void do_lit_map ( PVAL *pv );

    int	get_id_list ( sym_table &st, const char *term );

    int	 findarg ( const char *name );
    int	 findtmp ( const char *name );
    ENTRY finddatamember ( const char *name );

    void frequire ( int rtkn );
    void	require ( int tkn, int rtkn );
    void do_lit_number ( VALUE v );
    void do_lit_string ( const char *str );

    int	make_lit_string ( const char *str );
    int make_lit_symbol ( const char *str );
    int	make_lit_variable ( ENTRY e );
    void findvariable ( const char *id, PVAL *pv );
    int	findclassvariable ( CLASS *klass, const char *name, PVAL *pv );
    int	putcbyte ( int b );
    int	_putcbyte ( int b );
    int	putcword ( int w );
    void fixup ( int chn, int val );

    void report ( const char * format,  ... );

    // PVAL companions
    static void code_argument ( compiler *c,  int fcn, int n );
    static void code_temporary ( compiler *c,  int fcn, int n );
    static void code_member ( compiler *c,  int fcn, int n );
    static void code_variable ( compiler *c,  int fcn, int n );
    static void code_index ( compiler *c,  int fcn, int n );
    static void code_prop_member ( compiler *c, int fcn, int n );
    static void code_literal ( compiler *c,  int n );
    static void code_const ( compiler *c, int fcn, int n );

  public:
    struct PVAL
    {
      void ( *fcn ) ( compiler *comp, int, int );
      int  val;
      PVAL () :   fcn ( 0 ),  val ( 0 ) 
      {
      }
    };

  };
#endif

};

#include "opcodes.h"

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久午夜色播影院免费高清| 精品在线播放免费| 日本亚洲天堂网| 色综合久久中文字幕| 久久久久久久综合日本| 天堂一区二区在线免费观看| 91一区一区三区| 国产精品蜜臀av| 国产麻豆成人传媒免费观看| 91麻豆精品国产91久久久久| 亚洲欧洲日韩女同| 国产精品一二三在| 精品福利一二区| 久久成人免费电影| 欧美一区二区不卡视频| 性久久久久久久| 91传媒视频在线播放| 亚洲区小说区图片区qvod| 成人黄色av电影| 欧美国产在线观看| 国产成人综合亚洲网站| 欧美精品一区二区三区四区 | 欧美日韩视频在线观看一区二区三区| 日韩欧美的一区二区| 日本伊人色综合网| 欧美日本视频在线| 日韩精品电影在线| 91麻豆精品国产91久久久| 亚洲已满18点击进入久久| 91伊人久久大香线蕉| 亚洲男人的天堂一区二区| 91网站最新地址| 夜夜操天天操亚洲| 欧美精品日韩一本| 日产国产高清一区二区三区| 欧美精品第1页| 麻豆成人av在线| 精品国产污污免费网站入口| 精品一区二区国语对白| 久久天天做天天爱综合色| 国产伦精一区二区三区| 国产精品日日摸夜夜摸av| 99视频国产精品| 一区二区三区精品在线| 欧洲精品视频在线观看| 亚洲va欧美va国产va天堂影院| 欧美丝袜第三区| 日产欧产美韩系列久久99| 久久品道一品道久久精品| 国产aⅴ综合色| 亚洲图片激情小说| 欧美日韩在线播放三区| 久久国产综合精品| 亚洲欧洲精品一区二区三区| 色婷婷av一区二区三区之一色屋| 性做久久久久久| 欧美大片在线观看一区二区| 国产精品99久久久久| 亚洲视频 欧洲视频| 91精品国产色综合久久不卡蜜臀 | 日韩免费观看高清完整版在线观看| 日韩**一区毛片| 国产精品素人视频| 欧美浪妇xxxx高跟鞋交| 国产大陆a不卡| 偷拍日韩校园综合在线| 国产欧美一区二区三区网站 | 一区二区成人在线观看| 日韩欧美一区在线| 色综合色狠狠天天综合色| 卡一卡二国产精品 | 欧美日韩精品一区二区天天拍小说 | 国产精品国产三级国产三级人妇 | 日韩成人午夜电影| 欧美激情一区二区三区| 欧美精品v日韩精品v韩国精品v| 国产麻豆精品一区二区| 五月综合激情婷婷六月色窝| 国产喷白浆一区二区三区| 欧美日韩国产欧美日美国产精品| 丁香婷婷综合网| 日本色综合中文字幕| 伊人色综合久久天天人手人婷| 精品国产sm最大网站免费看| 欧美色区777第一页| av中文字幕不卡| 国产精品综合一区二区三区| 日韩精品久久久久久| 亚洲女人的天堂| 国产精品久线观看视频| 2021国产精品久久精品| 欧美精品在线一区二区三区| 91蜜桃网址入口| 国产99久久精品| 狠狠色丁香久久婷婷综合_中| 日韩影院精彩在线| 亚洲成人动漫av| 夜夜嗨av一区二区三区| 亚洲老司机在线| 亚洲乱码国产乱码精品精98午夜| 亚洲国产精品av| 国产日产欧美一区| 国产偷国产偷精品高清尤物| 亚洲精品一区二区三区香蕉| 日韩欧美国产不卡| 欧美一区二区三区四区久久| 欧美日韩一区二区三区四区五区 | 亚洲一区二区三区四区的| 亚洲手机成人高清视频| 中文字幕在线观看一区| 国产精品三级视频| 中文字幕巨乱亚洲| 国产精品久久久久久亚洲毛片 | 色婷婷激情综合| 色婷婷亚洲综合| 欧美综合一区二区| 在线视频一区二区三区| 欧美日韩1234| 欧美成人国产一区二区| 精品久久国产97色综合| 精品久久久久久久久久久院品网| 精品国产乱码久久久久久闺蜜| 久久网站最新地址| 久久久久亚洲蜜桃| 国产精品毛片久久久久久久| 国产精品传媒入口麻豆| 一区二区三区四区精品在线视频 | 亚洲精品国产品国语在线app| 亚洲激情自拍视频| 日韩精品福利网| 久久99精品久久久久久国产越南| 国精产品一区一区三区mba桃花| 国产xxx精品视频大全| 成人h动漫精品一区二| 欧美亚洲国产一区在线观看网站 | 欧美日韩dvd在线观看| 欧美一二区视频| 中文字幕国产一区| 亚洲一区成人在线| 狠狠狠色丁香婷婷综合久久五月| 波多野结衣的一区二区三区| 欧美日韩久久久| 久久精品在线免费观看| 一区二区三区免费看视频| 日本不卡在线视频| 成人激情免费网站| 欧美高清激情brazzers| 国产午夜精品一区二区三区四区| 亚洲男人天堂一区| 青青草国产精品97视觉盛宴| 粉嫩13p一区二区三区| 欧美日韩在线免费视频| 精品成人一区二区三区四区| 17c精品麻豆一区二区免费| 五月天亚洲精品| 成人av在线看| 精品国精品自拍自在线| 一区二区在线免费| 成人小视频在线| 日韩一区二区免费高清| 亚洲精品写真福利| 国产一区二区美女| 4hu四虎永久在线影院成人| 自拍偷在线精品自拍偷无码专区| 久久精品国产99国产精品| 色88888久久久久久影院野外| 日韩免费一区二区三区在线播放| 亚洲精品免费视频| 成人激情电影免费在线观看| 欧美一区二区视频在线观看| 亚洲男人的天堂av| 成人福利视频网站| 2022国产精品视频| 免费看日韩精品| 欧美视频你懂的| 一区二区三区四区不卡视频| 国产盗摄一区二区| 精品成人免费观看| 日产国产欧美视频一区精品| 欧美亚洲动漫制服丝袜| 国产精品乱人伦| 懂色av中文字幕一区二区三区| 日韩精品专区在线影院观看| 性久久久久久久| 欧美日韩在线综合| 亚洲一区日韩精品中文字幕| 91丨porny丨蝌蚪视频| 国产日韩欧美综合在线| 国产精品99精品久久免费| 26uuu国产电影一区二区| 美腿丝袜一区二区三区| 在线成人小视频| 日本最新不卡在线| 欧美大肚乱孕交hd孕妇| 精品一区二区三区在线播放 | 成人一级片在线观看| 国产日韩欧美激情| 成人一区二区三区中文字幕| 欧美激情中文不卡| 99国产精品久久久|