Source

semantic / skeleton.bnf

# Skeleton for creating BNF files.
#
# Copyright (C) 2001 Eric M. Ludlam
#
# Author: 
# X-RCS: $Id$
#
# .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 )
	   ;
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.