Source

semantic / make.bnf

Full commit
youngs c4e959a 
michaels a663240 
andyp 52135bf 
michaels a663240 



















andyp 52135bf 






youngs c4e959a 


youngs ff294d3 


michaels a663240 









youngs ff294d3 

andyp 52135bf 
youngs ff294d3 
andyp 52135bf 
youngs ff294d3 

michaels a663240 
youngs ff294d3 


















andyp 52135bf 









youngs ff294d3 



andyp 52135bf 
youngs ff294d3 
michaels a663240 

andyp 52135bf 
michaels a663240 


youngs ff294d3 
michaels a663240 

andyp 52135bf 





michaels a663240 

andyp 52135bf 






michaels a663240 

andyp 52135bf 

michaels a663240 


youngs ff294d3 
michaels a663240 
youngs ff294d3 
michaels a663240 




youngs ff294d3 
michaels a663240 



# Simple BNF notation for Makefiles.
#
# Copyright (C) 1999, 2000, 2001 Eric M. Ludlam
#
# Author: Eric M. Ludlam <zappo@gnu.org>
# X-RCS: $Id$
#
# make.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.
#
# $Log$
# Revision 1.7  2001/04/13 02:01:59  zappo
# Added a keyword table, and several new tokens and summaries.
# Added support for the include macro.
#
# Revision 1.6  2001/01/24 21:09:21  zappo
# Added support for new token formats that use ASSOC.
#
# Revision 1.5  2000/11/13 21:06:42  zappo
# Fixed comment.
#
# Revision 1.4  2000/09/09 02:09:35  zappo
# Use new bnf settings section.
#
# Revision 1.3  2000/07/01 18:19:01  zappo
# Updated for new elements in the tokens.
#
# Revision 1.2  2000/06/13 14:38:26  zappo
# Added special equals and colon NTs
#
# Revision 1.1  2000/06/11 02:18:47  zappo
# Initial revision
#

%start         Makefile
%outputfile    semantic-make.el
%keywordtable  semantic-make-keyword-table
%parsetable    semantic-toplevel-make-bovine-table
%languagemode  makefile-mode
%setupfunction semantic-default-make-setup
%quotemode     backquote

%(setq semantic-flex-enable-newlines t
       semantic-symbol->name-assoc-list '((variable . "Variables")
					  (function . "Rules")
					  (include . "Dependencies"))
       semantic-case-fold t
       semantic-flex-syntax-modifications '((?. "_")
					    (?= ".")
					    (?/ "_")
					    (?\t ".")
					    (?( "_")
					    (?) "_")
					    (?{ "_")
					    (?} "_")
					    (?$ "_")
					    )
       semantic-flex-enable-newlines t
       imenu-create-index-function 'semantic-create-imenu-index
       )%

%token IF "if"
%token ELSE "else"
%token ENDIF "endif"
%put { IF ELSE ENDIF } summary "Conditional: if (expression) ... else ... endif"
%token INCLUDE "include"
%put INCLUDE summary "Macro: include filename1 filename2 ..."

%token COLON punctuation ":"
%token PLUS punctuation "+"
%token EQUAL punctuation "="

Makefile : variable
	 | rule
	 | conditional
	 | include
	 ;

variable: symbol equals elements
	  (,$1 variable nil ,$3 nil nil)
	;

rule: symbol colons elements commands
      (,$1 function nil ,$3 nil nil)
    ;

conditional: IF symbol newline
	     ( )
	   | ELSE newline
	     ( )
	   | ENDIF newline
	     ( )
	   ;

include: INCLUDE symbol elements
	 (,$2 include nil)
       ;

equals: COLON EQUAL ()
      | PLUS EQUAL ()
      | EQUAL ()
      ;

colons: COLON COLON ()
      | COLON ()
      ;

elements: symbol elements
	  ( ,$1 ,@$2 )
	| symbol newline
	  ( ,$1 )
	| newline
	  (  )
	;
  
commands: shell-command newline commands
	  ( ,$1 ,@$2 )
	| EMPTY
	  ( )
	;

# End