blob: 7e8726cbac1712ca174168fb93c7fa4889c6bc39 (
plain)
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
|
;; wisent.srt --- SRecode templates for Emacs/WISENT grammar files.
;; Copyright (C) 2007-2017 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <eric@siege-engine.com>
;; This file is part of GNU Emacs.
;; GNU Emacs 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 of the License, or
;; (at your option) any later version.
;; GNU Emacs 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 GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
set mode "wisent-grammar-mode"
set comment_start ";;"
set comment_prefix ";;"
set comment_end ""
context file
template empty :file :user :time
"Insert a skeleton for a grammar file."
----
{{>:filecomment}}
;;; Commentary:
;;
;; Parser for {{?TARGETMODE}} mode
%languagemode {{TARGETMODE}}-mode
%parsetable wisent-{{TARGETMODE}}-parser-tables
%keywordtable wisent-{{TARGETMODE}}-keywords
%tokentable wisent-{{TARGETMODE}}-tokens
%languagemode {{TARGETMODE}}-mode
%setupfunction wisent-{{TARGETMODE}}-default-setup
%start goal
;;; KEYWORDS
%type <keyword>
%%
goal
: {{^}}
;
%%
(define-lex wisent-{{TARGETMODE}}-lexer
"Lexical analyzer to handle {{TARGETMODE}} buffers."
;; semantic-lex-newline
semantic-lex-ignore-whitespace
semantic-lex-ignore-newline
semantic-lex-ignore-comments
semantic-lex-default-action
)
;; {{FILENAME}} ends here
----
context declaration
template function
----
{{?NAME}}
: {{^}}
;
----
bind "f"
template keyword
----
%keyword {{?NAME:upcase}} "{{NAME:downcase}}"
%put {{NAME:upcase}} summary "{{NAME}} {{^}}"
----
bind "k"
template token
----
%type <{{?LEXTOKEN}}>
%token <{{LEXTOKEN}}> {{LEXTOKEN}}
----
bind "t"
;; end
|