-
Notifications
You must be signed in to change notification settings - Fork 0
/
mygrammar.grm
88 lines (88 loc) · 7.37 KB
/
mygrammar.grm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
(CFG "IotaProg'" [
ProductionRule "IotaProg'" [Nonterminal "IotaProg"],
ProductionRule "IotaProg" [Nonterminal "Rules"],
ProductionRule "IotaProg" [Nonterminal "Rule"],
ProductionRule "Rules" [Terminal "rules", Terminal "string_literal", Nonterminal "ZeroOrMoreDecls", Nonterminal "OneOrMoreRules", Terminal "end"],
ProductionRule "OneOrMoreRules" [Nonterminal "Rule"],
ProductionRule "OneOrMoreRules" [Nonterminal "Rules"],
ProductionRule "OneOrMoreRules" [Nonterminal "Rule", Nonterminal "OneOrMoreRules"],
ProductionRule "OneOrMoreRules" [Nonterminal "Rules", Nonterminal "OneOrMoreRules"],
ProductionRule "Rule" [Terminal "rule", Terminal "string_literal", Nonterminal "ZeroOrMoreDecls", Nonterminal "EventHandler", Terminal ";", Nonterminal "OneOrMorePredicateActions", Terminal "end"],
ProductionRule "ZeroOrMoreDecls" [],
ProductionRule "ZeroOrMoreDecls" [Nonterminal "Decl", Nonterminal "ZeroOrMoreDecls"],
ProductionRule "Decl" [Terminal "device", Terminal "identifier", Terminal ":", Nonterminal "OneOrMoreCapabilities", Terminal ";"],
ProductionRule "Decl" [Terminal "timer", Terminal "identifier", Terminal ";"],
ProductionRule "Decl" [Terminal "input", Terminal "identifier", Terminal ":", Terminal "identifier", Terminal ";"],
ProductionRule "Decl" [Terminal "output", Terminal "identifier", Terminal ":", Terminal "identifier", Terminal ";"],
ProductionRule "Decl" [Terminal "output", Terminal "identifier", Terminal ":", Terminal "(", Nonterminal "OneOrMoreIdentifiers", Terminal ")", Terminal ";"],
ProductionRule "OneOrMoreCapabilities" [Terminal "identifier"],
ProductionRule "OneOrMoreCapabilities" [Terminal "identifier", Terminal ".", Terminal "identifier"],
ProductionRule "OneOrMoreCapabilities" [Terminal "identifier", Terminal ",", Nonterminal "OneOrMoreCapabilities"],
ProductionRule "OneOrMoreCapabilities" [Terminal "identifier", Terminal ".", Terminal "identifier", Terminal ",", Nonterminal "OneOrMoreCapabilities"],
ProductionRule "OneOrMoreIdentifiers" [Terminal "identifier"],
ProductionRule "OneOrMoreIdentifiers" [Terminal "identifier", Terminal ",", Nonterminal "OneOrMoreIdentifiers"],
ProductionRule "EventHandler" [Nonterminal "FieldOrTimer", Terminal "[", Terminal ".", Terminal "~>", Terminal "]"],
ProductionRule "EventHandler" [Nonterminal "FieldOrTimer", Terminal "[", Terminal ".", Terminal "~>", Nonterminal "Constant", Terminal "]"],
ProductionRule "EventHandler" [Nonterminal "FieldOrTimer", Terminal "[", Nonterminal "Constant", Terminal "~>", Terminal "]"],
ProductionRule "EventHandler" [Nonterminal "FieldOrTimer", Terminal "[", Nonterminal "Constant", Terminal "~>", Nonterminal "Constant", Terminal "]"],
ProductionRule "EventHandler" [Terminal "any", Nonterminal "Group", Terminal "(", Terminal "identifier", Terminal "->", Nonterminal "EventHandler", Terminal ")"],
ProductionRule "OneOrMorePredicateActions" [Nonterminal "Predicate", Terminal ";", Nonterminal "Actions"],
ProductionRule "OneOrMorePredicateActions" [Nonterminal "Predicate", Terminal ";", Nonterminal "Actions", Terminal "|", Nonterminal "OneOrMorePredicateActions"],
ProductionRule "Predicate" [Nonterminal "OrPred"],
ProductionRule "Predicate" [Terminal "all", Nonterminal "Group", Terminal "(", Terminal "identifier", Terminal "->", Nonterminal "Predicate", Terminal ")"],
ProductionRule "Predicate" [Terminal "exists", Nonterminal "Group", Terminal "(", Terminal "identifier", Terminal "->", Nonterminal "Predicate", Terminal ")"],
ProductionRule "OrPred" [Nonterminal "OrPred", Terminal "||", Nonterminal "AndPred"],
ProductionRule "OrPred" [Nonterminal "AndPred"],
ProductionRule "AndPred" [Nonterminal "AndPred", Terminal "&&", Nonterminal "EqNeqPred"],
ProductionRule "AndPred" [Nonterminal "EqNeqPred"],
ProductionRule "EqNeqPred" [Nonterminal "EqNeqPred", Terminal "==", Nonterminal "CompExpr"],
ProductionRule "EqNeqPred" [Nonterminal "EqNeqPred", Terminal "!=", Nonterminal "CompExpr"],
ProductionRule "EqNeqPred" [Nonterminal "CompExpr"],
ProductionRule "CompExpr" [Nonterminal "CompExpr", Terminal "<", Nonterminal "AdditiveExpr"],
ProductionRule "CompExpr" [Nonterminal "CompExpr", Terminal "<=", Nonterminal "AdditiveExpr"],
ProductionRule "CompExpr" [Nonterminal "CompExpr", Terminal ">", Nonterminal "AdditiveExpr"],
ProductionRule "CompExpr" [Nonterminal "CompExpr", Terminal ">=", Nonterminal "AdditiveExpr"],
ProductionRule "CompExpr" [Nonterminal "AdditiveExpr"],
ProductionRule "AdditiveExpr" [Nonterminal "AdditiveExpr", Terminal "+", Nonterminal "MultiplicativeExpr"],
ProductionRule "AdditiveExpr" [Nonterminal "AdditiveExpr", Terminal "-", Nonterminal "MultiplicativeExpr"],
ProductionRule "AdditiveExpr" [Nonterminal "MultiplicativeExpr"],
ProductionRule "MultiplicativeExpr" [Nonterminal "MultiplicativeExpr", Terminal "*", Nonterminal "UnaryExpr"],
ProductionRule "MultiplicativeExpr" [Nonterminal "MultiplicativeExpr", Terminal "/", Nonterminal "UnaryExpr"],
ProductionRule "MultiplicativeExpr" [Nonterminal "UnaryExpr"],
ProductionRule "UnaryExpr" [Terminal "-", Nonterminal "PrimaryExpr"],
ProductionRule "UnaryExpr" [Terminal "!", Nonterminal "PrimaryExpr"],
ProductionRule "UnaryExpr" [Nonterminal "PrimaryExpr"],
ProductionRule "PrimaryExpr" [Terminal "true"],
ProductionRule "PrimaryExpr" [Terminal "false"],
ProductionRule "PrimaryExpr" [Terminal "number_literal"],
ProductionRule "PrimaryExpr" [Terminal "string_literal"],
ProductionRule "PrimaryExpr" [Terminal "identifier"],
ProductionRule "PrimaryExpr" [Terminal "identifier", Terminal ".", Terminal "identifier"],
ProductionRule "PrimaryExpr" [Terminal "(", Nonterminal "Predicate", Terminal ")"],
ProductionRule "Constant" [Terminal "identifier"],
ProductionRule "Constant" [Terminal "number_literal"],
ProductionRule "Actions" [],
ProductionRule "Actions" [Nonterminal "OneOrMoreActions"],
ProductionRule "OneOrMoreActions" [Nonterminal "Action"],
ProductionRule "OneOrMoreActions" [Nonterminal "Action", Terminal ",", Nonterminal "OneOrMoreActions"],
ProductionRule "Action" [Nonterminal "FieldOrTimer", Terminal ":=", Nonterminal "AdditiveExpr"],
ProductionRule "Action" [Terminal "identifier", Terminal "(", Nonterminal "OneOrMoreAdditiveExprs", Terminal ")"],
ProductionRule "Action" [Terminal "start", Terminal "identifier", Terminal "at", Nonterminal "AdditiveExpr"],
ProductionRule "Action" [Terminal "stop", Terminal "identifier"],
ProductionRule "Action" [Terminal "tick", Terminal "identifier"],
ProductionRule "Action" [Terminal "map", Nonterminal "Group", Terminal "(", Terminal "identifier", Terminal "->", Nonterminal "Action", Terminal ")"],
ProductionRule "OneOrMoreAdditiveExprs" [Nonterminal "AdditiveExpr"],
ProductionRule "OneOrMoreAdditiveExprs" [Nonterminal "AdditiveExpr", Terminal ",", Nonterminal "OneOrMoreAdditiveExprs"],
ProductionRule "FieldOrTimer" [Terminal "identifier"],
ProductionRule "FieldOrTimer" [Terminal "identifier", Terminal ".", Terminal "identifier"],
ProductionRule "Group" [Terminal "identifier"],
ProductionRule "Group" [Terminal "{", Nonterminal "zero_or_more_device_identifiers", Terminal "}"],
ProductionRule "zero_or_more_device_identifiers" [],
ProductionRule "zero_or_more_device_identifiers" [Nonterminal "one_or_more_device_identifiers"],
ProductionRule "one_or_more_device_identifiers" [Terminal "identifier"],
ProductionRule "one_or_more_device_identifiers" [Terminal "identifier", Terminal ",", Nonterminal "one_or_more_device_identifiers"]
]
,
TokenAttrs [],
ProdRuleAttrs [],
"$")