14ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira/*@bgen(jjtree) Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/AddressListParser.jj */ 24fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*//**************************************************************** 34fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * Licensed to the Apache Software Foundation (ASF) under one * 44fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * or more contributor license agreements. See the NOTICE file * 54fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * distributed with this work for additional information * 64fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * regarding copyright ownership. The ASF licenses this file * 74fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * to you under the Apache License, Version 2.0 (the * 84fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * "License"); you may not use this file except in compliance * 94fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * with the License. You may obtain a copy of the License at * 104fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * * 114fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * http://www.apache.org/licenses/LICENSE-2.0 * 124fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * * 134fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * Unless required by applicable law or agreed to in writing, * 144fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * software distributed under the License is distributed on an * 154fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * 164fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * KIND, either express or implied. See the License for the * 174fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * specific language governing permissions and limitations * 184fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * under the License. * 194fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ****************************************************************/ 204fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 214fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 224fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/** 234fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * RFC2822 address list parser. 244fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * 254fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * Created 9/17/2004 264fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * by Joe Cheng <code@joecheng.com> 274fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy */ 284fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 294fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyoptions { 304fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy STATIC=false; 314fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy LOOKAHEAD=1; 324fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy //DEBUG_PARSER=true; 334fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy //DEBUG_TOKEN_MANAGER=true; 344fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 354fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 364fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyPARSER_BEGIN(AddressListParser) 374fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/* 384fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * Copyright 2004 the mime4j project 394fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * 404fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * Licensed under the Apache License, Version 2.0 (the "License"); 414fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * you may not use this file except in compliance with the License. 424fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * You may obtain a copy of the License at 434fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * 444fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * http://www.apache.org/licenses/LICENSE-2.0 454fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * 464fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * Unless required by applicable law or agreed to in writing, software 474fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * distributed under the License is distributed on an "AS IS" BASIS, 484fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 494fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * See the License for the specific language governing permissions and 504fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy * limitations under the License. 514fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy */ 524fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedypackage org.apache.james.mime4j.field.address.parser; 534fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 544ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereirapublic class AddressListParser/*@bgen(jjtree)*/implements AddressListParserTreeConstants/*@egen*/ {/*@bgen(jjtree)*/ 554ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira protected JJTAddressListParserState jjtree = new JJTAddressListParserState(); 564ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 574fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 584fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy public static void main(String args[]) throws ParseException { 594fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy while (true) { 604fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy try { 614fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy AddressListParser parser = new AddressListParser(System.in); 624fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy parser.parseLine(); 634fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ((SimpleNode)parser.jjtree.rootNode()).dump("> "); 644fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy } catch (Exception x) { 654fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy x.printStackTrace(); 664fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy return; 674fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy } 684fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy } 694fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy } 704fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 714fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy private static void log(String msg) { 724fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy System.out.print(msg); 734fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy } 744fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 754fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy public ASTaddress_list parse() throws ParseException { 764fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy try { 774fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy parseAll(); 784fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy return (ASTaddress_list)jjtree.rootNode(); 794fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy } catch (TokenMgrError tme) { 804fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy throw new ParseException(tme.getMessage()); 814fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy } 824fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy } 834fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 844fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 854fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy void jjtreeOpenNodeScope(Node n) { 864fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ((SimpleNode)n).firstToken = getToken(1); 874fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy } 884fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 894fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy void jjtreeCloseNodeScope(Node n) { 904fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ((SimpleNode)n).lastToken = getToken(0); 914fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy } 924fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 934fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 944fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyPARSER_END(AddressListParser) 954fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 964fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid parseLine() : 974fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{} 984fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 994fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy address_list() ["\r"] "\n" 1004fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 1014fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 1024fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid parseAll() : 1034fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{} 1044fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 1054fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy address_list() <EOF> 1064fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 1074fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 1084fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid address_list() : 1094ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) address_list */ 1104ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ASTaddress_list jjtn000 = new ASTaddress_list(JJTADDRESS_LIST); 1114ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira boolean jjtc000 = true; 1124ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.openNodeScope(jjtn000); 1134ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeOpenNodeScope(jjtn000); 1144fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/} 1154ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) address_list */ 1164ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira try { 1174fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 1184fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy [ address() ] 1194fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ( 1204fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy "," 1214fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy [ address() ] 1224ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira )*/*@bgen(jjtree)*/ 1234ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } catch (Throwable jjte000) { 1244ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 1254ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.clearNodeScope(jjtn000); 1264ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtc000 = false; 1274ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } else { 1284ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.popNode(); 1294ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 1304ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof RuntimeException) { 1314ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (RuntimeException)jjte000; 1324ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 1334ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof ParseException) { 1344ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (ParseException)jjte000; 1354ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 1364ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (Error)jjte000; 1374ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } finally { 1384ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 1394ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.closeNodeScope(jjtn000, true); 1404ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeCloseNodeScope(jjtn000); 1414ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 1424ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 1434fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 1444fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 1454fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 1464fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid address() : 1474ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) address */ 1484ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ASTaddress jjtn000 = new ASTaddress(JJTADDRESS); 1494ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira boolean jjtc000 = true; 1504ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.openNodeScope(jjtn000); 1514ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeOpenNodeScope(jjtn000); 1524fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/} 1534ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) address */ 1544ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira try { 1554fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 1564fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy LOOKAHEAD(2147483647) 1574fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy addr_spec() 1584fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| angle_addr() 1594ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira| ( phrase() (group_body() | angle_addr()) )/*@bgen(jjtree)*/ 1604ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } catch (Throwable jjte000) { 1614ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 1624ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.clearNodeScope(jjtn000); 1634ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtc000 = false; 1644ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } else { 1654ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.popNode(); 1664ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 1674ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof RuntimeException) { 1684ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (RuntimeException)jjte000; 1694ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 1704ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof ParseException) { 1714ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (ParseException)jjte000; 1724ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 1734ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (Error)jjte000; 1744ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } finally { 1754ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 1764ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.closeNodeScope(jjtn000, true); 1774ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeCloseNodeScope(jjtn000); 1784ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 1794ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 1804fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 1814fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 1824fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 1834fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid mailbox() : 1844ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) mailbox */ 1854ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ASTmailbox jjtn000 = new ASTmailbox(JJTMAILBOX); 1864ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira boolean jjtc000 = true; 1874ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.openNodeScope(jjtn000); 1884ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeOpenNodeScope(jjtn000); 1894fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/} 1904ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) mailbox */ 1914ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira try { 1924fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 1934fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy LOOKAHEAD(2147483647) 1944fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy addr_spec() 1954fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| angle_addr() 1964ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira| name_addr()/*@bgen(jjtree)*/ 1974ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } catch (Throwable jjte000) { 1984ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 1994ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.clearNodeScope(jjtn000); 2004ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtc000 = false; 2014ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } else { 2024ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.popNode(); 2034ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2044ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof RuntimeException) { 2054ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (RuntimeException)jjte000; 2064ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2074ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof ParseException) { 2084ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (ParseException)jjte000; 2094ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2104ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (Error)jjte000; 2114ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } finally { 2124ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 2134ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.closeNodeScope(jjtn000, true); 2144ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeCloseNodeScope(jjtn000); 2154ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2164ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2174fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 2184fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 2194fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 2204fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid name_addr() : 2214ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) name_addr */ 2224ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ASTname_addr jjtn000 = new ASTname_addr(JJTNAME_ADDR); 2234ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira boolean jjtc000 = true; 2244ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.openNodeScope(jjtn000); 2254ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeOpenNodeScope(jjtn000); 2264fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/} 2274ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) name_addr */ 2284ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira try { 2294fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 2304ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira phrase() angle_addr()/*@bgen(jjtree)*/ 2314ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } catch (Throwable jjte000) { 2324ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 2334ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.clearNodeScope(jjtn000); 2344ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtc000 = false; 2354ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } else { 2364ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.popNode(); 2374ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2384ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof RuntimeException) { 2394ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (RuntimeException)jjte000; 2404ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2414ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof ParseException) { 2424ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (ParseException)jjte000; 2434ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2444ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (Error)jjte000; 2454ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } finally { 2464ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 2474ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.closeNodeScope(jjtn000, true); 2484ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeCloseNodeScope(jjtn000); 2494ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2504ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2514fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 2524fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 2534fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 2544fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid group_body() : 2554ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) group_body */ 2564ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ASTgroup_body jjtn000 = new ASTgroup_body(JJTGROUP_BODY); 2574ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira boolean jjtc000 = true; 2584ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.openNodeScope(jjtn000); 2594ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeOpenNodeScope(jjtn000); 2604fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/} 2614ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) group_body */ 2624ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira try { 2634fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 2644fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ":" 2654fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy [ mailbox() ] 2664fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ( 2674fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy "," 2684fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy [ mailbox() ] 2694fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy )* 2704ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ";"/*@bgen(jjtree)*/ 2714ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } catch (Throwable jjte000) { 2724ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 2734ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.clearNodeScope(jjtn000); 2744ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtc000 = false; 2754ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } else { 2764ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.popNode(); 2774ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2784ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof RuntimeException) { 2794ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (RuntimeException)jjte000; 2804ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2814ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof ParseException) { 2824ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (ParseException)jjte000; 2834ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2844ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (Error)jjte000; 2854ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } finally { 2864ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 2874ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.closeNodeScope(jjtn000, true); 2884ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeCloseNodeScope(jjtn000); 2894ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2904ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 2914fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 2924fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 2934fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 2944fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid angle_addr() : 2954ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) angle_addr */ 2964ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ASTangle_addr jjtn000 = new ASTangle_addr(JJTANGLE_ADDR); 2974ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira boolean jjtc000 = true; 2984ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.openNodeScope(jjtn000); 2994ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeOpenNodeScope(jjtn000); 3004fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/} 3014ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) angle_addr */ 3024ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira try { 3034fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 3044ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira "<" [ route() ] addr_spec() ">"/*@bgen(jjtree)*/ 3054ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } catch (Throwable jjte000) { 3064ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 3074ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.clearNodeScope(jjtn000); 3084ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtc000 = false; 3094ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } else { 3104ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.popNode(); 3114ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 3124ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof RuntimeException) { 3134ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (RuntimeException)jjte000; 3144ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 3154ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof ParseException) { 3164ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (ParseException)jjte000; 3174ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 3184ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (Error)jjte000; 3194ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } finally { 3204ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 3214ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.closeNodeScope(jjtn000, true); 3224ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeCloseNodeScope(jjtn000); 3234ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 3244ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 3254fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 3264fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 3274fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 3284fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid route() : 3294ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) route */ 3304ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ASTroute jjtn000 = new ASTroute(JJTROUTE); 3314ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira boolean jjtc000 = true; 3324ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.openNodeScope(jjtn000); 3334ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeOpenNodeScope(jjtn000); 3344fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/} 3354ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) route */ 3364ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira try { 3374fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 3384ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira "@" domain() ( (",")* "@" domain() )* ":"/*@bgen(jjtree)*/ 3394ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } catch (Throwable jjte000) { 3404ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 3414ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.clearNodeScope(jjtn000); 3424ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtc000 = false; 3434ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } else { 3444ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.popNode(); 3454ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 3464ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof RuntimeException) { 3474ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (RuntimeException)jjte000; 3484ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 3494ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof ParseException) { 3504ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (ParseException)jjte000; 3514ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 3524ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (Error)jjte000; 3534ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } finally { 3544ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 3554ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.closeNodeScope(jjtn000, true); 3564ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeCloseNodeScope(jjtn000); 3574ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 3584ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 3594fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 3604fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 3614fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 3624fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid phrase() : 3634ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) phrase */ 3644ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ASTphrase jjtn000 = new ASTphrase(JJTPHRASE); 3654ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira boolean jjtc000 = true; 3664ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.openNodeScope(jjtn000); 3674ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeOpenNodeScope(jjtn000); 3684fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/} 3694ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) phrase */ 3704ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiratry { 3714fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 3724fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy( <DOTATOM> 3734fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| <QUOTEDSTRING> 3744ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira)+/*@bgen(jjtree)*/ 3754ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira} finally { 3764ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 3774ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.closeNodeScope(jjtn000, true); 3784ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeCloseNodeScope(jjtn000); 3794ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 3804ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira} 3814fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 3824fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 3834fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 3844fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid addr_spec() : 3854ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) addr_spec */ 3864ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ASTaddr_spec jjtn000 = new ASTaddr_spec(JJTADDR_SPEC); 3874ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira boolean jjtc000 = true; 3884ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.openNodeScope(jjtn000); 3894ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeOpenNodeScope(jjtn000); 3904fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/} 3914ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) addr_spec */ 3924ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira try { 3934fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 3944ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ( local_part() "@" domain() )/*@bgen(jjtree)*/ 3954ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } catch (Throwable jjte000) { 3964ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 3974ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.clearNodeScope(jjtn000); 3984ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtc000 = false; 3994ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } else { 4004ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.popNode(); 4014ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 4024ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof RuntimeException) { 4034ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (RuntimeException)jjte000; 4044ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 4054ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjte000 instanceof ParseException) { 4064ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (ParseException)jjte000; 4074ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 4084ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira throw (Error)jjte000; 4094ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } finally { 4104ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 4114ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.closeNodeScope(jjtn000, true); 4124ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeCloseNodeScope(jjtn000); 4134ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 4144ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 4154fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 4164fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 4174fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 4184fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid local_part() : 4194ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) local_part */ 4204ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ASTlocal_part jjtn000 = new ASTlocal_part(JJTLOCAL_PART); 4214ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira boolean jjtc000 = true; 4224ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.openNodeScope(jjtn000); 4234ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeOpenNodeScope(jjtn000); 4244fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ Token t; } 4254ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) local_part */ 4264ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira try { 4274fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 4284fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ( t=<DOTATOM> | t=<QUOTEDSTRING> ) 4294fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ( [t="."] 4304fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy { 4314fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy if (t.image.charAt(t.image.length() - 1) != '.' || t.kind == AddressListParserConstants.QUOTEDSTRING) 4324fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy throw new ParseException("Words in local part must be separated by '.'"); 4334fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy } 4344fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ( t=<DOTATOM> | t=<QUOTEDSTRING> ) 4354ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira )*/*@bgen(jjtree)*/ 4364ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } finally { 4374ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 4384ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.closeNodeScope(jjtn000, true); 4394ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeCloseNodeScope(jjtn000); 4404ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 4414ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 4424fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 4434fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 4444fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 4454fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedyvoid domain() : 4464ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) domain */ 4474ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ASTdomain jjtn000 = new ASTdomain(JJTDOMAIN); 4484ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira boolean jjtc000 = true; 4494ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.openNodeScope(jjtn000); 4504ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeOpenNodeScope(jjtn000); 4514fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ Token t; } 4524ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira{/*@bgen(jjtree) domain */ 4534ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira try { 4544fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 4554fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ( t=<DOTATOM> 4564fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ( [t="."] 4574fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy { 4584fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy if (t.image.charAt(t.image.length() - 1) != '.') 4594fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy throw new ParseException("Atoms in domain names must be separated by '.'"); 4604fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy } 4614fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy t=<DOTATOM> 4624fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy )* 4634fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy ) 4644ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira| <DOMAINLITERAL>/*@bgen(jjtree)*/ 4654ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } finally { 4664ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira if (jjtc000) { 4674ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtree.closeNodeScope(jjtn000, true); 4684ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira jjtreeCloseNodeScope(jjtn000); 4694ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 4704ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 4714fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/*@egen*/ 4724fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 4734fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 4744fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedySPECIAL_TOKEN : 4754fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 4764fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy < WS: ( [" ", "\t"] )+ > 4774fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 4784fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 4794fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyTOKEN : 4804fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 4814fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy < #ALPHA: ["a" - "z", "A" - "Z"] > 4824fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| < #DIGIT: ["0" - "9"] > 4834fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| < #ATEXT: ( <ALPHA> | <DIGIT> 4844fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy | "!" | "#" | "$" | "%" 4854fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy | "&" | "'" | "*" | "+" 4864fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy | "-" | "/" | "=" | "?" 4874fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy | "^" | "_" | "`" | "{" 4884fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy | "|" | "}" | "~" 4894fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy )> 4904fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| < DOTATOM: <ATEXT> ( <ATEXT> | "." )* > 4914fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 4924fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 4934fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyTOKEN_MGR_DECLS : 4944fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 4954fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy // Keeps track of how many levels of comment nesting 4964fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy // we've encountered. This is only used when the 2nd 4974fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy // level is reached, for example ((this)), not (this). 4984fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy // This is because the outermost level must be treated 4994fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy // specially anyway, because the outermost ")" has a 5004fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy // different token type than inner ")" instances. 5014fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy static int commentNest; 5024fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5034fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5044fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyMORE : 5054fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 5064fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy // domain literal 5074fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy "[" : INDOMAINLITERAL 5084fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5094fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5104fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy<INDOMAINLITERAL> 5114fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyMORE : 5124fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 5134fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy < <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); } 5144fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| < ~["[", "]", "\\"] > 5154fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5164fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5174fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy<INDOMAINLITERAL> 5184fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyTOKEN : 5194fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 5204fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy < DOMAINLITERAL: "]" > { matchedToken.image = image.toString(); }: DEFAULT 5214fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5224fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5234fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyMORE : 5244fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 5254fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy // starts a comment 5264fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy "(" : INCOMMENT 5274fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5284fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5294fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy<INCOMMENT> 5304fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedySKIP : 5314fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 5324fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy // ends a comment 5334fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy < COMMENT: ")" > : DEFAULT 5344fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy // if this is ever changed to not be a SKIP, need 5354fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy // to make sure matchedToken.token = token.toString() 5364fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy // is called. 5374fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5384fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5394fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy<INCOMMENT> 5404fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyMORE : 5414fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 5424fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy < <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); } 5434fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| "(" { commentNest = 1; } : NESTED_COMMENT 5444fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| < <ANY>> 5454fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5464fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5474fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy<NESTED_COMMENT> 5484fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyMORE : 5494fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 5504fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy < <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); } 5514fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| "(" { ++commentNest; } 5524fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| ")" { --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT); } 5534fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| < <ANY>> 5544fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5554fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5564fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5574fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy// QUOTED STRINGS 5584fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5594fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyMORE : 5604fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 5614fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy "\"" { image.deleteCharAt(image.length() - 1); } : INQUOTEDSTRING 5624fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5634fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5644fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy<INQUOTEDSTRING> 5654fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyMORE : 5664fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 5674fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy < <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); } 5684fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| < (~["\"", "\\"])+ > 5694fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5704fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5714fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy<INQUOTEDSTRING> 5724fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyTOKEN : 5734fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 5744fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy < QUOTEDSTRING: "\"" > { matchedToken.image = image.substring(0, image.length() - 1); } : DEFAULT 5754fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5764fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5774fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy// GLOBALS 5784fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5794fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy<*> 5804fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyTOKEN : 5814fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 5824fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy < #QUOTEDPAIR: "\\" <ANY> > 5834fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy| < #ANY: ~[] > 5844fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5854fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5864fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy// ERROR! 5874fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy/* 5884fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5894fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy<*> 5904fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott KennedyTOKEN : 5914fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy{ 5924fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy < UNEXPECTED_CHAR: <ANY> > 5934fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy} 5944fa0a3295bcacbdcd6a9e7709cf17aa5adb90356Scott Kennedy 5954ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira*/