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

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

?? main.cpp

?? parser in C++~~~~~~~~~~~~
?? CPP
字號:
/**
 * \file main.cpp
 *
 * Driver code implementing the main read-parse-eval-print loop.
 * Supports both (1) an interactive mode, and (2) a batch mode where
 * input expressions are read from the file specified by the first
 * command-line argument.
 */

#include "parse.hpp"
#include "eval.hpp"
#include <sstream>

using namespace std;

/**
 * \brief Parse and evaluate the s-expression, and print the result.
 * \param sexpr The string vaule holding the s-expression.
 */
void parse_eval_print(string sexpr)
{
  Cell* root = parse(sexpr);
  Cell* result = eval(root);
  if ( result == nil ) {
    cout << "()" << endl;
  } else {
    cout << *result << endl;
  }
  delete result;
}

/**
 * \brief Read single single symbol into the end of a string buffer.
 * \param fin The input file stream.
 * \param str The string buffer.
 */
void readsinglesymbol(ifstream& fin, string& str)
{
  char currentchar;
  fin.get(currentchar);
  if (fin.eof()) {
    return;
  }
  if (currentchar == '\"') {
    // read a string literal
    do {
      str += currentchar;
      fin.get(currentchar);
    } while (currentchar != '\"');
    str += currentchar;
  } else {
    do {
      str += currentchar;
      fin.get(currentchar);
    } while ((false == iswhitespace(currentchar)) 
	     && ('(' != currentchar) 
	     && (false == fin.eof()));
    fin.putback(currentchar);  
  }
}

/**
 * \brief Read, parse, evaluate, and print the expression one by one from
 * the input stream.
 *
 * \param fin The input file stream.
 */
void readfile(ifstream& fin)
{
  string sexp;
  bool isstartsexp = false;
  int inumleftparenthesis = 0;

  // check whether to read the end
  while (!fin.eof()) {
    // read char by char
    char currentchar;
    fin.get(currentchar);
    if (fin.eof()) {
      break;
    }

    // skip some white space before new s-expression occurs
    if ((true == iswhitespace(currentchar))&&(false == isstartsexp)) {
      continue;
    }
    // run across a new s-expression
    if ((false == isstartsexp)&&(false == iswhitespace(currentchar))) {
      // check whether single symbol
      if ('(' != currentchar)	{
	// read a single symbol
	fin.putback(currentchar);
	readsinglesymbol(fin, sexp);
	// call function
	parse_eval_print(sexp);
	sexp.clear();
      }	else {
	// start new expression
	isstartsexp = true;
	// read left parenthesis
	sexp += currentchar;
	inumleftparenthesis = 1;
      }
    } else {
      // in the process of reading the current s-expression
      if (true == isstartsexp) {
	if (true == iswhitespace(currentchar)) {
	  // append a blankspace
	  //sexp += ' ';
	  sexp += currentchar;
	} else {
	  // append current character
	  sexp += currentchar;
	  // count left parenthesis
	  if ('(' == currentchar) {
	    inumleftparenthesis ++;
	  }
	  if (')' == currentchar) {
	    inumleftparenthesis --;
	    // check whether current s-expression ends
	    if (0 == inumleftparenthesis) {
	      // current s-expression ends
	      isstartsexp  =  false;
	      // call functions
	      parse_eval_print(sexp);
	      sexp.clear();
	    }
	  }
	}
      }
    }
  }
}

/**
 * \brief Read the expressions from the file.
 * \param fn The file name.
 */
void readfile(char* fn)
{
  ifstream fin(fn);
  readfile(fin);
  fin.close();
}

/**
 * \brief Read, parse, evaluate, and print the expression one by one from
 * the standard input, interactively.
 */
void readconsole()
{
  string sexpr;
  // read the input
  do {
    cout << "> ";
    getline(cin, sexpr);
    if (cin.eof()) {
      break;
    }
    if ("(exit)" == sexpr) {
      return;
    }
    parse_eval_print(sexpr);
  } while (true);
}

/**
 * \brief Call either the batch or interactive main drivers.
 */
int main(int argc, char* argv[])
{
  switch(argc) {
  case 1:
    // read from the standard input
    readconsole();
    exit(0);
    break;
  case 2:
    // read from a file
    readfile(argv[1]);
    break;
  default:
    cout << "too many arguments!" << endl;
    exit(0);
  }
  return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日日夜夜精品免费视频| 国产日产欧美一区| 久久伊人中文字幕| 亚洲免费观看在线观看| 水野朝阳av一区二区三区| 久久电影国产免费久久电影| www.亚洲色图| 8x福利精品第一导航| 欧美日韩国产综合视频在线观看| 精品国产免费人成在线观看| 亚洲欧美一区二区在线观看| 免费观看一级特黄欧美大片| 波多野结衣一区二区三区| 在线播放日韩导航| 国产精品素人视频| 免费看日韩a级影片| 在线观看亚洲精品视频| 欧美精品久久99久久在免费线| 久久久久久久久久久黄色| 中日韩av电影| 麻豆久久久久久| 欧美自拍偷拍午夜视频| 中文字幕欧美日本乱码一线二线| 美女视频黄频大全不卡视频在线播放| 岛国精品一区二区| 欧美不卡在线视频| 午夜在线成人av| 色综合久久久网| 中文乱码免费一区二区| 国产一区二区三区美女| 日韩视频免费观看高清完整版在线观看| 国产精品欧美经典| 国产乱码精品一品二品| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品国产成人国产三级 | 久久久久九九视频| 亚洲成人7777| 91丝袜呻吟高潮美腿白嫩在线观看| 日韩精品一区二区三区在线播放| 亚洲国产va精品久久久不卡综合| 色哟哟在线观看一区二区三区| 国产精品免费久久| 成人免费福利片| 国产亚洲精品bt天堂精选| 免费不卡在线观看| 欧美大肚乱孕交hd孕妇| 日本不卡中文字幕| 欧美一区二区三区成人| 午夜a成v人精品| 91精品久久久久久久91蜜桃| 午夜精品久久久久久不卡8050| 欧美亚洲一区三区| 亚洲一区免费视频| 欧美日韩国产123区| 偷拍一区二区三区四区| 69堂成人精品免费视频| 午夜亚洲国产au精品一区二区| 欧美三级资源在线| 亚洲v中文字幕| 日韩视频在线一区二区| 男人的j进女人的j一区| 欧美一区二区三区啪啪| 久久激五月天综合精品| 久久色中文字幕| 国产91精品入口| 亚洲美女偷拍久久| 欧美日韩亚洲丝袜制服| 美女www一区二区| 国产精品久久久爽爽爽麻豆色哟哟| 激情另类小说区图片区视频区| 久久久无码精品亚洲日韩按摩| 成人黄色小视频| 亚洲成av人在线观看| 欧美片在线播放| 国产成人在线电影| 一区二区三区在线观看动漫| 日韩一区二区电影在线| 国产一区二区视频在线| 亚洲同性gay激情无套| 欧美日韩高清一区二区三区| 极品少妇xxxx精品少妇偷拍| 日韩一区在线免费观看| 日韩欧美不卡在线观看视频| 91社区在线播放| 国产一区中文字幕| 首页欧美精品中文字幕| 国产精品免费av| 欧美一区二区三区系列电影| 99在线视频精品| 免费观看一级欧美片| 国产亚洲人成网站| 91 com成人网| 在线观看视频一区二区欧美日韩| 麻豆精品蜜桃视频网站| 一区二区三区欧美亚洲| 正在播放一区二区| 99视频精品全部免费在线| 久久99精品国产91久久来源| 一区二区三区中文在线| 亚洲色图欧美激情| 国产精品福利一区二区三区| 欧美激情综合在线| 久久影院午夜论| 久久久亚洲精品一区二区三区| 日韩欧美在线网站| 欧美大度的电影原声| 日韩欧美成人一区| 欧美一二三四在线| 日韩欧美专区在线| 日韩免费一区二区| 日韩精品在线一区| 精品区一区二区| 精品日产卡一卡二卡麻豆| 欧美v亚洲v综合ⅴ国产v| 日韩免费福利电影在线观看| 欧美一级xxx| 久久影院午夜论| 欧美激情一区不卡| 亚洲欧洲www| 亚洲精品视频免费看| 一区二区三区不卡视频在线观看 | 丝袜美腿一区二区三区| 亚洲成av人片在www色猫咪| 亚洲成人免费观看| 日本三级韩国三级欧美三级| 蜜桃视频在线观看一区| 国产一区二区视频在线| 成人美女在线观看| 色8久久精品久久久久久蜜| 欧美性大战久久久久久久蜜臀| 欧美日韩精品久久久| 91精品福利在线一区二区三区 | 成人激情黄色小说| 欧美性感一区二区三区| 日韩一区二区中文字幕| 国产亚洲综合性久久久影院| 国产精品黄色在线观看| 一卡二卡三卡日韩欧美| 免费在线成人网| 懂色av一区二区在线播放| 一本色道久久综合精品竹菊| 欧美精品久久久久久久多人混战| 精品国产一区二区三区忘忧草| 国产精品区一区二区三| 亚洲午夜激情av| 国产一区二区三区在线观看精品| eeuss国产一区二区三区| 欧美性猛交xxxxxxxx| xnxx国产精品| 亚洲最快最全在线视频| 韩国成人精品a∨在线观看| av亚洲精华国产精华精华| 在线综合亚洲欧美在线视频 | 欧美大度的电影原声| 国产精品国产三级国产普通话三级| 一区二区三区视频在线看| 久久99蜜桃精品| 91亚洲精品乱码久久久久久蜜桃| 日韩一区二区免费在线观看| 亚洲视频每日更新| 狠狠v欧美v日韩v亚洲ⅴ| 欧美丝袜丝nylons| 国产欧美日韩精品一区| 日韩av不卡一区二区| av一区二区不卡| 久久免费电影网| 日韩不卡一区二区| 色88888久久久久久影院按摩| 久久一区二区三区四区| 午夜电影网一区| 91年精品国产| 亚洲国产精品av| 美女脱光内衣内裤视频久久网站| 欧洲生活片亚洲生活在线观看| 国产亚洲精品超碰| 久久国产生活片100| 欧美日韩亚洲综合一区| 一区二区在线看| eeuss鲁片一区二区三区| 久久午夜免费电影| 九九九久久久精品| 欧美一区二区三区视频在线| 亚洲一区二区五区| 91在线无精精品入口| 国产精品美女久久久久久久久 | 色综合天天综合网天天狠天天| 久久久久久久久久电影| 韩国视频一区二区| 欧美一级片在线| 免费成人av在线| 欧美一区二区三区四区久久| 日韩国产高清在线| 91精品久久久久久久91蜜桃| 亚洲va韩国va欧美va精品| 欧美亚洲综合色| 一区二区三区国产| 欧美色老头old∨ideo| 亚洲福利一区二区三区| 欧美酷刑日本凌虐凌虐| 日韩激情一二三区|