grammars-v4 icon indicating copy to clipboard operation
grammars-v4 copied to clipboard

[antlr] add LexerAdaptor for dart

Open CorvusYe opened this issue 1 year ago • 4 comments
trafficstars

This PR may have some inappropriate aspects as I cannot find the contribution guide. Please feel free to point it out.

CorvusYe avatar Feb 20 '24 17:02 CorvusYe

$ trgen -t Dart --force
C:\msys64\home\Kenne\issues\g4-3977\antlr\antlr4
CSharp  ANTLRv4Lexer.g4 success 0.0553075
CSharp  ANTLRv4Parser.g4 success 0.0093005
Rendering template file from Dart/pubspec.yaml to ./Generated-Dart/pubspec.yaml
Rendering template file from Dart/st.analysis_options.yaml to ./Generated-Dart/st.analysis_options.yaml
Rendering template file from Dart/st.build.ps1 to ./Generated-Dart/st.build.ps1
Rendering template file from Dart/st.build.sh to ./Generated-Dart/st.build.sh
Rendering template file from Dart/st.clean.ps1 to ./Generated-Dart/st.clean.ps1
Rendering template file from Dart/st.clean.sh to ./Generated-Dart/st.clean.sh
Rendering template file from Dart/st.makefile to ./Generated-Dart/st.makefile
Rendering template file from Dart/st.MyErrorListener.dart to ./Generated-Dart/st.MyErrorListener.dart
Rendering template file from Dart/st.perf.sh to ./Generated-Dart/st.perf.sh
Rendering template file from Dart/st.run.ps1 to ./Generated-Dart/st.run.ps1
Rendering template file from Dart/st.run.sh to ./Generated-Dart/st.run.sh
Rendering template file from Dart/st.Test.dart to ./Generated-Dart/st.Test.dart
Rendering template file from Dart/st.test.ps1 to ./Generated-Dart/st.test.ps1
Rendering template file from Dart/st.test.sh to ./Generated-Dart/st.test.sh
Copying source file from C:/msys64/home/Kenne/issues/g4-3977/antlr/antlr4/readme.md to ./Generated-Dart/readme.md
Copying source file from C:/msys64/home/Kenne/issues/g4-3977/antlr/antlr4/LexBasic.g4 to ./Generated-Dart/LexBasic.g4
Copying source file from C:/msys64/home/Kenne/issues/g4-3977/antlr/antlr4/desc.xml to ./Generated-Dart/desc.xml
Copying source file from C:/msys64/home/Kenne/issues/g4-3977/antlr/antlr4/ANTLRv4Parser.g4 to ./Generated-Dart/ANTLRv4Parser.g4
Copying source file from C:/msys64/home/Kenne/issues/g4-3977/antlr/antlr4/ANTLRv4Lexer.g4 to ./Generated-Dart/ANTLRv4Lexer.g4
Copying source file from C:/msys64/home/Kenne/issues/g4-3977/antlr/antlr4/Dart/LexerAdaptor.dart to ./Generated-Dart/LexerAdaptor.dart
02/21-05:51:34 ~/issues/g4-3977/antlr/antlr4
$ cd Generated-Dart/
02/21-05:51:37 ~/issues/g4-3977/antlr/antlr4/Generated-Dart
$ ls
analysis_options.yaml  build.ps1  clean.sh     LexerAdaptor.dart     perf.sh       run.ps1    test.ps1
ANTLRv4Lexer.g4        build.sh   desc.xml     makefile              pubspec.yaml  run.sh     test.sh
ANTLRv4Parser.g4       clean.ps1  LexBasic.g4  MyErrorListener.dart  readme.md     Test.dart
02/21-05:51:38 ~/issues/g4-3977/antlr/antlr4/Generated-Dart
$ make
bash build.sh
Resolving dependencies... (2.0s)
+ _fe_analyzer_shared 67.0.0
+ analyzer 6.4.1
+ antlr4 4.13.1
+ args 2.4.2
+ async 2.11.0
+ boolean_selector 2.1.1
+ collection 1.18.0
+ convert 3.1.1
+ coverage 1.7.2
+ crypto 3.0.3
+ file 7.0.0
+ frontend_server_client 3.2.0
+ glob 2.1.2
+ http_multi_server 3.2.1
+ http_parser 4.0.2
+ io 1.0.4
+ js 0.7.1
+ logging 1.2.0
+ matcher 0.12.16+1
+ meta 1.12.0
+ mime 1.0.5
+ node_preamble 2.0.2
+ package_config 2.1.0
+ path 1.9.0
+ pedantic 1.11.1 (discontinued replaced by lints)
+ pool 1.5.1
+ pub_semver 2.1.4
+ shelf 1.4.1
+ shelf_packages_handler 3.0.2
+ shelf_static 1.1.2
+ shelf_web_socket 1.0.4
+ source_map_stack_trace 2.1.1
+ source_maps 0.10.12
+ source_span 1.10.0
+ stack_trace 1.11.1
+ stream_channel 2.1.2
+ string_scanner 1.2.0
+ term_glyph 1.2.1
+ test 1.25.2
+ test_api 0.7.0
+ test_core 0.6.0
+ typed_data 1.3.2
+ vm_service 14.0.0
+ watcher 1.1.0
+ web 0.4.2 (0.5.0 available)
+ web_socket_channel 2.4.3 (2.4.4 available)
+ webkit_inspection_protocol 1.2.1
+ yaml 3.1.2
Changed 48 dependencies!
1 package is discontinued.
2 packages have newer versions incompatible with dependency constraints.
Try `dart pub outdated` for more information.
LexerAdaptor.dart:37:16: Error: The 'super-parameters' language feature is disabled for this library.
Try removing the package language version or setting the language version to 2.17 or higher.
  LexerAdaptor(super.input);
               ^^^^^
LexerAdaptor.dart:37:3: Error: The superclass, 'Lexer', has no unnamed constructor that takes no arguments.
  LexerAdaptor(super.input);
  ^^^^^^^^^^^^
Error: AOT compilation failed
Generating AOT kernel dill failed!
mingw32-make: *** [makefile:3: build] Error 64
02/21-05:51:54 ~/issues/g4-3977/antlr/antlr4/Generated-Dart
$ dart --version
Dart SDK version: 3.3.0-273.0.dev (dev) (Fri Dec 29 04:03:30 2023 -0800) on "windows_x64"
02/21-05:56:11 ~/issues/g4-3977/antlr/antlr4/Generated-Dart

I have a problem compiling the code. Also, the desc.xml should have "Dart" listed. All the driver code is in the repo, here: https://github.com/antlr/grammars-v4/tree/master/_scripts/templates/Dart

kaby76 avatar Feb 21 '24 10:02 kaby76

Although the SDK version of the environment is 3.3.0-273.0. dev, this line should play a crucial role. The sdk version can be 2.12 in driver code. We can try changing this version to 2.17 or higher.

CorvusYe avatar Feb 21 '24 11:02 CorvusYe

I changed the pubspec.yaml as you suggested, but the parser is not producing the correct output. I am expecting errors for examples/LexerElementLabel.g4. The Antlr4 tool, and the CSharp and Java target parsers all report the error, but the Dart target does not. Please update your code and test.

02/21-09:08:13 ~/issues/g4-3977/antlr/antlr4/xxx
$ antlr4 LexerElementLabel.g4
error(50): LexerElementLabel.g4:4:11: syntax error: '=' came as a complete surprise to me while looking for lexer rule element
02/21-09:08:19 ~/issues/g4-3977/antlr/antlr4/xxx
$ cd ../Generated-Dart/
02/21-09:08:25 ~/issues/g4-3977/antlr/antlr4/Generated-Dart
$ ./test.exe ../xxx/LexerElementLabel.g4
Dart 0 ../xxx/LexerElementLabel.g4 success 0.0
Total Time: 0.001
02/21-09:08:43 ~/issues/g4-3977/antlr/antlr4/Generated-Dart
$ bash run.sh ../examples/LexerElementLabel.g4
line 4:8 no viable alternative at input 'var'
line 4:11 mismatched input '=' expecting {BEGIN_ARGUMENT, OPTIONS, 'returns', 'locals', 'throws', COLON, AT}
Java 0 ../examples/LexerElementLabel.g4 fail 0.032
Total Time: 0.113
02/21-09:11:23 ~/issues/g4-3977/antlr/antlr4/Generated-java
$ cd ../Generated-CSharp/
02/21-09:11:28 ~/issues/g4-3977/antlr/antlr4/Generated-CSharp
$ bash run.sh ../examples/LexerElementLabel.g4
line 4:8 no viable alternative at input 'var'
line 4:11 mismatched input '=' expecting {BEGIN_ARGUMENT, OPTIONS, 'returns', 'locals', 'throws', COLON, AT}
CSharp 0 ../examples/LexerElementLabel.g4 fail 0.0313289
Total Time: 0.0822919
02/21-09:11:36 ~/issues/g4-3977/antlr/antlr4/Generated-CSharp
$

kaby76 avatar Feb 21 '24 14:02 kaby76

Ok, I will revise it as soon as possible. Thanks for your feedback~

CorvusYe avatar Feb 22 '24 01:02 CorvusYe