public override IEnumerable <Statement> Parse(Scanner scanner) { Token source = scanner.ReadTo(GetSignalKeyword(scanner)).Trim(); Token signalKeyword = scanner.ReadSignal(); yield return (!source.IsEmpty() ? new EnsureParticipantStatement(source) : (Statement) new MissingArgumentStatement(signalKeyword, source)); Token target = scanner.ReadTo(ColonKeyowrd).Trim(); yield return (!target.IsEmpty() ? new EnsureParticipantStatement(target) : (Statement) new MissingArgumentStatement(signalKeyword, target)); if (source.IsEmpty() || target.IsEmpty()) { yield break; } scanner.SkipWhile(ch => !char.IsLetterOrDigit(ch)); Token signalName = scanner.ReadToEnd().Trim(); switch (signalKeyword.Value) { case CallKeyword: yield return(new CallSignalStatement(signalKeyword, source, target, signalName)); break; case BackCallKeyword: yield return(new CallSignalStatement(signalKeyword, target, source, signalName)); break; case ReturnKeyword: yield return(new ReturnSignalStatement(signalKeyword, source, target, signalName)); break; case BackReturnKeyword: yield return(new ReturnSignalStatement(signalKeyword, target, source, signalName)); break; case CreateKeyword1: case CreateKeyword2: yield return(new CreateSignalStatement(signalKeyword, source, target, signalName)); break; default: yield return(new UnknownStatement(signalKeyword)); break; } }
//participant A //participant Long Name as A public override IEnumerable <Statement> Parse(Scanner scanner) { Token keywordToken = scanner.ReadWord(); scanner.SkipWhiteSpaces(); Token nameToken = scanner.ReadTo(AsKeyword); if (nameToken.IsEmpty()) { yield return(new MissingArgumentStatement(keywordToken, nameToken)); yield break; } if (scanner.Eol) { yield return(new SimpleParticipantStatement(keywordToken, nameToken)); yield break; } scanner.ReadWord(); scanner.SkipWhiteSpaces(); Token idToken = scanner.ReadToEnd(); if (idToken.Length == 0) { yield return(new MissingArgumentStatement(keywordToken, idToken)); yield break; } yield return(new ParticipantStatement(keywordToken, idToken, nameToken)); }
public override IEnumerable <Statement> Parse(Scanner scanner) { Token keyword = scanner.ReadWord(); scanner.SkipWhiteSpaces(); Token argument = scanner.ReadToEnd(); yield return (!argument.IsEmpty() ? (Statement) new UnexpectedArgumentStatement(keyword, argument) : new EndStatement(keyword)); }
public override IEnumerable <Statement> Parse(Scanner scanner) { Token keyword = scanner.ReadWord(); scanner.SkipWhiteSpaces(); Token argument = scanner.ReadToEnd(); yield return (argument.IsEmpty() ? CreateEmptyStatement(keyword, argument) : CreateStatement(keyword, argument)); }
public override IEnumerable <Statement> Parse(Scanner scanner) { m_InvalidToken = scanner.ReadToEnd(); yield return(new UnknownStatement(m_InvalidToken)); }