Skip to content

希望能解析WhiteSpace #2

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。在应用程序的格式化选项中,您可以提供一个配置选项,让用户决定是否在输出中保留这些空白符。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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