use of de.be4.eventbalg.core.parser.node.TComment in project probparsers by bendisposto.
the class EventBLexer method collectMultiLineComment.
private void collectMultiLineComment() throws EventBLexerException {
if (state.equals(State.MULTI_COMMENT)) {
if (token instanceof EOF) {
// tokenList.add(token);
throw new EventBLexerException(token, "Comment not closed");
}
/*
* Starting a new multiline comment, so first token is
* TMultiCommentStart
*/
if (commentStart == null) {
commentStart = (TMultiCommentStart) token;
commentBuffer = new StringBuilder();
token = null;
} else {
// end of comment reached?
if (token instanceof TMultiCommentEnd) {
token = new TComment(commentBuffer.toString(), commentStart.getLine(), commentStart.getPos());
commentStart = null;
commentBuffer = null;
state = State.NORMAL;
} else {
commentBuffer.append(token.getText());
token = null;
}
}
}
}
use of de.be4.eventbalg.core.parser.node.TComment in project probparsers by bendisposto.
the class EventBParser method createEventBParseException.
private EventBParseException createEventBParseException(final ParserException e) {
final Token token = e.getToken();
String message = e.getMessage();
final boolean expectingFound = message.indexOf("expecting") >= 0;
/*
* Special error message for misplaced comments.
*/
if (expectingFound && token instanceof TComment) {
message = MSG_COMMENT_PLACEMENT;
}
/*
* Replace some token names...
*/
message = message.replaceFirst(" at", " @");
return new EventBParseException(token, message);
}
use of de.be4.eventbalg.core.parser.node.TComment in project probparsers by bendisposto.
the class CommentTest method testInvariantsAndMultiComments.
@Test
public void testInvariantsAndMultiComments() throws BException {
final String input = "machine InvariantsAndMultiComments invariants\n" + "@inv1 1=1\n" + "@inv2 2=2\n" + "/*inv2\ncomment*/\n" + "end";
final Start rootNode = parseInput(input, false);
final AMachineParseUnit parseUnit = (AMachineParseUnit) rootNode.getPParseUnit();
final LinkedList<PInvariant> invariants = parseUnit.getInvariants();
assertEquals(2, invariants.size());
AInvariant invariant = (AInvariant) invariants.get(0);
assertEquals(0, invariant.getComments().size());
assertEquals("inv1", invariant.getName().getText());
assertEquals("1=1", invariant.getPredicate().getText());
invariant = (AInvariant) invariants.get(1);
final LinkedList<TComment> comments = invariant.getComments();
assertEquals(1, comments.size());
assertEquals("inv2\ncomment", comments.get(0).getText());
assertEquals("inv2", invariant.getName().getText());
assertEquals("2=2", invariant.getPredicate().getText());
}
use of de.be4.eventbalg.core.parser.node.TComment in project probparsers by bendisposto.
the class CommentTest method testMultiLineComment.
@Test
public void testMultiLineComment() throws Exception {
final Start rootNode = parseInput("machine MultiLineComment invariants @inv1 asdf\n/* First line\n Second line*/\nend", false);
final AMachineParseUnit parseUnit = (AMachineParseUnit) rootNode.getPParseUnit();
final LinkedList<PInvariant> invariants = parseUnit.getInvariants();
final AInvariant invariant = (AInvariant) invariants.get(0);
// correct comment content?
final LinkedList<TComment> comments = invariant.getComments();
assertEquals(1, comments.size());
final StringTokenizer tokenizer = new StringTokenizer(comments.get(0).getText(), "\n\r");
assertEquals(2, tokenizer.countTokens());
assertEquals("First line", tokenizer.nextToken());
assertEquals(" Second line", tokenizer.nextToken());
// correct invariant label?
assertEquals("inv1", invariant.getName().getText());
// correct string representation for predicate?
assertEquals("asdf", invariant.getPredicate().getText());
}
use of de.be4.eventbalg.core.parser.node.TComment in project probparsers by bendisposto.
the class CommentTest method testCommentPredicates2.
@Test
public void testCommentPredicates2() throws Exception {
final Start rootNode = parseInput("machine CommentPredicates2 invariants\n @inv0 asdf\n @inv1 asdf\n//MyComment\nend", false);
final AMachineParseUnit parseUnit = (AMachineParseUnit) rootNode.getPParseUnit();
final LinkedList<PInvariant> invariants = parseUnit.getInvariants();
assertEquals(2, invariants.size());
AInvariant invariant = (AInvariant) invariants.get(0);
assertEquals(0, invariant.getComments().size());
assertEquals("inv0", invariant.getName().getText());
assertEquals("asdf", invariant.getPredicate().getText());
// correct comment content, i.e., is whitespace in the beginning
// omitted?
invariant = (AInvariant) invariants.get(1);
final LinkedList<TComment> comments = invariant.getComments();
assertEquals(1, comments.size());
assertEquals("MyComment", comments.get(0).getText());
assertEquals("inv1", invariant.getName().getText());
assertEquals("asdf", invariant.getPredicate().getText());
}
Aggregations