Comments (3)
Hello! I am the author of cpp-peglib, and glad to find you get to try it out.
I'll give you some background of this library for your information, since this PEG library is somewhat unique compared to other PEG libraries.
As you may have already noticed, this library is good for parser prototyping, since its grammar format is just plain text and we can develop grammar by trail and error with lint tools (peglint command line tool and playground web application) without compiling.
cpp-peglib also has simple built-in AST generation support. The default AST node can be enhanced easily with your own data. Although it produces a pretty redundant AST tree as default, you can remove unnecessary nodes with ignore operator ~
and AstOptimizer
to make it good shape.
Another feature that cpp-peglib provides is infix expression support. This is not a part of the original PEG spec, but it's pretty useful to handle infix expression with many precedence levels.
Of course, a parser generated from cpp-peglib cannot be any better than hand crafted parsers in many respects. But I believe it can at least save your time during early stage of language design until the language syntax settles down, then shift to a product version of a hand written parser for performance and good error handling.
Anyway, thanks for your interest in cpp-peglib, and hope it helps your project!
P.S. I apologize if this comment shouldn't have been posted here.
from verona.
@yhirose, thanks for the feedback! Most welcome.
Our use of cpp-peglib is exactly as you describe. We're writing a prototype, to quickly build an AST that we can use from an evolving language. Once it becomes more stable, we'll have to write a custom parser, but hopefully retaining the AST mostly intact, so that we don't impact the other parts of the compiler.
from verona.
After a long time, most of the old syntax is changing and we have enough of the new syntax in the MLIR generator that we can mark this one "done". If we find missing parts in the language support (of which there are many), we can create new issues on each one specifically.
from verona.
Related Issues (20)
- handle_getaddrinfo incorrect return value
- Can Fibonacci be written like this? how to get when expression return value? HOT 6
- what is the meaning of mut-view? HOT 3
- Question about when expression scheduling HOT 5
- security issue in DeallocChunk - unaligned address HOT 2
- security issue in DeallocChunk- double free
- security issue in DeallocChunk - lack bounds check on size HOT 1
- cross sandbox DOS in handle
- Issue in `handle` - use of uninitialized stack due to lack of return value check HOT 1
- verona-mlir do not support cown, when HOT 1
- `handle` doesn't check the return value of send
- sandbox can violate of sizeclass assert in snmalloc HOT 2
- check for failure in Library.alloc
- Problem about iso type class field HOT 1
- Why not use a more C/C++ like syntax? HOT 2
- verona develop progress , any compare with google carbon language. HOT 2
- Is this project dead? HOT 2
- Move to later version of Mac OS HOT 1
- so it has eventualy dead? HOT 1
- Fuzzing failure
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from verona.