C Parser writen in pure Python


Keywords
parser, C, GLR, parsing, python
License
MIT
Install
pip install cparser==0.4.1

Documentation

A C parser based on parglare - a pure Python scannerless LR/GLR parser.

Quick intro

cparser is a parser for C language. This example shows how to collect all IDs from a simple C code.

from cparser import CParser
from cparser.visitor import ASTVisitor

code = """
typedef struct {
    int element;
    int weight;
} Atom;

Atom helium;
"""

class IDVisitor(ASTVisitor):
    """Visitor that collects all identifiers in the code."""

    def visit_id(self, node):
        print(node.value)
        return node

parser = CParser()
ast = parser.parse(code)

visitor = IDVisitor()
visitor.visit(ast)

# Output should look like this:
# element
# weight
# Atom
# Atom
# helium

Installation

  • Stable version:
$ pip install cparser
  • Development version:
$ git clone https://github.com/typhoon-hil/cparser.git
$ pip install -e cparser

Licence

MIT

Python versions

Tested with 3.6-3.9