[Commit] mint/grammars bnfgram.mnt,NONE,1.1 nickle.mnt,1.1,1.2

James LaMar commit at keithp.com
Tue Nov 30 21:30:46 PST 2004


Committed by: jlamar

Update of /local/src/CVS/mint/grammars
In directory home.keithp.com:/tmp/cvs-serv10844

Modified Files:
	nickle.mnt 
Added Files:
	bnfgram.mnt 
Log Message:
Added grammar for parser generator.


--- NEW FILE: bnfgram.mnt ---
tokens:

token       arrow        /->/
token       equals       /=/
token       lparen       /\(/
token       rparen       /\)/
token       token_t      /token/
token       skip_t       /skip/
token       rules        /rules:/
token       tokens       /tokens:/
token       precedences  /precedence:/
token       precedence_t /precedence/
token       left_t       /left/
token       right_t      /right/
token       nonassoc_t   /nonassoc/
skip        ws           /[ \t\n]/
token       lbrace       /\[/
token       rbrace       /\]/
token       rule_t       /rule/
token       id           /[A-Za-z][A-Za-z0-9]*/
token       colon        /:/
token       setlexer_t   /setlexer/
skip        comment      /#[^\n]*/
token       comma        /,/
token       regex        /\/([^\/]|\\]\/)*\//

precedence:


rules:

#
# Top level
#
rule (S : grammar_definition) -> 
    tokens
        (tokendecl_list : tokendecl_list)
    precedences
        (precdecl_list : precdecl_list)
    rules
        (ruledecl_list : ruledecl_list)

#
# Tokens section
#
rule (tokendecl_list : tokendecl_list_empty) ->
rule (tokendecl_list : tokendecl_list) -> (tokendecl : head) (tokendecl_list : tail)

rule (tokendecl : tokendecl) -> 
    token_t (id : name) (start_cond : start_cond) (regex : pattern) (lex_options : options)

rule (tokendecl : tokendecl_skip) ->
    skip_t (id : name) (start_cond : start_cond) (regex : pattern) (lex_options : options)

#
# Start conditions
#
rule (start_cond : none) ->
rule (start_cond : list) -> lparen (id_list : list) rparen

#
# Per-token options
#
rule (lex_options : none) ->
rule (lex_options : list) ->
    lbrace (lex_option_list : tail) rbrace

rule (lex_option_list : lex_option_single) -> (lex_option : head)
rule (lex_option_list : lex_option_list) -> (lex_option : head) comma (lex_option : tail)

rule (lex_option : psetlexer) -> setlexer_t equals (id : value)

#
# Precedence Section
#
rule (precdecl_list : precdecl_list_empty) -> 
rule (precdecl_list : precdecl_list) -> (precdecl : head) (precdecl_list : tail)

rule (precdecl : pleft) -> left_t (id_list : tokens)
rule (precdecl : pright) -> right_t (id_list : tokens)
rule (precdecl : pnonassoc) -> nonassoc_t (id_list : tokens)

#
# Rules section
#
rule (ruledecl_list : empty) ->
rule (ruledecl_list : ruledecl_list) -> (ruledecl : head) (ruledecl_list : tail)

rule (ruledecl : ruledecl) -> 
    rule_t lparen (id : nonterminal) colon (id : type) rparen arrow (prod_list : production)
    (options : options)

rule (prod_list : prod_list_empty) ->
rule (prod_list : prod_list) -> (prod_list : tail) (prod : head)

rule (prod : untagged) -> (id : symbol)
rule (prod : tagged) -> lparen (id : symbol) colon (id : name) rparen

rule (options : none) ->
rule (options : list) -> lbrace (option_list : tail) rbrace

rule (option_list : option_list_single) -> (option : head)
rule (option_list : option_list) -> (option : head) comma (option_list : tail)

rule (option : psetlexer) -> setlexer_t equals (id : value)
rule (option : pprecedence) -> precedence_t equals (id : value)

rule (id_list : id_list_single) -> (id : head)
rule (id_list : id_list) -> (id : head) (id_list : tail)

Index: nickle.mnt
===================================================================
RCS file: /local/src/CVS/mint/grammars/nickle.mnt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- nickle.mnt	29 Nov 2004 14:53:27 -0000	1.1
+++ nickle.mnt	1 Dec 2004 05:30:43 -0000	1.2
@@ -39,6 +39,7 @@
 token                   rbrack           /\}/
 token                   id               /[a-zA-Z_][a-zA-Z0-9_]*/
 token                   ampersand        /&/
+token                   comma            /,/
 skip                    whitespace       /[ 	
 ]/
 




More information about the Commit mailing list