diff options
author | Jeffrey H. Kingston <jeff@it.usyd.edu.au> | 2010-09-14 19:21:41 +0000 |
---|---|---|
committer | Jeffrey H. Kingston <jeff@it.usyd.edu.au> | 2010-09-14 19:21:41 +0000 |
commit | 71bdb35d52747e6d7d9f55df4524d57c2966be94 (patch) | |
tree | 480ee5eefccc40d5f3331cc52d66f722fd19bfb9 /include/cprintf | |
parent | b41263ea7578fa9742486135c762803b52794105 (diff) | |
download | lout-71bdb35d52747e6d7d9f55df4524d57c2966be94.tar.gz |
Lout 3.17.
git-svn-id: http://svn.savannah.nongnu.org/svn/lout/trunk@2 9365b830-b601-4143-9ba8-b4a8e2c3339c
Diffstat (limited to 'include/cprintf')
-rw-r--r-- | include/cprintf | 383 |
1 files changed, 383 insertions, 0 deletions
diff --git a/include/cprintf b/include/cprintf new file mode 100644 index 0000000..fca806e --- /dev/null +++ b/include/cprintf @@ -0,0 +1,383 @@ + +############################################################################### +# # +# Lout @CPSetup package for formatting C and C++ programs (Version 1.1) # +# # +# Version 1.0 by Jeffrey H. Kingston, March 1994. # +# Version 1.1 by Jeffrey H. Kingston, November 1998 (name change only) # +# # +# This package uses a filtered body parameter to convert C and C++ source # +# code into Lout source. The filter program is c2lout which is distributed # +# with Basser Lout Version 3. The list of keywords and tokens is from # +# Stroustrup, 2nd Edition. See "User's Guide to the Lout Document # +# Formatting System" for user information. # +# # +############################################################################### + +export @CP +def @CPSetup + named style { fixed } # print style + + named fixedfont { Courier } # font family if fixed + named fixedstrings { Base } # string face if fixed + named fixedidentifiers { Base } # identifier face if fixed + named fixedcomments { Base } # comment face if fixed + named fixedkeywords { Base } # keyword face if fixed + named fixednumbers { Base } # number face if fixed + named fixedoperators { Base } # operator face if fixed + named fixedsize { -1.0p } # font size if fixed + named fixedline { 1.0vx } # line-space if fixed + named fixedtabin { 8 } # tab interval if fixed + named fixedtabout { 8s } # tab width if fixed + + named varyingfont { } # font family if varying + named varyingstrings { Slope } # string face if varying + named varyingidentifiers { Slope } # identifier face if varying + named varyingcomments { Base } # comment face if varying + named varyingkeywords { Bold } # keyword face if varying + named varyingnumbers { Base } # number face if varying + named varyingoperators { Base } # operator face if varying + named varyingsize { 1.0f } # font size if varying + named varyingline { 1.0vx } # line-space if varying + named varyingtabin { 8 } # tab interval if varying + named varyingtabout { 3f } # tab width if varying + + named symbolfont { } # font family if symbol + named symbolstrings { Slope } # string face if symbol + named symbolidentifiers { Slope } # identifier face if symbol + named symbolcomments { Base } # comment face if symbol + named symbolkeywords { Bold } # keyword face if symbol + named symbolnumbers { Base } # number face if symbol + named symboloperators { Base } # operator face if symbol + named symbolsize { 1.0f } # font size if symbol + named symbolline { 1.0vx } # line-space if symbol + named symboltabin { 8 } # tab interval if symbol + named symboltabout { 3f } # tab width if symbol + +@Begin + + export + + "$$" "$>" "`" @L @S @C + + "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" + + "!" "%" "^" "&" "*" "(" ")" "-" "+" "=" "${" "$}" "|" "~" + "[" "]" ";" "'" ":" "<" ">" "?" "," "." "/" + + "->" "++" "--" ".*" "->*" "<<" ">>" "<=" ">=" "==" "!=" "&&" + "||" "*=" "/=" "%=" "+=" "-=" "<<=" ">>=" "&=" "^=" "|=" "::" + + asm continue float new signed try + auto default for operator sizeof typedef + break delete friend private static union + case do goto protected struct unsigned + catch double if public switch virtual + char else inline register template void + class enum int return this volatile + const extern long short throw while + + @EvaluateCp + + def @CP + named style { style } # style + named font { dft } # font family + named strings { dft } # string font + named identifiers { dft } # ident. font + named comments { dft } # comment font + named keywords { dft } # keyword font + named numbers { dft } # number font + named operators { dft } # operator font + named size { dft } # font size + named line { dft } # line-space + named tabin { dft } # tab interval + named tabout { dft } # tab width + body @Body # filtered, see below + @Begin + + def @Test # returns x unless x is dft + left x + named iffixed {} + named ifvarying {} + named ifsymbol {} + { + x @Case { + dft @Yield { + style @Case { + fixed @Yield { iffixed } + varying @Yield { ifvarying } + symbol @Yield { ifsymbol } + } + } + else @Yield x + } + } + + def @InitTab + { + tabin @Test + iffixed { fixedtabin } + ifvarying { varyingtabin } + ifsymbol { symboltabin } + } + + def @InitTabWidth + { + tabout @Test + iffixed { fixedtabout } + ifvarying { varyingtabout } + ifsymbol { symboltabout } + } + + def @Filter + { + c2lout -r -i{@FilterIn} -o{@FilterOut} -e{@FilterErr} + -t{@InitTab} -T{@InitTabWidth} + } + + def @InitFontFamily + { + font @Test + iffixed { fixedfont } + ifvarying { varyingfont } + ifsymbol { symbolfont } + } + + def @InitSize + { + size @Test + iffixed { fixedsize } + ifvarying { varyingsize } + ifsymbol { symbolsize } + } + + def @InitLine + { + line @Test + iffixed { fixedline } + ifvarying { varyingline } + ifsymbol { symbolline } + } + + def @S # for formatting C strings + right x + { + "\"" & + strings @Test + iffixed { fixedstrings } + ifvarying { varyingstrings } + ifsymbol { symbolstrings } + @Font x + & "\"" + } + + def "`" + { + style @Case { + symbol @Yield { "`" } + else @Yield { "'" } + } + } + + def @L # for formatting C character literals + right x + { + ` & + strings @Test + iffixed { fixedstrings } + ifvarying { varyingstrings } + ifsymbol { symbolstrings } + @Font x + & ' + } + + def @Ident # for formatting C identifiers + { + identifiers @Test + iffixed { fixedidentifiers } + ifvarying { varyingidentifiers } + ifsymbol { symbolidentifiers } + } + + def @C # for formatting C comments + right x + { + comments @Test + iffixed { fixedcomments } + ifvarying { varyingcomments } + ifsymbol { symbolcomments } + @Font x + } + + def @K # for formatting C keywords + right x + { + keywords @Test + iffixed { fixedkeywords } + ifvarying { varyingkeywords } + ifsymbol { symbolkeywords } + @Font x + } + + def @N # for formatting C numbers + right x + { + numbers @Test + iffixed { fixednumbers } + ifvarying { varyingnumbers } + ifsymbol { symbolnumbers } + @Font x + } + + def @O # for formatting C operators + right x + { + operators @Test + iffixed { fixedoperators } + ifvarying { varyingoperators } + ifsymbol { symboloperators } + @Font x + } + + def @A # get characters from the Adobe Symbol font + left sym + right x + { + style @Case { + symbol @Yield { { Symbol Base } @Font @Char sym } + else @Yield { x } + } + } + + macro "$>" { {} & } + + def "$$" { "#" } + + def "0" { @N "0" } + def "1" { @N "1" } + def "2" { @N "2" } + def "3" { @N "3" } + def "4" { @N "4" } + def "5" { @N "5" } + def "6" { @N "6" } + def "7" { @N "7" } + def "8" { @N "8" } + def "9" { @N "9" } + + def "!" { @O "!" } + def "%" { @O "%" } + def "^" { @O "^" } + def "&" { @O "&" } + def "*" { asteriskmath @A @O "*" } + def "(" { @O "(" } + def ")" { @O ")" } + def "-" { minus @A @O "-" } + def "+" { plus @A @O "+" } + def "=" { equal @A @O "=" } + def "${" { @O "{" } + def "$}" { @O "}" } + def "|" { @O "|" } + def "~" { @O "~" } + def "[" { @O "[" } + def "]" { @O "]" } + def ";" { @O ";" } + def "'" { @O "'" } + def ":" { @O ":" } + def "<" { less @A @O "<" } + def ">" { greater @A @O ">" } + def "?" { @O "?" } + def "," { @O "," } + def "." { @O "." } + def "/" { @O "/" } + def "->" { arrowright @A @O "->" } + def "++" { { + }{ + } } + def "--" { { - }{ - } } + def ".*" { { . }{ * } } + def "->*" { { ->}{ * } } + def "<<" { { < }{ < } } + def ">>" { { > }{ > } } + def "<=" { lessequal @A @O "<=" } + def ">=" { greaterequal @A @O ">=" } + def "==" { { = }{ = } } + def "!=" { notequal @A @O "!=" } + def "&&" { { & }{ & } } + def "||" { { | }{ | } } + def "*=" { { * }{ = } } + def "/=" { { / }{ = } } + def "%=" { { % }{ = } } + def "+=" { { + }{ = } } + def "-=" { { - }{ = } } + def "<<=" { { <<}{ = } } + def ">>=" { { >>}{ = } } + def "&=" { { & }{ = } } + def "^=" { { ^ }{ = } } + def "|=" { { | }{ = } } + def "::" { { : }{ : } } + + def asm { @K "asm" } + def auto { @K "auto" } + def break { @K "break" } + def case { @K "case" } + def catch { @K "catch" } + def char { @K "char" } + def class { @K "class" } + def const { @K "const" } + + def continue { @K "continue" } + def default { @K "default" } + def delete { @K "delete" } + def do { @K "do" } + def double { @K "double" } + def else { @K "else" } + def enum { @K "enum" } + def extern { @K "extern" } + + def float { @K "float" } + def for { @K "for" } + def friend { @K "friend" } + def goto { @K "goto" } + def if { @K "if" } + def inline { @K "inline" } + def int { @K "int" } + def long { @K "long" } + + def new { @K "new" } + def operator { @K "operator" } + def private { @K "private" } + def protected { @K "protected" } + def public { @K "public" } + def register { @K "register" } + def return { @K "return" } + def short { @K "short" } + + def signed { @K "signed" } + def sizeof { @K "sizeof" } + def static { @K "static" } + def struct { @K "struct" } + def switch { @K "switch" } + def template { @K "template" } + def this { @K "this" } + def throw { @K "throw" } + + def try { @K "try" } + def typedef { @K "typedef" } + def union { @K "union" } + def unsigned { @K "unsigned" } + def virtual { @K "virtual" } + def void { @K "void" } + def volatile { @K "volatile" } + def while { @K "while" } + + def @EvaluateCp right x + { + { @InitFontFamily Base } @Font + { @Ident @InitSize } @Font + { @InitLine lines } @Break x + } + + { @InitFontFamily Base } @Font { @Ident @InitSize } @Font + { @InitLine lines } @Break @Body + + @End @CP + +@End @CPSetup |