⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testsymboldefinitions.java

📁 antlr最新版本V3源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		Object expectedArg = "X";		int expectedMsgID = ErrorManager.MSG_LEXER_RULES_NOT_ALLOWED;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testParserRuleInLexer() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(				"lexer grammar t;\n"+				"a : ;");		Object expectedArg = "a";		int expectedMsgID = ErrorManager.MSG_PARSER_RULES_NOT_ALLOWED;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testRuleScopeConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"grammar t;\n"+			"scope a {\n" +			"  int n;\n" +			"}\n" +			"a : \n" +			"  ;\n");		Object expectedArg = "a";		int expectedMsgID = ErrorManager.MSG_SYMBOL_CONFLICTS_WITH_GLOBAL_SCOPE;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testTokenRuleScopeConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"grammar t;\n"+			"scope ID {\n" +			"  int n;\n" +			"}\n" +			"ID : 'a'\n" +			"  ;\n");		Object expectedArg = "ID";		int expectedMsgID = ErrorManager.MSG_SYMBOL_CONFLICTS_WITH_GLOBAL_SCOPE;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testTokenScopeConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"grammar t;\n"+			"tokens { ID; }\n"+			"scope ID {\n" +			"  int n;\n" +			"}\n" +			"a : \n" +			"  ;\n");		Object expectedArg = "ID";		int expectedMsgID = ErrorManager.MSG_SYMBOL_CONFLICTS_WITH_GLOBAL_SCOPE;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testTokenRuleScopeConflictInLexerGrammar() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"lexer grammar t;\n"+			"scope ID {\n" +			"  int n;\n" +			"}\n" +			"ID : 'a'\n" +			"  ;\n");		Object expectedArg = "ID";		int expectedMsgID = ErrorManager.MSG_SYMBOL_CONFLICTS_WITH_GLOBAL_SCOPE;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testTokenLabelScopeConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"parser grammar t;\n"+			"scope s {\n" +			"  int n;\n" +			"}\n" +			"a : s=ID \n" +			"  ;\n");		Object expectedArg = "s";		int expectedMsgID = ErrorManager.MSG_SYMBOL_CONFLICTS_WITH_GLOBAL_SCOPE;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testRuleLabelScopeConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"parser grammar t;\n"+			"scope s {\n" +			"  int n;\n" +			"}\n" +			"a : s=b \n" +			"  ;\n" +			"b : ;\n");		Object expectedArg = "s";		int expectedMsgID = ErrorManager.MSG_SYMBOL_CONFLICTS_WITH_GLOBAL_SCOPE;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testLabelAndRuleNameConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"parser grammar t;\n"+			"a : c=b \n" +			"  ;\n" +			"b : ;\n" +			"c : ;\n");		Object expectedArg = "c";		int expectedMsgID = ErrorManager.MSG_LABEL_CONFLICTS_WITH_RULE;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testLabelAndTokenNameConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"parser grammar t;\n"+			"a : ID=b \n" +			"  ;\n" +			"b : ID ;\n" +			"c : ;\n");		Object expectedArg = "ID";		int expectedMsgID = ErrorManager.MSG_LABEL_CONFLICTS_WITH_TOKEN;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testLabelAndArgConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"parser grammar t;\n"+			"a[int i] returns [int x]: i=ID \n" +			"  ;\n");		Object expectedArg = "i";		int expectedMsgID = ErrorManager.MSG_LABEL_CONFLICTS_WITH_RULE_ARG_RETVAL;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testLabelAndParameterConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"parser grammar t;\n"+			"a[int i] returns [int x]: x=ID \n" +			"  ;\n");		Object expectedArg = "x";		int expectedMsgID = ErrorManager.MSG_LABEL_CONFLICTS_WITH_RULE_ARG_RETVAL;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testLabelRuleScopeConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"parser grammar t;\n"+			"a\n" +			"scope {" +			"  int n;" +			"}\n" +			"  : n=ID\n" +			"  ;\n");		Object expectedArg = "n";		Object expectedArg2 = "a";		int expectedMsgID = ErrorManager.MSG_LABEL_CONFLICTS_WITH_RULE_SCOPE_ATTRIBUTE;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg, expectedArg2);		checkError(equeue, expectedMessage);	}	public void testRuleScopeArgConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"parser grammar t;\n"+			"a[int n]\n" +			"scope {" +			"  int n;" +			"}\n" +			"  : \n" +			"  ;\n");		Object expectedArg = "n";		Object expectedArg2 = "a";		int expectedMsgID = ErrorManager.MSG_ATTRIBUTE_CONFLICTS_WITH_RULE_ARG_RETVAL;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg, expectedArg2);		checkError(equeue, expectedMessage);	}	public void testRuleScopeReturnValueConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"parser grammar t;\n"+			"a returns [int n]\n" +			"scope {" +			"  int n;" +			"}\n" +			"  : \n" +			"  ;\n");		Object expectedArg = "n";		Object expectedArg2 = "a";		int expectedMsgID = ErrorManager.MSG_ATTRIBUTE_CONFLICTS_WITH_RULE_ARG_RETVAL;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg, expectedArg2);		checkError(equeue, expectedMessage);	}	public void testRuleScopeRuleNameConflict() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(			"parser grammar t;\n"+			"a\n" +			"scope {" +			"  int a;" +			"}\n" +			"  : \n" +			"  ;\n");		Object expectedArg = "a";		Object expectedArg2 = null;		int expectedMsgID = ErrorManager.MSG_ATTRIBUTE_CONFLICTS_WITH_RULE;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg, expectedArg2);		checkError(equeue, expectedMessage);	}	public void testBadGrammarOption() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Tool antlr = newTool();		Grammar g = new Grammar(antlr,								"t",								new StringReader(									"grammar t;\n"+									"options {foo=3; language=Java;}\n" +									"a : 'a';\n"));		Object expectedArg = "foo";		int expectedMsgID = ErrorManager.MSG_ILLEGAL_OPTION;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testBadRuleOption() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(				"grammar t;\n"+				"a\n"+				"options {k=3; tokenVocab=blort;}\n" +				"  : 'a';\n");		Object expectedArg = "tokenVocab";		int expectedMsgID = ErrorManager.MSG_ILLEGAL_OPTION;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	public void testBadSubRuleOption() throws Exception {		ErrorQueue equeue = new ErrorQueue();		ErrorManager.setErrorListener(equeue); // unique listener per thread		Grammar g = new Grammar(				"grammar t;\n"+				"a : ( options {k=3; language=Java;}\n" +				"    : 'a'\n" +				"    | 'b'\n" +				"    )\n" +				"  ;\n");		Object expectedArg = "language";		int expectedMsgID = ErrorManager.MSG_ILLEGAL_OPTION;		GrammarSemanticsMessage expectedMessage =			new GrammarSemanticsMessage(expectedMsgID, g, null, expectedArg);		checkError(equeue, expectedMessage);	}	protected void checkError(ErrorQueue equeue,							  GrammarSemanticsMessage expectedMessage)		throws Exception	{		/*		System.out.println(equeue.infos);		System.out.println(equeue.warnings);		System.out.println(equeue.errors);		assertTrue("number of errors mismatch", n, equeue.errors.size());				   */		Message foundMsg = null;		for (int i = 0; i < equeue.errors.size(); i++) {			Message m = (Message)equeue.errors.get(i);			if (m.msgID==expectedMessage.msgID ) {				foundMsg = m;			}		}		assertNotNull("no error; "+expectedMessage.msgID+" expected", foundMsg);		assertTrue("error is not a GrammarSemanticsMessage",				   foundMsg instanceof GrammarSemanticsMessage);		assertEquals(expectedMessage.arg, foundMsg.arg);	}	protected void checkWarning(ErrorQueue equeue,								GrammarSemanticsMessage expectedMessage)		throws Exception	{		Message foundMsg = null;		for (int i = 0; i < equeue.warnings.size(); i++) {			Message m = (Message)equeue.warnings.get(i);			if (m.msgID==expectedMessage.msgID ) {				foundMsg = m;			}		}		assertNotNull("no error; "+expectedMessage.msgID+" expected", foundMsg);		assertTrue("error is not a GrammarSemanticsMessage",				   foundMsg instanceof GrammarSemanticsMessage);		assertEquals(expectedMessage.arg, foundMsg.arg);	}	protected void checkPlusEqualsLabels(Grammar g,										 String ruleName,										 String tokenLabelsStr,										 String ruleLabelsStr)		throws Exception	{		// make sure expected += labels are there		Rule r = g.getRule(ruleName);		StringTokenizer st = new StringTokenizer(tokenLabelsStr, ", ");		Set tokenLabels = null;		while ( st.hasMoreTokens() ) {			if ( tokenLabels==null ) {				tokenLabels = new HashSet();			}			String labelName = st.nextToken();			tokenLabels.add(labelName);		}		Set ruleLabels = null;		if ( ruleLabelsStr!=null ) {			st = new StringTokenizer(ruleLabelsStr, ", ");			ruleLabels = new HashSet();			while ( st.hasMoreTokens() ) {				String labelName = st.nextToken();				ruleLabels.add(labelName);			}		}		assertTrue("token += labels mismatch; "+tokenLabels+"!="+r.tokenListLabels,				   (tokenLabels!=null && r.tokenListLabels!=null) ||				   (tokenLabels==null && r.tokenListLabels==null));		assertTrue("rule += labels mismatch; "+ruleLabels+"!="+r.ruleListLabels,				   (ruleLabels!=null && r.ruleListLabels!=null) ||				   (ruleLabels==null && r.ruleListLabels==null));		if ( tokenLabels!=null ) {			assertEquals(tokenLabels, r.tokenListLabels.keySet());		}		if ( ruleLabels!=null ) {			assertEquals(ruleLabels, r.ruleListLabels.keySet());		}	}	protected void checkSymbols(Grammar g,								String rulesStr,								String tokensStr)		throws Exception	{		Set tokens = g.getTokenDisplayNames();		// make sure expected tokens are there		StringTokenizer st = new StringTokenizer(tokensStr, ", ");		while ( st.hasMoreTokens() ) {			String tokenName = st.nextToken();			assertTrue("token "+tokenName+" expected",					   g.getTokenType(tokenName)!=Label.INVALID);			tokens.remove(tokenName);		}		// make sure there are not any others (other than <EOF> etc...)        for (Iterator iter = tokens.iterator(); iter.hasNext();) {			String tokenName = (String) iter.next();			assertTrue("unexpected token name "+tokenName,					    g.getTokenType(tokenName)<Label.MIN_TOKEN_TYPE);		}		// make sure all expected rules are there		st = new StringTokenizer(rulesStr, ", ");		int n = 0;		while ( st.hasMoreTokens() ) {			String ruleName = st.nextToken();			assertNotNull("rule "+ruleName+" expected", g.getRule(ruleName));			n++;		}		Collection rules = g.getRules();		//System.out.println("rules="+rules);		// make sure there are no extra rules		assertEquals("number of rules mismatch; expecting "+n+"; found "+rules.size(), n, rules.size());	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -