File: stratego.ssh

package info (click to toggle)
a2ps 1%3A4.14-1.1%2Bdeb6u1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 12,324 kB
  • ctags: 4,908
  • sloc: ansic: 26,659; sh: 13,155; lex: 2,286; perl: 1,156; yacc: 757; makefile: 605; lisp: 398; ada: 263; objc: 189; f90: 109; ml: 85; sql: 74; pascal: 57; modula3: 33; haskell: 32; sed: 30; java: 29; python: 24
file content (108 lines) | stat: -rw-r--r-- 2,905 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Style sheet for stratego
# Copyright (c) 2002 Nicolas Tisserand
#

#
# This file is part of a2ps.
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING.  If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#

#
# This style sheet is based on the stratego grammar :
# http://www.cwi.nl/~mdejonge/grammar-base/stratego.0.7/index.html
#

style "stratego" is

written by "Nicolas Tisserand <tisser_n@lrde.epita.fr>"

version is 1.0

requires a2ps 4.9.5

documentation is
	"Highlights stratego source code"
end documentation

first alphabet is
	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.-_"
second alphabet is
	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.-_'"
case sensitive

keywords in Keyword_strong are
	"all", "constructors", "fail", "id", "imports", "in", "let", "module",
	"not", "one", "overlays", "override", "prim", "rules", "script",
	"signature", "some", "sorts", "strategies", "stratego", "test",
	"thread", "where"
end keywords

# common keywords from the stratego library
keywords in Keyword are
	"try", "if", "ior", "eq", "repeat", "repeat-until",
	"while", "do-while", "for", "topdown", "bottomup", "downup",
	"minus", "plus", "add", "subt", "mul", "div", "mod",
	"geq", "gt", "lt", "leq", "max", "min", "int",
	"is-int", "int-to-string", "string-to-int",
	"new", "is-string", "lower-case", "upper-case",
	"init-name-space", "exit-name-space", "begin-scope", "end-scope",
	"scope", "assert", "rewrite",
	"list", "map", "is-list", "length", "fetch", "lookup",
	"last", "init", "copy",
	"take", "take-while", "take-until",
	"drop", "drop-while", "drop-until", 
	"substitute", "diff", "pattern-match", "unify", "equal",
	"print", "WriteToTextFile", "WriteToBinaryFile",
	"open-file", "append-file", "close-file",
	"say", "echo", "trace", "error", "fatal-error",
	"printchar", "print-string", "iowrap",
	"pipe", "exit", "call"
end keywords

operators in Keyword_strong are
	-> \rightarrow,
	-->,
	=,
	#,
	@,
	_,
	|,	
	],
	[,
	^,
	},
	{ ,
	"+" ,
	"<" ,
	"<+" ,
	"<++" ,
	">" ,
	"+>" ,
	"++>" ,
	(/^([\t ]*[a-zA-Z0-9'._\-]*)([\t ]*[:=])/ \1 Label_strong, \2 Plain)
end operators

sequences are
	"/*" Comment "*/",
	"//" Comment,
	"(*" Comment "*)",
	"\\literate" Comment "\\begin{code}",
	"\\end{code}" Comment "\\begin{code}",
	C-string
end sequences

end style