Skip to content

Commit

Permalink
Generate mozcpp grammar automatically (#470)
Browse files Browse the repository at this point in the history
  • Loading branch information
Luni-4 committed Feb 12, 2021
1 parent e918c57 commit ac4ad6e
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 1 deletion.
71 changes: 71 additions & 0 deletions generate-moz-grammars/generate-mozcpp.sh
@@ -0,0 +1,71 @@
#!/bin/bash

# This script updates the mozcpp grammar automatically.
#
# Usage: ./generate-moz-grammars/generate-mozcpp.sh

# FIXME we need to remove this line once we are going to use
# the tree-sitter-cpp bindings
# Get the tree-sitter-cpp submodule version
TS_CPP_VERSION=`git submodule status tree-sitter-cpp | awk '{ print $1 }'`

# Enter the mozcpp directory
pushd tree-sitter-mozcpp

# Create tree-sitter-cpp directory
mkdir -p tree-sitter-cpp

# Enter tree-sitter-cpp directory
pushd tree-sitter-cpp

# Shallow clone tree-sitter-cpp to a specific revision
git init
git remote add origin https://github.com/tree-sitter/tree-sitter-cpp.git
git fetch --depth 1 origin $TS_CPP_VERSION
git checkout FETCH_HEAD

# Install tree-sitter-cpp dependencies
npm install -y

# Exit tree-sitter-cpp directory
popd

# Init npm
npm init -y

# Install a small module that lets the parser be used from Node
npm install --save nan

# Install the Tree-sitter CLI
npm install --save-dev tree-sitter-cli

# Generate moz-cpp grammar
./node_modules/.bin/tree-sitter generate

# Delete node_modules
rm -rf node_modules

# Delete package files
rm -rf package-lock.json package.json

# Delete tree-sitter-cpp directory
rm -rf tree-sitter-cpp

# Exit tree-sitter-mozcpp directory
popd

# Enter enums directory
pushd enums

# Recreate the grammar for rust-code-analysis
cargo clean && cargo run -- -lrust -o ../src/languages

# Exit enums directory
popd

# Format the produced grammars
cargo fmt

# Run rust code-analysis to verify if everything works correctly and to
# update the Cargo.lock
cargo test --workspace
2 changes: 1 addition & 1 deletion tree-sitter-mozcpp/grammar.js
@@ -1,4 +1,4 @@
const CPP = require("../tree-sitter-cpp/grammar.js")
const CPP = require("./tree-sitter-cpp/grammar.js")

module.exports = grammar(CPP, {
name: 'cpp',
Expand Down

0 comments on commit ac4ad6e

Please sign in to comment.