Skip to content
This repository was archived by the owner on Apr 1, 2025. It is now read-only.

Add C support #663

Closed
wants to merge 4 commits into from
Closed

Add C support #663

wants to merge 4 commits into from

Conversation

jtojnar
Copy link

@jtojnar jtojnar commented Dec 18, 2021

Just a basic C parsing support (no tags) based on tree-sitter/haskell-tree-sitter#294.

You can try it by checking out the haskell-tree-sitter branch from tree-sitter/haskell-tree-sitter#294, setting the path in cabal.project.local in the semantic root (e.g. packages: ../haskell-tree-sitter/tree-sitter-c) and then run RUNFILES_DIR=path/to/haskell-tree-sitter cabal run semantic-ast -- --rootdir=. --language=C (I have no idea to make Bazel use local Haskell packages).

Recent revisions of C++ support UTF-8, UTF-16 and UTF-32 literals:
https://en.cppreference.com/w/cpp/language/string_literal

Since the UTF-16 and UTF-32 literals only differ in case,
they produce the same identifiers:

src/Language/C/AST.hs:5543:1: error:
    Multiple declarations of ‘AnonymousUDQuote’
    Declared at: src/Language/C/AST.hs:4694:1
                 src/Language/C/AST.hs:5543:1
     |
5543 | type AnonymousUDQuote = AST.Token.Token "u\"" 114
     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Language/C/AST.hs:5545:1: error:
    Multiple declarations of ‘AnonymousUSQuote’
    Declared at: src/Language/C/AST.hs:4696:1
                 src/Language/C/AST.hs:5545:1
     |
5545 | type AnonymousUSQuote = AST.Token.Token "u'" 108
     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
It is still documented in the README and much more convenient than Bazel.
Just basic parsing support, no tags.
@patrickt
Copy link
Contributor

patrickt commented Jan 3, 2022

This is very cool. How does the tree-sitter-c package handle #include facilities and the like? The preprocessor is a harsh mistress.

@jtojnar
Copy link
Author

jtojnar commented Jan 3, 2022

Not sure, I never managed to get it working because tree sitter itself was segfaulting for me half the time so I switched to Coccinelle.

@CleanCut CleanCut closed this Apr 1, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants