📄 aclparser.java
字号:
/* Generated By:JavaCC: Do not edit this line. ACLParser.java */
package jade.lang.acl;
//#APIDOC_EXCLUDE_FILE
import java.io.*;
import jade.core.AID;
/**
Javadoc documentation for the file
@author Fabio Bellifemine - CSELT S.p.A
@version $Date: 2005-04-15 17:50:12 +0200 (Fri, 15 Apr 2005) $ $Revision: 5671 $
*/
public class ACLParser implements ACLParserConstants {
ACLMessage msg = new ACLMessage(ACLMessage.NOT_UNDERSTOOD);
public static void main(String args[]) throws ParseException {
ACLParser parser = new ACLParser(System.in);
while (true) {
try {
ACLMessage result = parser.Message();
System.out.println(result);
}
catch(ParseException pe) {
pe.printStackTrace();
System.exit(1);
}
}
}
public static ACLParser create() {
Reader r = new StringReader("");
return new ACLParser(r);
}
public ACLMessage parse(Reader text) throws ParseException {
ReInit(text);
return Message();
}
public AID parseAID(Reader text) throws ParseException {
if(text != null) {
ReInit(text);
}
token_source.SwitchTo(AIDSTATE);
AID result = AgentIdentifier();
token_source.SwitchTo(DEFAULT);
return result;
}
private String trimQuotes(String s) throws ParseException {
s = s.trim();
if(s.startsWith("\"") && (s.endsWith("\"")))
s = s.substring(1, s.length() - 1);
return unescape(s);
}
private String unescape(String s) throws ParseException {
StringBuffer result = new StringBuffer(s.length());
int i;
for( i=0; i<s.length()-1; i++) {
if( s.charAt(i) == '\\' && s.charAt(i+1) == '\"' ) {
result.append("\"");
i++;
}
else {
result.append(s.charAt(i));
}
}
// NOTE: if s terminates with \" (this is the case when i == s.length()) the
// last character should not be appended as it has already been considered.
if( i < s.length() ) {
result.append(s.charAt(s.length()-1));
}
return result.toString();
}
final public ACLMessage Message() throws ParseException {
msg.reset();
jj_consume_token(START);
MessageType();
label_1:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SENDER:
case RECEIVER:
case CONTENT:
case REPLY_WITH:
case REPLY_BY:
case IN_REPLY_TO:
case REPLY_TO:
case ENCODING:
case LANGUAGE:
case ONTOLOGY:
case PROTOCOL:
case CONVERSATION_ID:
case USERDEFINEDPARAM:
;
break;
default:
jj_la1[0] = jj_gen;
break label_1;
}
MessageParameter();
}
jj_consume_token(END);
{if (true) return msg;}
throw new Error("Missing return statement in function");
}
final public void MessageType() throws ParseException {
Token t;
t = jj_consume_token(MESSAGETYPE);
msg.setPerformative(ACLMessage.getInteger(t.image));
}
final public void MessageParameter() throws ParseException {
String s; Token t; AID aid;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SENDER:
jj_consume_token(SENDER);
aid = AgentIdentifier();
msg.setSender(aid); token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
case RECEIVER:
jj_consume_token(RECEIVER);
msg.clearAllReceiver();
jj_consume_token(LBRACE2);
jj_consume_token(SET);
label_2:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case LBRACE2:
;
break;
default:
jj_la1[1] = jj_gen;
break label_2;
}
aid = AgentIdentifier();
msg.addReceiver(aid);
}
jj_consume_token(RBRACE2);
token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
case CONTENT:
jj_consume_token(CONTENT);
s = Content();
msg.setContent(s); token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
case REPLY_WITH:
jj_consume_token(REPLY_WITH);
s = Expression();
msg.setReplyWith(s); token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
case REPLY_BY:
jj_consume_token(REPLY_BY);
s = DateTimeToken();
try { msg.setReplyByDate(ISO8601.toDate(s));} catch (Exception e) {} token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
case IN_REPLY_TO:
jj_consume_token(IN_REPLY_TO);
s = Expression();
msg.setInReplyTo(s); token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
case REPLY_TO:
jj_consume_token(REPLY_TO);
msg.clearAllReplyTo();
jj_consume_token(LBRACE2);
jj_consume_token(SET);
label_3:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case LBRACE2:
;
break;
default:
jj_la1[2] = jj_gen;
break label_3;
}
aid = AgentIdentifier();
msg.addReplyTo(aid);
}
jj_consume_token(RBRACE2);
token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
case ENCODING:
jj_consume_token(ENCODING);
s = Expression();
msg.setEncoding(s); token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
case LANGUAGE:
jj_consume_token(LANGUAGE);
s = Expression();
msg.setLanguage(s); token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
case ONTOLOGY:
jj_consume_token(ONTOLOGY);
s = Expression();
msg.setOntology(s); token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
case PROTOCOL:
jj_consume_token(PROTOCOL);
s = Word();
msg.setProtocol(s); token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
case CONVERSATION_ID:
jj_consume_token(CONVERSATION_ID);
s = Expression();
msg.setConversationId(s); token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
case USERDEFINEDPARAM:
t = jj_consume_token(USERDEFINEDPARAM);
s = Expression();
msg.addUserDefinedParameter(t.image.substring(3),s); token_source.SwitchTo(MESSAGEPARAMETERSTATE);
break;
default:
jj_la1[3] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
final public String Content() throws ParseException {
String s;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case STRINGLITERAL:
case PREFIXBYTELENGTHENCODEDSTRING:
s = Stringa();
{if (true) return s;}
break;
case WORD:
s = Word();
{if (true) return s;}
break;
default:
jj_la1[4] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
throw new Error("Missing return statement in function");
}
final public AID AgentIdentifier() throws ParseException {
Token t; String s; AID aid;
AID cur = new AID();
jj_consume_token(LBRACE2);
jj_consume_token(AID);
label_4:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NAME:
jj_consume_token(NAME);
s = Content();
cur.setName(s); token_source.SwitchTo(AIDSTATE);
break;
case ADDRESSES:
jj_consume_token(ADDRESSES);
jj_consume_token(LBRACE2);
jj_consume_token(SEQUENCE);
token_source.SwitchTo(CONTENTSTATE);
label_5:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case WORD:
;
break;
default:
jj_la1[5] = jj_gen;
break label_5;
}
s = Word();
cur.addAddresses(s);
}
jj_consume_token(RBRACE);
token_source.SwitchTo(AIDSTATE);
break;
case RESOLVERS:
jj_consume_token(RESOLVERS);
jj_consume_token(LBRACE2);
jj_consume_token(SEQUENCE);
label_6:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case LBRACE2:
;
break;
default:
jj_la1[6] = jj_gen;
break label_6;
}
aid = AgentIdentifier();
cur.addResolvers(aid);
}
jj_consume_token(RBRACE2);
token_source.SwitchTo(AIDSTATE);
break;
case USERDEFINEDSLOT:
t = jj_consume_token(USERDEFINEDSLOT);
s = Expression();
cur.addUserDefinedSlot(t.image.substring(3),s); token_source.SwitchTo(AIDSTATE);
break;
default:
jj_la1[7] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NAME:
case ADDRESSES:
case RESOLVERS:
case USERDEFINEDSLOT:
;
break;
default:
jj_la1[8] = jj_gen;
break label_4;
}
}
jj_consume_token(RBRACE2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -