A plugin for PEG.js to use CoffeeScript in your actions.
npm install pegjs-coffee-plugin
Plugin for PEG.js to use CoffeeScript in actions. Because all I want
for christmas is CoffeeScript.
* PEG.js (who would have guessed that?)
* CoffeeScript
#### Node.js
``bash`
$ npm install pegjs-coffee-plugin`
Then in your code callcoffee-script
PEG = require 'pegjs'
coffee = require 'pegjs-coffee-plugin'
`
#### Browser
Download the
development
or the
minified version.
Now include all needed scripts in your html file like this.
`html`
`coffee-script`
grammar = '' # Define your grammar
parser = PEG.buildParser grammar, plugins: [coffee]
commandline like this
`bash
$ pegjs --plugin pegjs-coffee-plugin myGrammar.pegcoffee myCompiledGrammar.js
`Added Features
You now have a save scope shared between all actions and predicates.
To begin it is empty, then all declarations from the initializer are
added. Afterwards you can add and remove stuff as much as you like.
This scope is there even if you don't use the initializer. So you can
do something like the following.
`coffee-script
start = a { @result }
a = "a" { @result = "awesome" }
`
And this will correctly return "awesome" if you call parse("a").Also all variable assignments in an action are safely scoped to the
action.
{ result = "awesome" } becomes { var result; result =. This gives you the ability to explicitly share variables
with other actions via this and the security to just assign
variables for local use like you are used to when writing CoffeeScript.
Syntax changes
There is no need to call return anymore. You can just do
`coffee-script
start = a:"a" { "Great Stuff" }
`
which is the equivalent of`javascript
start = a:"a" { return "Great Stuff"; }
`If you declare variables in your initializer you set them on
this.
`coffee-script
{
@result = ""
}
start
= awesome / rule { @result }
awesome
= "awesome" { @result = "awesome" }
rule
= "rule" { @result = "rule }
`
-------------
Development
$3
* Node.js with npm
* mocha
* expect.js
* http-server
* JSHint
* UglifyJS
$3
Clone the repo and run the install
`bash
$ git clone https://github.com/dignifiedquire/pegjs-coffee-plugin.git
$ cd pegjs-cofee-plugin
$ npm install && npm install pegjs
`$3
`bash
$ make build
`Running the tests
For the Node.js tests run
`bash
$ make test
`
and for the browser tests
`bash
$ make test-browser
``* more tests
* make bower package