1 from pyparsing import *
2 import sys
3
5 """
6 SL parser
7 """
8
37
38
40 """
41 parses a string
42 returns a pyparsing.ParseResults
43 """
44
45 m = None
46 try:
47 m = self.bnf.parseString(str(string))
48 except ParseException, err:
49 print err.line
50 print " "*(err.column-1)+"|"
51 print err
52
53 except Exception, err:
54 print "Unknown Parsing Exception"
55 print err
56
57
58 return m
59
61 """
62 parses a file
63 returns a pyparsing.ParseResults
64 """
65
66 try:
67 m = self.bnf.parseFile(file)
68 except ParseException, err:
69 print err.line
70 print " "*(err.column-1)+"|"
71 print err
72 sys.exit(-1)
73 except Exception, err:
74 print "Unkwonw Exception"
75 print err
76 sys.exit(-1)
77
78 return m
79
80 if __name__ == "__main__":
81 p = SL0Parser()
82 msg = p.parse("((prueba :name (set (bla uno) (bla dos))))")
83
84
85 print msg.asXML()
86 print msg.asList()
87
88
89
90
91 print msg.prueba.name.set
92 for cosa in msg.prueba.name.set:
93 print cosa
94 """
95 print msg.prueba.name.set.bla
96 print msg.prueba.name.set.bla.keys()
97 print msg.prueba.name.set.bla.values()
98 print msg.prueba.name.set.bla[0]
99 print "--"
100 print msg.prueba.name.set.values()
101 """
102 print "--"
103
104 slgrande = """((result
105 (search
106 (set
107 (df-agent-description
108 :name
109 (agent-identifier
110 :name scheduler-agent@foo.com
111 :addresses (sequence iiop://foo.com/acc))
112 :ontology (set meeting-scheduler FIPA-Agent-Management)
113 :languages (set FIPA-SL0 FIPA-SL1 KIF)
114 :services (set
115 (service-description
116 :name profiling
117 :type meeting-scheduler-service)
118 (service-description
119 :name profiling
120 :type user-profiling-service)))))))"""
121 slgrande="""((result (set (ams-agent-description
122 :name (agent-identifier
123 :name agent@alien3.dsic.upv.es
124 :addresses
125 (sequence
126 xmpp://agent@alien3.dsic.upv.es
127 )
128 )
129
130 :ownership agent@alien3.dsic.upv.es
131 )
132 (ams-agent-description
133 :name (agent-identifier
134 :name ams.alien3.dsic.upv.es
135 :addresses
136 (sequence
137 xmpp://ams.alien3.dsic.upv.es
138 )
139 )
140
141 :ownership SPADE
142 :state active)
143 (ams-agent-description
144 :name (agent-identifier
145 :name df.alien3.dsic.upv.es
146 :addresses
147 (sequence
148 xmpp://df.alien3.dsic.upv.es
149 )
150 )
151
152 :ownership SPADE
153 :state active)
154 )))"""
155 from DF import DfAgentDescription
156 msg = p.parse(slgrande)
157 print msg
158 for dfd in msg.result.search.set:
159 d = DfAgentDescription()
160 d.loadSL0(dfd[1])
161 print str(d)
162