Skip to content

希望能解析WhiteSpace #2

@sdcb

Description

@sdcb

我理解作为一个parser为了简单可以跳过WhiteSpace,但如果要做得精致和完美我希望可以重新加入WhiteSpace功能(但在默认Format时可以选择跳过),这可以让客户在格式化选项时可以自定义保留的缩进等信息

比如SELECT * FROM MyTable

当前解析结果(不保留WS):

假设当前解析器的实现不保留WS的token,仅仅是对SQL中的关键字和标识符进行解析。根据通常的解析器工作流,这个输入可能被解析为如下结构:

  1. SELECT - 关键字
  2. * - 通配符
  3. FROM - 关键字
  4. MyTable - 表名

这种解析器实现会忽略所有的空格和换行符等,这意味着它不会对缩进或格式化风格有任何保留。

希望的解析结果(保留WS):

在您的建议中,希望能够在解析过程中加入WS的token,同时允许用户在格式化时有选择性地保留这些信息。这可能的解析结果如下:

  1. SELECT - 关键字
  2. WS - 空格(在 SELECT 后)
  3. * - 通配符
  4. WS - 空格(在 *FROM 之间)
  5. FROM - 关键字
  6. WS - 空格(在 FROMMyTable 之间)
  7. MyTable - 表名

通过引入WS token,您可以更灵活地格式化输出,同时仍然支持默认选择跳过这些Token。在应用程序的格式化选项中,您可以提供一个配置选项,让用户决定是否在输出中保留这些空白符。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions