Comments (3)
This issue exists in all non-FP backends.
The Haskell backend produces the following printer for strings:
printString :: String -> Doc
printString s = doc (showChar '"' . concatS (map (mkEsc '"') s) . showChar '"')
mkEsc :: Char -> Char -> ShowS
mkEsc q = \case
s | s == q -> showChar '\\' . showChar s
'\\' -> showString "\\\\"
'\n' -> showString "\\n"
'\t' -> showString "\\t"
s -> showChar s
The Ocaml backend produces:
let prtString (_:int) (s:string) : doc = render ("\"" ^ String.escaped s ^ "\"")
From the docs: https://v2.ocaml.org/api/String.html
escaped s
iss
with special characters represented by escape sequences, following the lexical conventions of OCaml.All characters outside the US-ASCII printable range [0x20;0x7E] are escaped, as well as backslash (0x2F) and double-quote (0x22).
Java produces only this:
private static void printQuoted(String s) { render("\"" + s + "\""); }
CPP this:
void PrintAbsyn::visitString(String s)
{
bufAppend('\"');
bufAppend(s);
bufAppend('\"');
bufAppend(' ');
}
from bnfc.
While working on this issue, I found that two backends do not lex escape characters properly:
from bnfc.
thank you
from bnfc.
Related Issues (20)
- Juxtaposing quotation mark HOT 4
- GHC 9.6 HOT 1
- The Ocaml printer crashes if the indent level becomes negative HOT 1
- Improve generated CPP code to trace function calls HOT 5
- Optional Semicolons HOT 5
- how-to cabal HOT 3
- Java/ANTLR does not lex escape sequences in String HOT 1
- Ocaml backends do not lex escape sequences in Char
- Java: jflex-generated lexer with line numbers fails to build HOT 1
- Release 2.9.5
- Java/ANTLR: example C fails to build with Java 20 due to case mismatch
- Advertisement: Online yacc/lex grammar editor/tester HOT 1
- Support GHC 9.8
- Document that `$LANG` and `$LOCALE_ARCHIVE` need to be set
- Store tokens' position range instead of just start position
- List category of internal category should be internal HOT 1
- BNFC tarball ships `Lex.hs` and `Par.hs`
- Drop support for GHC 7.10
- Release support for ghc 9.8.1 HOT 5
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 bnfc.