Comments (6)
Yes, quote and double quote escapes is a difficult subject: the double quote is passed as input and transformed into D code, which is itself assembled as a string. So quotes create problems.
It's easier to use predefined parsers to deal with them (you get them when you import pegged.grammar):
Quote
, that recognizes 'DoubleQuote
, that recognizes "BackQuote
, that recognizes `
See https://github.com/PhilippeSigaud/Pegged/wiki/Predefined-Parsers
There are also predefined parsers for end of lines, slashes, and so on.
Do you have an example of a failed compilation?
from pegged.
import pegged.grammar;
mixin(grammar(`A < '"'`));
void main ()
{
}
lol.d(90): Error: unterminated string constant starting at lol.d(49)
lol.d(90): Error: found 'EOF' when expecting ')' following template argument list
lol.d(90): Error: members expected
lol.d(90): Error: { } expected following aggregate declaration
lol.d(90): Error: } expected following member declarations in aggregate
from pegged.
Yeah, that's because it's difficult to propagate a double quote as a string argument to a template, when this template is itself being assembled as a string.
Use DoubleQuote
:
import pegged.grammar;
mixin(grammar(`A < DoubleQuote`));
void main ()
{
}
from pegged.
Will do, just checking it wasn't an unknown bug, thanks :)
from pegged.
It's a known bug :) I should write a wiki page specifically on string escaping.
IIRC I tried to automatically escape quotes with " and ', but it didn't work at the time.
from pegged.
I should write a wiki page specifically on string escaping.
That would be really useful.
from pegged.
Related Issues (20)
- Grammar won't parse whole text, it stops short a few lines... HOT 1
- Comment syntax HOT 7
- Unwanted space consumption in rule parameter
- Syntax wrappers HOT 1
- How does one do Intellisense using a Pegged grammar? HOT 3
- Is there a way to break up a grammar into D classes, each with their own data to parse into & thus subgrammar? HOT 2
- I can't find the Wikipedia ParseTree handling code in the Pegged wiki any more... HOT 1
- Will there be a speed-up when using a Dlang switch-case and shorter pegged variable names? HOT 2
- Can we create a grammar induction algorithm based upon expected Pegged parsing failures? HOT 2
- How do you use dub + pegged + asModule? HOT 1
- Bump new version HOT 7
- Remove obsolete CI.
- How do you branch on complex names such as caseSensitiveLiteral!("let") (they get much more complicated) HOT 1
- Undocumented features of Pegged HOT 2
- Remove Leading and trailing automatic space capture HOT 6
- core.exception.ArraySliceError@pegged\pegged\peg.d(1930): slice [0 .. 18446744073709551612] extends past source array of length 0 HOT 7
- v0.4.9: Invalid grammar errors are not reported HOT 29
- GrammarTester enhancment proposal HOT 5
- Recreating D's identifier-delimited string literals HOT 4
- Status of dgrammar.d? HOT 1
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 pegged.