]> code.delx.au - gnu-emacs/blob - etc/srecode/wisent.srt
71fb7594483999a25cde9a6578b07a167b3da01a
[gnu-emacs] / etc / srecode / wisent.srt
1 ;; wisent.srt --- SRecode templates for Emacs/WISENT grammar files.
2
3 ;; Copyright (C) 2007-2015 Free Software Foundation, Inc.
4
5 ;; Author: Eric M. Ludlam <eric@siege-engine.com>
6
7 ;; This file is part of GNU Emacs.
8
9 ;; GNU Emacs is free software: you can redistribute it and/or modify
10 ;; it under the terms of the GNU General Public License as published by
11 ;; the Free Software Foundation, either version 3 of the License, or
12 ;; (at your option) any later version.
13
14 ;; GNU Emacs is distributed in the hope that it will be useful,
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ;; GNU General Public License for more details.
18
19 ;; You should have received a copy of the GNU General Public License
20 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
21
22 set mode "wisent-grammar-mode"
23 set comment_start ";;"
24 set comment_prefix ";;"
25 set comment_end ""
26
27 context file
28
29 template empty :file :user :time
30 "Insert a skeleton for a grammar file."
31 ----
32 {{>:filecomment}}
33
34 ;;; Commentary:
35 ;;
36 ;; Parser for {{?TARGETMODE}} mode
37
38 %languagemode {{TARGETMODE}}-mode
39 %parsetable wisent-{{TARGETMODE}}-parser-tables
40 %keywordtable wisent-{{TARGETMODE}}-keywords
41 %tokentable wisent-{{TARGETMODE}}-tokens
42 %languagemode {{TARGETMODE}}-mode
43 %setupfunction wisent-{{TARGETMODE}}-default-setup
44
45 %start goal
46
47 ;;; KEYWORDS
48 %type <keyword>
49
50 %%
51
52 goal
53 : {{^}}
54 ;
55
56 %%
57 (define-lex wisent-{{TARGETMODE}}-lexer
58 "Lexical analyzer to handle {{TARGETMODE}} buffers."
59 ;; semantic-lex-newline
60 semantic-lex-ignore-whitespace
61 semantic-lex-ignore-newline
62 semantic-lex-ignore-comments
63
64 semantic-lex-default-action
65 )
66
67 ;; {{FILENAME}} ends here
68 ----
69
70 context declaration
71
72 template function
73 ----
74 {{?NAME}}
75 : {{^}}
76 ;
77 ----
78 bind "f"
79
80 template keyword
81 ----
82 %keyword {{?NAME:upcase}} "{{NAME:downcase}}"
83 %put {{NAME:upcase}} summary "{{NAME}} {{^}}"
84 ----
85 bind "k"
86
87 template token
88 ----
89 %type <{{?LEXTOKEN}}>
90 %token <{{LEXTOKEN}}> {{LEXTOKEN}}
91 ----
92 bind "t"
93
94 ;; end