问题标签 [tokenize]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3567 浏览

python - 标记模块

请帮忙

模块标记化中有许多标记,如 STRING、BACKQUOTE、AMPEREQUAL 等。

这就是我尝试过的。但我无法找到它们的意思?

从哪里我会明白这一点。我需要一个立即的解决方案。

0 投票
1 回答
2081 浏览

c - C Tokenizer(当字段丢失时它也返回空。耶!)

另请参阅:这是 C 的一个好的 substr() 吗?


strtok()和朋友跳过空字段,我不知道如何告诉它在这种情况下不要跳过而是返回空。

我能看到的大多数标记器的类似行为,甚至没有让我开始sscanf()(但它从未说过它会在空字段上工作)。

我一直在滚动并且也感到困倦,所以在这里进行审查:

这是驱动程序:

是的,你没看错;它现在仅适用于单个分隔符,但当然,我们需要处理一个错误。

输出:

我也将其设为 wiki,因为我在网上看到了许多类似的请求。

0 投票
3 回答
5943 浏览

c++ - 将 escaped_list_separator 与 boost split 一起使用

我正在使用 boost 字符串库,并且刚刚遇到了 split 方法的简单性。

这会很好而且简洁......但是它似乎不适用于引号,而是我必须做类似以下的事情

我的问题是,当您引用分隔符时,可以使用拆分或其他标准算法吗?多亏了purpledog,但我已经有了一种不被弃用的方法来实现预期的结果,我只是认为它很麻烦,除非我可以用更简单更优雅的解决方案替换它,否则我一般不会在不先将其包装的情况下使用它另一种方法。

编辑:更新代码以显示结果并澄清问题。

0 投票
5 回答
1275 浏览

c++ - 根据某些特定规则对文本进行标记。C++ 中的算法

我正在编写一个程序,它将根据某些特定规则对输入文本进行标记。我为此使用 C++。

规则

这只是一个示例,实时我有大约 500 多个这样的规则。如果我将输入作为“ appu ”提供,它应该像“ VA + C-PPA + VU ”一样标记化。我已经实现了一个算法来做到这一点,并想确保我做的是正确的事情。

算法

所有规则都将保存在一个 XML 文件中,并具有到令牌的相应映射。就像是

1 - 应用程序启动时,读取此 xml 文件并将值保存在“ std::map ”中。这将在应用程序结束之前可用(单例模式实现)。

2 - 迭代输入的文本字符。对于每个字符,查找匹配项。如果找到,变得更加贪婪并通过从输入文本中获取下一个字符来寻找更多匹配项。这样做,直到我们得到一个不匹配。因此,对于输入文本“ appu ”,首先查找“ a ”的匹配项。如果找到,请尝试通过从输入文本中获取下一个字符来获得更多匹配。所以它会尝试匹配 ' ap ' 并没有找到匹配项。所以它只是返回。

3 - 替换输入文本中的字母“a”,因为我们得到了它的标记。

4 - 对输入文本中的剩余字符重复步骤 2 和 3。

下面是更简单的步骤说明

问题

1 - 这个算法看起来很好解决这个问题还是有更好的方法来解决这个问题?

2 - 如果这是正确的方法,std::map 是一个不错的选择吗?还是我需要创建自己的键/值容器?

3 - 是否有可以像上面一样标记字符串的库?

任何帮助,将不胜感激

:)

0 投票
2 回答
1567 浏览

c++ - 标记 SIC 汇编器源

我已经为我的系统编程类编写了一个 SIC 汇编器,但我对标记化部分感到困惑。

例如,以这行源代码为例:

格式(自由格式)为:{LABEL} OPCODE {OPERAND{,X}} {COMMENT}

卷曲表示该字段是可选的。

此外,每个字段必须由至少一个空格或制表符分隔。

上面的代码更容易组织,但下面的代码片段给我带来了困难。

我的代码将读取注释的第一个单词,就好像它是一个操作数一样。

这是我的代码:

我的教授要求用两个版本的源代码测试汇编器——一个有错误,一个没有。

RSUB OPCODE 不依赖于 OPERAND,因此我了解 RSUB OPCODE 之后的所有内容都可以视为注释,但是如果错误的源代码在 OPERAND 字段中包含值,或者缺少依赖于 OPERAND 的 OPCODE OPERAND 值,我该如何补偿?我需要将这些标记为错误并打印出错误的操作数值(或缺少)。

我的问题是:如何防止代码的注释部分被视为操作数?

0 投票
1 回答
615 浏览

python - Python3.0:标记化 & BytesIO

在 python3.0 中尝试tokenize字符串时,为什么'utf-8'在标记开始之前我会得到一个前导?

python3 文档tokenize现在应该按如下方式使用:

但是,在终端尝试此操作时,会发生以下情况:

utf-8其他令牌之前的令牌是什么?这应该发生吗?如果是这样,那么我应该总是跳过第一个令牌吗?

[编辑]

我发现令牌类型 57 是tokenize.ENCODING,如果需要,可以轻松地将其从令牌流中过滤掉。

0 投票
4 回答
148819 浏览

java - 标记化错误:java.util.regex.PatternSyntaxException,悬空元字符“*”

我用来标记一个用以下格式split()分隔的字符串:*

我正在使用以下代码从名为“entrada.al”的文件中读取此内容:

我得到了这个例外:

线程“主”java.util.regex.PatternSyntaxException 中的异常:在索引 0 附近悬空元字符 '*' *

我的猜测是*原始文本文件缺少后年龄导致了这种情况。我该如何解决?

0 投票
6 回答
17279 浏览

c++ - 什么是更有效的 switch case 或 std::map

我正在考虑这里的标记器。
每个标记在解析器中调用不同的函数。
什么更有效:

  • std::functions/boost::functions 的映射
  • 一个开关盒
0 投票
2 回答
1430 浏览

python - Python3.0 - 标记化和取消标记化

我正在使用类似于以下简化脚本的内容来解析较大文件中的 python 片段:

尽管python2.x中的代码不一样,但它使用相同的习语并且工作得很好。然而,使用 python3.0 运行上面的代码片段,我得到了这个输出:

我已经搜索了有关此错误及其原因的引用,但找不到任何内容。我做错了什么,我该如何纠正?

[编辑]

partisann观察到在源代码中添加换行符会导致错误消失之后,我开始弄乱我正在取消标记的列表。如果没有在换行符之前立即出现该标记,则该标记似乎EOF会导致错误,因此删除它可以消除该错误。以下脚本运行没有错误:

0 投票
4 回答
24485 浏览

c++ - C++ 使用正则表达式标记字符串

我现在正在尝试从头开始学习一些 C++。
我精通python、perl、javascript,但过去只是在课堂环境中短暂接触过C++。请原谅我的问题的天真。

我想使用正则表达式拆分字符串,但没有找到一个清晰、明确、高效且完整的示例来说明如何在 C++ 中执行此操作。

在 perl 中,这是常见的操作,因此可以以一种简单的方式完成,

我想知道如何最好地完成 C++ 中的等价物。

编辑:
我想我在 boost 库中找到了我想要的东西,如下所述。

boost regex-token-iterator(为什么下划线不起作用?)

我想我不知道要搜索什么。