表驱动的Lexers可以 "lex "多维数组吗?

问题描述 投票:0回答:1

我一直在思考如何实现这个问题,但我没有找到真正好的答案。

本质上,我遇到的问题是,给定一个任意大的数组维度,就必须有等量的Lexer States来跟踪深度,所以这让我思考表驱动的Lexer到底能有多大的表现力。

在我看来,很明显,DFA不能计数。那么既然DFA(Discrete Finite Automatas)不能计数,至少不能超过硬编码的限制,那么TDL如何支持多维数组呢?

语言有没有硬性规定可以有多少个嵌套数组,还是用手工制作的Lexer来考虑计数的需要?

compiler-construction lexer dfa
1个回答
0
投票

我想,当你说到数组的词法时,你说的是数组的字面意思,比如说 [x, y] 或数组初始化器,如 {x, y}. 这两个词都不会作为一个单一的标记来解释。它们将被词典化为 [, x, ,, y, ]{, x, ,, y, } 分别。这适用于多维数组和一维数组。

请注意,如果你试图将它们变成一个单一标记,即使是单维数组也会遇到问题。由于它们通常可以包含任意的表达式,将它们识别为一个单一的标记意味着词法师必须解析任意的异常,这也涉及到任意的嵌套,而且无论如何都明显超出了词法师的范围。

© www.soinside.com 2019 - 2024. All rights reserved.