view etc/srecode/wisent.srt @ 105669:68dd71358159

* alloc.c: Do not define struct catchtag. * eval.c: Move struct catchtag definition ... * lisp.h: ... here. * image.c: Move png.h #include earlier to avoid warnings. * xterm.c: * xsmfns.c: * xselect.c: * xrdb.c: * xmenu.c: * xftfont.c: * xfont.c: * xfns.c: * xfaces.c: * xdisp.c: * window.c: * widget.c: * w32xfns.c: * w32uniscribe.c: * w32term.c: * w32select.c: * w32reg.c: * w32proc.c: * w32menu.c: * w32inevt.c: * w32heap.c: * w32font.c: * w32fns.c: * w32console.c: * w32.c: * w16select.c: * vm-limit.c: * unexsol.c: * unexec.c: * unexcw.c: * unexaix.c: * undo.c: * tparam.c: * textprop.c: * terminfo.c: * terminal.c: * termcap.c: * term.c: * syntax.c: * sound.c: * sheap.c: * search.c: * scroll.c: * region-cache.c: * regex.c: * ralloc.c: * process.c: * print.c: * msdos.c: * minibuf.c: * menu.c: * marker.c: * macros.c: * keymap.c: * keyboard.c: * intervals.c: * insdel.c: * indent.c: * gtkutil.c: * ftxfont.c: * ftfont.c: * fringe.c: * frame.c: * fontset.c: * font.c: * fns.c: * floatfns.c: * filelock.c: * fileio.c: * emacs.c: * editfns.c: * dosfns.c: * doprnt.c: * doc.c: * dispnew.c: * dired.c: * dbusbind.c: * data.c: * composite.c: * coding.c: * cmds.c: * cm.c: * chartab.c: * charset.c: * character.c: * ccl.c: * category.c: * casetab.c: * casefiddle.c: * callproc.c: * callint.c: * bytecode.c: * buffer.c: * atimer.c: Include setjmp.h. (Bug#4643) * xlwmenu.c: * lwlib.c: * lwlib-utils.c: * lwlib-Xm.c: * lwlib-Xlw.c: * lwlib-Xaw.c: Include setjmp.h.
author Dan Nicolaescu <dann@ics.uci.edu>
date Mon, 19 Oct 2009 04:27:09 +0000
parents c6cabc736460
children 1d1d5d9bd884
line wrap: on
line source

;; wisent.srt --- SRecode templates for Emacs/WISENT grammar files.

;; Copyright (C) 2007, 2008, 2009 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 <http://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 analzer 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