Antlr4 Code Completion Core
中文丨 English
这是antlr4-c3库的Dart版本。翻译自:antlr4-c3 java
用法
编写或者获取一个antlr4的语法文件,然后使用antlr4生成Dart代码。
# Expr.g4 为 antlr4 语法文件,可以自己编写或者从网上获取
# 4.13.2 由 pubspec.yaml 中的 antlr4 版本决定
# ../example/gen 为生成的代码目录,请根据实际情况修改
antlr4 -v 4.13.2 -Dlanguage=Dart Expr.g4 -o ../example/gen
然后在你的代码中使用生成的代码。
import 'dart:math';
import 'package:antlr4/antlr4.dart';
import 'package:antlr4_c3/antlr4_c3.dart';
import 'gen/ExprLexer.dart';
import 'gen/ExprParser.dart';
void main() {
var expression = 'var c = a + b()';
var lexer = ExprLexer(InputStream.fromString(expression));
var tokens = CommonTokenStream(lexer);
var parser = ExprParser(tokens);
lexer.removeErrorListeners();
parser.removeErrorListeners();
parser.expression();
var core = CodeCompletionCore(parser, null, null);
var candidates = core.collectCandidates(max(0, tokens.size), null);
print(candidates);
}
开源协议
antlr4_c3 使用 MIT 协议。