jison2dart
Generate Dart parsers using Jison - Bison/Yacc in JavaScript.
Getting Started
First, you have to prepare Nodejs for your environment, and install jison
.
git clone git@github.com:rikulo/jison2dart.git
cd jison2dart/lib/js
npm install
Then, you can compile a Jison file to a Dart parser. For example,
cd example
node ../lib/js/jison2dart.js calculator.jison
For more options, please run
node bison.js --help
The Dart file will contain a class depending on the jison filename. For example,
class Caculator extends DefaultJisonParser {
Object parse() {
...
To use the Dart parser in your application, you have to put jison2dart
to your pubspec.yaml
.
Then, you can use the parser. For example,
print(Caculator().parse("2 * 3"));
Special Extensions
%library
Optional. Generates the library statement in the Dart pasrer.
%library my.lib
%class
Optional. Specfies the name of the Dart pasrer.
%class CalcParser
If you'd like to override it, say, for different platforms, you can specify abstract
too:
%class abstract ParserBase
%extends
If you'd like to extend from your custom class, you can specify it as follows:
%extends MyGenericParser
Note: Your implementation must implement JisonParser
, or extends DefaultJisonParser
.
%case-sensitive
By default, the lexer is case senstive. You can turn off as follows:
%case-sensitive false
The prologue: %{
and %}
Optional. If you'd like to import other libraries or embed Dart codes, you can put the code between %{
and %}
.
%{
import "super/foo.dart";
String camelize(String text) {
...
}
}%
Note: unlike Bison's prologue, you can put at most one prologue.
Resources
Who Uses
Libraries
- jison2dart
- jison2dart.dart