gpt4 book ai didi

token - boost::spirit::lex,如何生成文件结束标记?

转载 作者:行者123 更新时间:2023-12-01 11:42:20 25 4
gpt4 key购买 nike

问题很简单,我已经使用 boost::spirit 编写了一个词法分析器,但是我似乎找不到生成 EOF 标记的方法。 - 那么如何去做呢?

最佳答案

什么是 EOF token ?

Historically, some platforms have associated special 'EOF' (ascii 26, e.g.) characters with text files. Like the use of 0x15 as newline character, such uses are now largely defunct. The end of a file is better defined as the absense of further input, in other words: it is a stream state, not a character.

token 迭代器 Spirit Lex 通过返回结束迭代器发出“EOF”信号。

分词器 API (lex::tokenize(...)) 和 Spirit Qi 都理解这种行为(通过退出分词循环 (lex) 和/或使 qi::eoi 解析器匹配成功).

例如如果您需要断言解析已到达输入的末尾,您只需说

 myrule = subrule1 >> subrule2 > qi::eoi;

或者如果你想断言某些东西的存在(比如,结束 ;)除非在输入结束时:

 myrule = subrule1 >> subrule2 >> (qi::eoi | ';');

我是否遗漏了一些没有像这样解决的问题?

关于token - boost::spirit::lex,如何生成文件结束标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18601253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com