Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /ml-burg/trunk/burg-gram
ViewVC logotype

Annotation of /ml-burg/trunk/burg-gram

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2114 - (view) (download)

1 : monnier 249 (* burg-gram
2 :     **
3 :     ** ML-Yacc grammar for BURG.
4 :     *)
5 :    
6 :     structure A = BurgAST;
7 :     fun outputRaw s = print (s:string)
8 :    
9 :     %%
10 :    
11 :     %term K_EOF
12 :     | K_TERM
13 :     | K_START
14 :     | K_TERMPREFIX
15 :     | K_RULEPREFIX
16 :     | K_SIG
17 :     | K_COLON
18 :     | K_SEMICOLON
19 :     | K_COMMA
20 :     | K_LPAREN | K_RPAREN
21 :     | K_EQUAL
22 :     | K_PIPE
23 :     | PPERCENT of string list
24 :     | INT of int
25 :     | ID of string
26 :     | RAW of string list
27 :    
28 :     %nonterm full of A.spec_ast
29 :     | spec of A.spec_ast
30 :     | decl of A.decl_ast
31 :     | binding of (string * string option)
32 :     | cost of int list
33 :     | costtail of int list
34 :     | rulename of string
35 :     | pattern of A.pattern_ast
36 :     | patterntail of A.pattern_ast list
37 :     | decls of A.decl_ast list
38 :     | rules of A.rule_ast list
39 :     | rule of A.rule_ast
40 :     | bindinglist of (string * string option) list
41 :     | raw of unit
42 :     | prelude of unit
43 :     | postlude of unit
44 :    
45 :     %start full
46 :    
47 :     %pos int
48 :     %pure
49 :    
50 :     %eop K_EOF
51 :    
52 :     %name Burg
53 :    
54 :     %%
55 :    
56 :     full : decls PPERCENT rules PPERCENT
57 :     (A.SPEC{head=PPERCENT1,
58 :     decls=rev decls,
59 :     rules=rev rules,
60 :     tail=PPERCENT2})
61 :    
62 :     decls : (* empty *) ([])
63 :     | decls decl (decl :: decls)
64 :    
65 :     decl : K_TERM bindinglist (A.TERM (rev bindinglist))
66 :     | K_START ID (A.START ID)
67 :     | K_TERMPREFIX ID (A.TERMPREFIX ID)
68 :     | K_RULEPREFIX ID (A.RULEPREFIX ID)
69 :     | K_SIG ID (A.SIG ID)
70 :    
71 :    
72 :     bindinglist : binding ([binding])
73 :     | bindinglist K_PIPE binding
74 :     (binding :: bindinglist)
75 :    
76 :     binding : ID ((ID, NONE))
77 :     | ID K_EQUAL ID ((ID1, SOME ID2))
78 :    
79 :     rules : (* empty *) ([])
80 :     | rules rule (rule :: rules)
81 :    
82 :     rule : ID K_COLON pattern K_EQUAL rulename cost K_SEMICOLON
83 :     (A.RULE(ID, pattern, rulename, cost))
84 :    
85 :     rulename : ID (ID)
86 :    
87 :     pattern : ID (A.PAT(ID, []))
88 :     | ID K_LPAREN pattern patterntail K_RPAREN
89 :     (A.PAT(ID, pattern :: patterntail))
90 :    
91 :     patterntail : (* empty *) ([])
92 :     | K_COMMA pattern patterntail
93 :     (pattern :: patterntail)
94 :    
95 :    
96 :     cost : (* empty *) ([])
97 :     | K_LPAREN INT costtail K_RPAREN
98 :     (INT :: costtail)
99 :    
100 :     costtail : (* empty *) ([])
101 :     | K_COMMA INT costtail (INT :: costtail)

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0