# Skeleton for creating BNF files. # # Copyright (C) 2001 Eric M. Ludlam # # Author: # X-RCS: $Id: skeleton.bnf,v 1.1 2001/10/08 20:34:56 zappo Exp $ # # .bnf 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 2, or (at your option) # any later version. # # This software 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; see the file COPYING. If not, write to the # Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # # Replace occurance of "skeleton" with the name of your language. # Replace start, and scopestart names with something apropriate for # your language. %start starting_rule %scopestart start_scope_rule %outputfile semantic-skel.el %parsetable semantic-toplevel-skeleton-bovine-table %keywordtable semantic-skeleton-keyword-table %languagemode skeleton-mode %setupfunction semantic-default-skeleton-setup # Commented out lines below are generally considered optional # See the Emacs Doc for the symbols used below %(setq semantic-symbol->name-assoc-list '( (variable . "Variables") (type . "Types") (function . "Functions") (include . "Includes") (package . "Exports")) #semantic-expand-nonterminal 'semantic-expand-skeleton-nonterminal #semantic-flex-extensions semantic-flex-skeleton-extensions #semantic-dependency-include-path semantic-default-skeleton-path imenu-create-index-function 'semantic-create-imenu-index semantic-type-relation-separator-character '(".") semantic-command-separation-character ";" document-comment-start "/*" document-comment-line-prefix " *" document-comment-end " */" ;; Semantic navigation inside 'type children senator-step-at-token-ids '(function variable) )% # Make common keywords into tokens returned by the lexer. # This improves accuracy, makes this file more readable. # Use SOMETHING in your rules as a terminal %token SOMETHING "something" # Adding a summary help's `eldoc' mode display useful information # in your language. %put SOMETHING summary "Describe something" # Turn common punctuation elements into tokens. # This does not effect lexical analysis or accuracy, # but does make your file more readable. %token PERIOD punctuation "." starting_rule : something ; start_scope_rule : something_else ; something : SOMETHING ; # Examples from c.bnf: opt-expression : expression | EMPTY ( nil ) ; # This expression parses over expressions, but doesn't return # anything expression : number ( ) | symbol ( ) | string ( ) | semantic-list ( ) | punctuation "[-+*/%^|&]" expression # ( nil ) ;