使用 ANTLR 时表达式参数的运行时值

Runtime values for expression parameters while using ANTLR

在网络应用程序的 UI 中,我试图向用户显示 excel 功能的自动完成建议。这是使用 ANTLR4TS typescript 库完成的。我的语法如下所示

conditionalFunction : STRING relational_op STRING;
relational_op : EQ | LT | GT | NE | LTE | GTE | IS | IS_NOT | LIKE;

EQ  : '=';
LT  : '<';
GT  : '>';
NE  : '!=';
LTE : '<=';
GTE : '>=';

在 UI 中,用户在定义公式之前选择一组他们感兴趣的列(例如:'column1'、'column2'...)。在提供表达式的智能感知时,是否可以从用户选择的可用列列表中为用户提供表达式 conditionalFunction 的两个参数的自动建议?如何使用 ANTLR4TS 执行此操作?

请注意,列名不会遵循示例中提到的命名约定,可以是任何字母数字。

代码补全不是 ANTLR 做的“开箱即用”的事情。人们很容易认为语法应该是提供代码完成的足够信息。事实证明,它比那更棘手。

但是,鉴于您已经在使用 TypeScript,请查看 antlr-c3 https://github.com/mike-lischke/antlr4-c3

它不像你只是添加它然后你得到代码完成,但它很好地提供了搜索符号表等所需的响应数据结构并提供代码完成(当然,您还需要弄清楚如何与您的特定编辑器集成)。

ANTLR C3 将为您完成大量艰苦的工作(并且使用 ANTLR 算法,它并不像表面上看起来那么简单)。