26 from pyleri
import Choice
27 from pyleri
import Optional
28 from pyleri
import Grammar
29 from pyleri
import Keyword
30 from pyleri
import Repeat
31 from pyleri
import Sequence
32 from pyleri
import Regex
33 from pyleri
import List
34 from pyleri
import Prio
35 from pyleri
import end_of_statement
40 r_start = Regex(
"^\*")
41 r_meas_time = Regex(
"[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{9}")
44 r_attr_start = Regex(
"^\|")
45 r_attr_name = Regex(
"[A-Za-z0-9]+")
46 r_attr = Optional(Regex(
"[^|*].*"))
48 r_hist_start = Regex(
"^\|")
49 r_hist_key = Optional(Regex(
"[-]{0,1}[0-9]+"))
50 r_hist_sep = Regex(
":")
51 r_hist_val = Regex(
"[0-9]+")
52 r_hist_end = Regex(
"\|")
69 START = Repeat(Sequence(
70 r_start, Sequence(r_meas_time,
72 Optional(Repeat(Sequence(r_hist_start,
77 Repeat(Sequence(r_attr_start,
90 name = node.element.name
if hasattr(node.element,
'name')
else None 92 self.
meas = copy.copy({
"time":
None,
"measurement":
None,
"params": []})
95 if name ==
"r_meas_time":
96 self.
meas[
"time"] = node.string
98 self.
meas[
"measurement"] = node.string
99 elif name ==
"r_attr_start":
100 self.
meas[
"params"].append({})
101 elif name ==
"r_attr_name":
104 elif name ==
"r_attr":
117 start = res.tree.children[0]
if res.tree.children
else res.tree
125 for measurement
in fileinput.input():
126 if measurement[0] ==
'*':
131 mstr =
"".join(bunch)
132 res = grammar.parse(mstr)
140 bunch.append(measurement)
142 bunch.append(measurement)
144 if __name__ ==
'__main__':
146 res = grammar.parse(string)
static M0_UNUSED void print(struct m0_be_list *list)
def visit_children(children, visitor)
def visit_node(node, children, visitor)