Java 根据后端的ANTLR语法,如何在前端检查用户输入是否有效?

Java 根据后端的ANTLR语法,如何在前端检查用户输入是否有效?,java,angular,typescript,antlr4,Java,Angular,Typescript,Antlr4,我已经在Angular 2+软件前端的后端用Java编写了一些使用ANTLR解析器的逻辑。我已经将一些前端输入链接到这个后端逻辑,它工作得很好,但是用户很容易输入错误并得到一些服务器内部错误 我正在寻找一种方法,在用户向服务器发送请求之前检查其输入是否有效,并根据我的语法文件提出建议。我已经看到了很多使用ANTLR和JS/TS的例子,但我真的不想重写Java->JS中的所有内容,更重要的是,我可能不希望所有的逻辑都在前端可用 有没有办法根据语法文件生成一些有用的文件,至少可以检查有效性 提前感谢

我已经在Angular 2+软件前端的后端用Java编写了一些使用ANTLR解析器的逻辑。我已经将一些前端输入链接到这个后端逻辑,它工作得很好,但是用户很容易输入错误并得到一些服务器内部错误

我正在寻找一种方法,在用户向服务器发送请求之前检查其输入是否有效,并根据我的语法文件提出建议。我已经看到了很多使用ANTLR和JS/TS的例子,但我真的不想重写Java->JS中的所有内容,更重要的是,我可能不希望所有的逻辑都在前端可用

有没有办法根据语法文件生成一些有用的文件,至少可以检查有效性


提前感谢

您可以在后端创建一个端点来验证输入,然后在Angular中创建一个自定义异步验证器来调用该端点

大概是

form.component.ts antlr.validator.ts
你用语法生成了一个解析器,对吗?使用该解析器,您可以解析用户输入,这就是您正在寻找的验证。你还想要什么?重要的是我的解析器在代码后端。我想在用户提交查询之前检查输入的有效性。但是@Jason White解决方案听起来很有前途,这可能会成功!我将尝试此解决方案,并在取得进展时更新我的帖子
this.form = this._formBuilder.group({
  input: ['', [Validators.required, AntlrValidator.checkGrammarValidity]]
});
export class AntlrValidator{
  static checkGrammarValidity(control: AbstractControl) => {
    const input = control.value; 
    // Your async http request to server to validate input.
    this.antlrService.checkGrammarValidity(input).map(res => {
      return res ? null : { validGrammar: true };
    })
  }
}