Coder Social home page Coder Social logo

pyparsing / plusminus Goto Github PK

View Code? Open in Web Editor NEW
10.0 6.0 5.0 254 KB

License: MIT License

Python 100.00%
parsing parsing-library arithmetic-expression-evaluator infix-notation infix-expression-parser infix-evaluation python python3 python3-library evaluate-expressions

plusminus's Introduction

PyParsing -- A Python Parsing Module

Version Build Status Coverage License Python versions pyparsing

Introduction

The pyparsing module is an alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions. The pyparsing module provides a library of classes that client code uses to construct the grammar directly in Python code.

[Since first writing this description of pyparsing in late 2003, this technique for developing parsers has become more widespread, under the name Parsing Expression Grammars - PEGs. See more information on PEGs here .]

Here is a program to parse "Hello, World!" (or any greeting of the form "salutation, addressee!"):

from pyparsing import Word, alphas
greet = Word(alphas) + "," + Word(alphas) + "!"
hello = "Hello, World!"
print(hello, "->", greet.parseString(hello))

The program outputs the following:

Hello, World! -> ['Hello', ',', 'World', '!']

The Python representation of the grammar is quite readable, owing to the self-explanatory class names, and the use of '+', '|' and '^' operator definitions.

The parsed results returned from parseString() is a collection of type ParseResults, which can be accessed as a nested list, a dictionary, or an object with named attributes.

The pyparsing module handles some of the problems that are typically vexing when writing text parsers:

  • extra or missing whitespace (the above program will also handle "Hello,World!", "Hello , World !", etc.)
  • quoted strings
  • embedded comments

The examples directory includes a simple SQL parser, simple CORBA IDL parser, a config file parser, a chemical formula parser, and a four- function algebraic notation parser, among many others.

Documentation

There are many examples in the online docstrings of the classes and methods in pyparsing. You can find them compiled into online docs. Additional documentation resources and project info are listed in the online GitHub wiki. An entire directory of examples can be found here.

License

MIT License. See header of the pyparsing __init__.py file.

History

See CHANGES file.

plusminus's People

Contributors

nicolasalmerge avatar ptmcg avatar toonarmycaptain avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

plusminus's Issues

Refactor parsers to separate Python eval() features from standard Arithmetic features

plusminus is a project of 2 minds:

  • being a safe alternative to Python eval()
  • implementing common arithmetic notations and operations, often using Unicode operators or notation that are not supported in Python (such as |x| for abs(x))

These two goals should be split into separate parser classes, so that "programming-ish" concepts do not necessarily bleed over into arithmetic notations, and arithmetic expressions like |x| are not included in safe Python eval() support.

More variances in variable names

Hi,

Thanks for your great work on pyparsing and plusminus.

I am searching for a parser working on pandas Series with variables.
This looks to work out of the box with plusminus (mapping all series of a dataframe to variables)
For a 1:1 adaption it would be fine to have a different identifier definition.

As the data columns i am working (they come from external CSV) on may contain spaces i would like to define a variable as

var_name = pp.QuotedString('[', endQuoteChar=']').setName("identifier")

which currently requires a copy and paste of your library.

Christoph

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.