入れ子関数のビジターパターンを実装する方法
私はAntlrの初心者であり、Antlr4を使用して以下の実装を実行したかったのです。以下の機能を持っています。 1. FUNCTION.add(Integer a,Integer b) 2. FUNCTION.concat(String a,String b) 3. FUNCTION.mul(Integer a,Integer b) そして、私はこのような関数のメタデータを保存しています。 Map<String,String> map=new HashMap<>(); map.put("FUNCTION.add","Integer:Integer,Integer"); map.put("FUNCTION.concat","String:String,String"); map.put("FUNCTION.mul","Integer:Integer,Integer"); 、どこInteger:Integer,Integerを表すInteger戻り値の型があり、入力はaccesptsが機能しているだろうparamsはInteger,Integer。 入力がこのようなものである場合 FUNCTION.concat(Function.substring(String,Integer,Integer),String) or FUNCTION.concat(Function.substring("test",1,1),String) ビジター実装を使用して、マップに格納されている関数メタデータに対して入力が検証されるかどうかを確認したいと思いました。 以下は、私が使用しているレクサーとパーサーです。 レクサーMyFunctionsLexer.g4: lexer grammar MyFunctionsLexer; FUNCTION: 'FUNCTION'; NAME: [A-Za-z0-9]+; DOT: '.'; COMMA: ','; L_BRACKET: '('; R_BRACKET: ')'; パーサーMyFunctionsParser.g4: parser grammar MyFunctionsParser; options { tokenVocab=MyFunctionsLexer; …