From: <iam...@us...> - 2010-03-15 18:37:15
|
Revision: 1320 http://eulergui.svn.sourceforge.net/eulergui/?rev=1320&view=rev Author: iamlolive Date: 2010-03-15 18:37:08 +0000 (Mon, 15 Mar 2010) Log Message: ----------- our own version of the parsing error message. Modified Paths: -------------- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java =================================================================== --- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java 2010-03-15 18:36:23 UTC (rev 1319) +++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java 2010-03-15 18:37:08 UTC (rev 1320) @@ -2,6 +2,9 @@ import net.sf.parser4j.parser.entity.ParseResult; import eulergui.n3model.IN3Model; +import net.sf.parser4j.parser.entity.data.TerminalCharRange; +import net.sf.parser4j.parser.entity.parsenode.status.IParseNodeInErrorStatus; +import net.sf.parser4j.parser.service.ParsingToStringUtil; /** * @@ -14,7 +17,8 @@ private final IN3Model model; - public N3ParseResult(final ParseResult parseResult, final IN3Model model) { + + public N3ParseResult(final ParseResult parseResult, final IN3Model model) { this.parseResult = parseResult; this.model = model; } @@ -38,6 +42,111 @@ } public String getErrorMessage() { - return parseResult.toString(); + boolean lastCharacterRead = true; + boolean expectedTerminal = true; + boolean expectedNonTerminal = true; + boolean reduceerror = true; + boolean syntaxStacks = false; +boolean lexicalStacks = false; + + + //return parseResult.toString(); + final StringBuilder stringBuilder = new StringBuilder(); +// if (isInError()) { +// stringBuilder.append("has parsing error\n"); +// } else { +// stringBuilder.append("does not have parsing error\n"); +// } +// if (parseResult.isPreserveParseNode()) { +// stringBuilder.append("parse node preserved\n"); +// } else { +// stringBuilder.append("parse node not preserved\n"); +// } + if (parseResult.isParseError()) { +// stringBuilder.append("parse failed: file "); +// stringBuilder.append(parseResult.getFileName()); +// stringBuilder.append(", line "); +// stringBuilder.append(parseResult.getLineNumber()); +// stringBuilder.append(" column "); +// stringBuilder.append(parseResult.getColumnNumber()); + + if (lastCharacterRead) { + stringBuilder.append("Last character read : "); + if (parseResult.getLastTerminalValueRead() == -1) { + stringBuilder.append("EOF"); + } else if (parseResult.getLastTerminalValueRead() < ' ' + || parseResult.getLastTerminalValueRead() >= 0x7f) { + stringBuilder.append(String.format("0X%2X", + new Object[] { parseResult.getLastTerminalValueRead() })); + + } else { + stringBuilder.append('"'); + stringBuilder.append((char) parseResult.getLastTerminalValueRead()); + stringBuilder.append('"'); + } + + } + + + stringBuilder.append("\nExpecting :\n"); + if (expectedTerminal==true) { + + for (TerminalCharRange terminalCharRange : parseResult.getExpectedTerminal()) { + stringBuilder.append('\t'); + stringBuilder.append("-> "+(terminalCharRange.getFirstTerminalValue()==terminalCharRange.getLastTerminalValue()?(char)terminalCharRange.getFirstTerminalValue():terminalCharRange.toString())); + stringBuilder.append('\n'); + } + } + + if (expectedNonTerminal==true) { + //stringBuilder.append("expected non terminal:\n"); + for (String nonTerminal : parseResult.getExpectedNonTerminal()) { + stringBuilder.append('\t'); + stringBuilder.append("-> "+nonTerminal); + stringBuilder.append('\n'); + } + } + } + else { + stringBuilder.append("parse succeed\n"); + } + + if (reduceerror == true && parseResult.getErrorStatusList() != null && !parseResult.getErrorStatusList().isEmpty()) { + stringBuilder.append("reduce error: "); + for (IParseNodeInErrorStatus status : parseResult.getErrorStatusList()) { + stringBuilder.append(status.toString()); + stringBuilder.append('\n'); + } + } + + + + if (parseResult.getParseStacks() != null) { + if (syntaxStacks==true) { + stringBuilder.append("syntax parse stacks\n"); + stringBuilder.append(parseResult.getParsingToStringUtil().parseStacksToString( + parseResult.getParseStacks(), parseResult.getTokenRecognition(), parseResult.getStringTokenRecognition(), + false/* + * true/ addParseTree + */)); + } + } + + if (parseResult.getTokenParseStacks() != null) { + + if (lexicalStacks == true) { + stringBuilder.append("lexical parse stacks\n"); + stringBuilder.append(parseResult.getParsingToStringUtil().parseStacksToString( + parseResult.getTokenParseStacks(), parseResult.getTokenRecognition(), parseResult.getStringTokenRecognition(), + false/* + * true/ addParseTree + */)); + } + } + + return stringBuilder.toString(); + //return parseResult.toString(); + + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <iam...@us...> - 2010-03-17 09:00:57
|
Revision: 1322 http://eulergui.svn.sourceforge.net/eulergui/?rev=1322&view=rev Author: iamlolive Date: 2010-03-17 09:00:47 +0000 (Wed, 17 Mar 2010) Log Message: ----------- a (slightly better) display of error messages. Modified Paths: -------------- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java =================================================================== --- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java 2010-03-16 10:20:31 UTC (rev 1321) +++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java 2010-03-17 09:00:47 UTC (rev 1322) @@ -88,12 +88,21 @@ } - stringBuilder.append("\nExpecting :\n"); + stringBuilder.append("\nExpecting one of these :\n"); if (expectedTerminal==true) { for (TerminalCharRange terminalCharRange : parseResult.getExpectedTerminal()) { stringBuilder.append('\t'); - stringBuilder.append("-> "+(terminalCharRange.getFirstTerminalValue()==terminalCharRange.getLastTerminalValue()?(char)terminalCharRange.getFirstTerminalValue():terminalCharRange.toString())); + int firstTerminalValue = terminalCharRange.getFirstTerminalValue(); + int lastTerminalValue = terminalCharRange.getLastTerminalValue(); + if(firstTerminalValue == lastTerminalValue){ + if (firstTerminalValue < ' ' || firstTerminalValue >= 0x7f) { + stringBuilder.append("-> Ox"+Integer.toString(firstTerminalValue, 16)); + } else { + stringBuilder.append("-> "+(char) firstTerminalValue); + } + }else + stringBuilder.append("-> "+(terminalCharRange.toString())); stringBuilder.append('\n'); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |