ast-path: vocabulary representation for predicting program properties

[ bsd3, data, library, natural-language-processing ] [ Propose Tags ]

Please see the README on GitHub at https://github.com/ijaketak/ast-path#readme


[Skip to Readme]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.2, 0.2.0
Change log ChangeLog.md
Dependencies base (>=4.7 && <5) [details]
License BSD-3-Clause
Copyright 2019 Keito Kajitani
Author Keito Kajitani
Maintainer ijaketak@gmail.com
Category Data, Natural Language Processing
Home page https://github.com/ijaketak/ast-path#readme
Bug tracker https://github.com/ijaketak/ast-path/issues
Source repo head: git clone https://github.com/ijaketak/ast-path
Uploaded by ijaketak at 2019-06-17T09:17:40Z
Distributions NixOS:0.2.0
Downloads 976 total (10 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2019-06-17 [all 1 reports]

Readme for ast-path-0.2.0

[back to package description]

ast-path

AST-path is a representation for predicting program properties.

AST-path is described in the paper "A General Path-Based Representation for Predicting Program Properties" (PLDI'2018) https://arxiv.org/abs/1803.09544 and used at https://code2vec.org/ and at https://code2seq.org/.

This package is a third-party implementation of AST-path. But the idea of AST-path is not restricted to AST. So the implementation of this package accepts any algebraic data types.

{-# LANGUAGE DeriveGeneric #-}
import Data.ASTPath

data Tree a = Leaf a | Node (Tree a) (Tree a)
  deriving (Eq, Show, Generic)

instance AST a => AST (Tree a)
instance AST Int where
  astPathWithHalf = terminalPath show

>>> astPath $ Node (Leaf 0) (Node (Leaf 1) (Leaf 2))
[("Node",["Leaf","1"],["Leaf","2"]),("Node",["Leaf","0"],["Node","Leaf","1"]),("Node",["Leaf","0"],["Node","Leaf","2"])]