Coder Social home page Coder Social logo

antlr-ast's People

Contributors

hermansje avatar machow avatar timsangster avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

antlr-ast's Issues

Python2 compatability broken

>>> pip install antlr-ast; python -c   'import antlr4'
Collecting antlr-ast
Collecting antlr4-python3-runtime (from antlr-ast)
Installing collected packages: antlr4-python3-runtime, antlr-ast
Successfully installed antlr-ast-0.2.0 antlr4-python3-runtime-4.7
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/tom/.local/lib/python2.7/site-packages/antlr4/__init__.py", line 1, in <mo
dule>
    from antlr4.Token import Token
  File "/home/tom/.local/lib/python2.7/site-packages/antlr4/Token.py", line 59
    def text(self, text:str):
                       ^
SyntaxError: invalid syntax

There is a question of whether you want to still support python2. Though one imagines you might want to more clearly exclude it.

This came up when working on latex2sympy.

function for mapping visitor -> dropping tokens

For example, the tsql grammar has this little devil:

    def visitSql_clauses(self, ctx):
        return self.visitChildren(ctx, predicate = lambda n: not isinstance(n, Tree.TerminalNode) )

    def visitSelect_list(self, ctx):
        return self.visitChildren(ctx, predicate = lambda n: not isinstance(n, Tree.TerminalNode) )

    def visitBracket_expression(self, ctx): 
        return self.visitChildren(ctx, predicate = lambda n: not isinstance(n, Tree.TerminalNode) )

    def visitSubquery_expression(self, ctx): 
        return self.visitChildren(ctx, predicate = lambda n: not isinstance(n, Tree.TerminalNode) )

    def visitBracket_search_expression(self, ctx): 
        return self.visitChildren(ctx, predicate = lambda n: not isinstance(n, Tree.TerminalNode) )

    def visitBracket_query_expression(self, ctx):
        return self.visitChildren(ctx, predicate = lambda n: not isinstance(n, Tree.TerminalNode) )

    def visitBracket_table_source(self, ctx):
        return self.visitChildren(ctx, predicate = lambda n: not isinstance(n, Tree.TerminalNode) )

    def visitTable_alias(self, ctx):
        return self.visitChildren(ctx, predicate = lambda n: not isinstance(n, Tree.TerminalNode) )

Function for mapping visitor -> AstNode classmethods

Currently, a common pattern is to repeat visitor methods like below. But could be collapsed easily.

    def visitQuery_specification(self, ctx):
        return SelectStmt._from_fields(self, ctx)

    def visitInsert_statement(self, ctx):
        return InsertStmt._from_fields(self, ctx)

    def visitDelete_statement(self, ctx):
        return DeleteStmt._from_fields(self, ctx)

    def visitUpdate_statement(self, ctx):
        return UpdateStmt._from_fields(self, ctx)

    def visitUnion_query_expression(self, ctx):
        return Union._from_fields(self, ctx)

Write basic README

  • building a grammar
  • overview of ASTNode, Speaker
  • reference to part of test that writes a parse function
  • running tests
  • only python3 compatible

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.