Skip to content

Commit

Permalink
[docs] TableGen easter egg: Multiline string literals
Browse files Browse the repository at this point in the history
They're called code fragments, but they are really multiline string
literals. Just spotted this usage in a patch by Aaron using "code
fragments" for holding documentation text. I remember someone bemoaning
the lack of multiline string literals in TableGen, so I'm explicitly
documenting that code fragments are multiline string literals.

Let it be known that any use case needing multiline string literals in
TableGen (such as descriptions of options, or whatnot) can use use
code fragments (instead of C-style string concatenation or exceedingly
long lines). E.g.

    class Bar<int n>;
    class Baz<int n>;
    class Doc<string desc> {
        string Desc = desc;
    }
    def Foo : Bar<1>, Baz<3>, Doc<[{
    This Foo is a Bar, and also a Baz. It can take 3 values:
        * Qux
        * Quux
        * Quuux
    }]>;

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201033 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
chisophugis committed Feb 9, 2014
1 parent 8e616d3 commit f408f0f
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions docs/TableGen/LangRef.rst
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@ TableGen also has two string-like literals:
TokString: '"' <non-'"' characters and C-like escapes> '"'
TokCodeFragment: "[{" <shortest text not containing "}]"> "}]"

:token:`TokCodeFragment` is essentially a multiline string literal
delimited by ``[{`` and ``}]``.

.. note::
The current implementation accepts the following C-like escapes::

Expand Down

0 comments on commit f408f0f

Please sign in to comment.