写词法分析词:词法分析器找不到"

时间:2017-06-28 09:36:00

标签: c++ lexer

我正在编写一种只有一个关键字write的小编程语言。我还没有做过解析器而是lexer。它工作正常,直到达到"令牌。

main.cpp中:

#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <vector>
using namespace std;

int main(int argc, char* argv[2])
{
    char text;
    string tok = "";
    string str = "";
    vector <string> tokens;

    fstream inFile(argv[1]);

    while (inFile >> noskipws >> text)
    {
        tok += text;

        if (tok == "write")
        {
            tokens.push_back(tok);
            tok = "";
        }
        else if(tok == "\"")
        {
            str += text;
            tokens.push_back("String:"+str);
            str = "";
            tok = "";
            tok += text;
            }

        for (auto const& c : tokens)
            std::cout << c << ' ';
    }

    return 0;
}

的test.txt:

write "hello"

输出是:

write write write write write write write ...

而不是,

String:hello

我该怎么办?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为它应该是$.fn.myFunction = function (splitId) { var finalurl= "http://localhost/Games/Random/Resources/" + splitId; console.log('called', finalurl); $('#shore-5').css("background-image", 'url(' + finalurl+ ')'); } $(function () { $(this).myFunction('ship.JPG'); }()); 而不是skipws,因为当遇到&#34;写&#34;之间的空格时,你不会处理这种情况。和&#34;你好&#34 ;;特别是你不清除noskipws,所以下一个循环仍然认为令牌是一个空格。