[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