Skip to content

Commit

Permalink
action by agent releases fluent [] bracket fix
Browse files Browse the repository at this point in the history
  • Loading branch information
mazurkiewiczj committed Jun 11, 2019
1 parent 7c7e6de commit 6c2fa98
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 22 deletions.
6 changes: 3 additions & 3 deletions ModelsTests/ForOtherTeam/AlchemyTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@ initially [~brewed]
brew by [Bercik] causes [brewed || destroyed]
brew by [Filemon] causes [brewed || ~brewed]
brew by [Bercik, Filemon] causes [brewed]
brew by [Filemon] releases [brewed]
brew by [Filemon] releases brewed
brew by [Filemon] causes [brewed || ~brewed]
brew by [Bercik] releases [brewed]
brew by [Bercik] releases brewed
brew by [Bercik] causes [brewed || ~brewed]
brew by [Bercik] releases [destroyed]
brew by [Bercik] releases destroyed
brew by [Bercik] causes [destroyed || ~destroyed]");

string story = sb.ToString();
Expand Down
6 changes: 3 additions & 3 deletions ModelsTests/ForOtherTeam/ElevatorTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@ Fluent marekIsUpstairs
//TODO usunąć nawiasy przy fluentach po naprawieniu parsera
//actions releases
sb.AppendLine(@"
repair by [serwisant] releases [elevatorIsWorking] if [~elevatorIsWorking]
useElevator by [marek,tomek] releases [tomekIsUpstairs]
useElevator by [marek,tomek] releases [marekIsUpstairs]
repair by [serwisant] releases elevatorIsWorking if [~elevatorIsWorking]
useElevator by [marek,tomek] releases tomekIsUpstairs
useElevator by [marek,tomek] releases marekIsUpstairs
");

string story = sb.ToString();
Expand Down
4 changes: 2 additions & 2 deletions ModelsTests/ForOtherTeam/PickUpTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ pickUp by [jack] causes [~onShelf]
//actions releases
sb.AppendLine(@"
pickUp by [bob] causes [broken || ~broken]
pickUp by [bob] releases [broken]
pickUp by [bob] releases broken
pickUp by [jack] causes [broken || ~broken]
pickUp by [jack] releases [broken]
pickUp by [jack] releases broken
");

string story = sb.ToString();
Expand Down
6 changes: 3 additions & 3 deletions ModelsTests/ForOtherTeam/ShootDeerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,15 +63,15 @@ load by [bob] causes [loaded]
drink by [bob] causes [drunkBob || ~drunkBob]
drink by [bob] releases [drunkBob]
drink by [bob] releases drunkBob
drink by [jack] causes [drunkJack || ~drunkJack]
drink by [jack] releases [drunkJack]
drink by [jack] releases drunkJack
drink by [jack, bob] causes [drunkJack && drunkBob]
shoot by [jack] causes [~alive] if [~drunkJack && loaded]
shoot by [bob] causes [~alive || alive] if [~drunkBob && loaded]
shoot by [bob] releases [alive] if [~drunkBob && loaded]
shoot by [bob] releases alive if [~drunkBob && loaded]
shoot by [bob, jack] causes [~alive] if [loaded]");

Expand Down
10 changes: 5 additions & 5 deletions ModelsTests/NecessaryAfterTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ Agent g
Action buypaper
buypaper by [g] causes [hasA || hasB]
initially [hasB]
buypaper by [g] releases [hasA]
buypaper by [g] releases [hasB]
buypaper by [g] releases hasA
buypaper by [g] releases hasB
";
var tokens = Tokenizer.Tokenize(story);
var parserState = Parser.Parse(tokens);
Expand Down Expand Up @@ -101,8 +101,8 @@ Agent g
Action buypaper
buypaper by [g] causes [hasA || hasB]
initially [hasB]
buypaper by [g] releases [hasA]
buypaper by [g] releases [hasB]
buypaper by [g] releases hasA
buypaper by [g] releases hasB
";
var tokens = Tokenizer.Tokenize(story);
var parserState = Parser.Parse(tokens);
Expand Down Expand Up @@ -649,7 +649,7 @@ Agent Hank
Action does
Fluent h
does by [Hank] causes [h || ~h]
does by [Hank] releases [h]
does by [Hank] releases h
";
string query = @"
necessary [h] after (does,[Hank])
Expand Down
6 changes: 3 additions & 3 deletions ModelsTests/PossiblyAfterTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ Agent g
Action buypaper
buypaper by [g] causes [hasA || hasB]
initially [hasB]
buypaper by [g] releases [hasA]
buypaper by [g] releases [hasB]
buypaper by [g] releases hasA
buypaper by [g] releases hasB
";
var tokens = Tokenizer.Tokenize(story);
var parserState = Parser.Parse(tokens);
Expand Down Expand Up @@ -878,7 +878,7 @@ Action shoot
Action drink
drink by [bill] causes [drunk || ~drunk]
drink by [bill] releases [drunk]
drink by [bill] releases drunk
";

Expand Down
2 changes: 1 addition & 1 deletion ModelsTests/PossiblyExecutableTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ Action sing
Fluent is_neighbour_angry
initially [~is_neighbour_angry]
sing by [Tomek] releases [is_neighbour_angry]
sing by [Tomek] releases is_neighbour_angry
";

string query = @"
Expand Down
19 changes: 17 additions & 2 deletions MultiAgentLanguageGUI/Parser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -485,11 +485,26 @@ public static void ParseKeyword(ParserState state, Token firstToken)
}
Token t = state.PopToken();
if (t == null) firstToken.ThrowException("Expected 'causes' or 'releases'.");
if (t.Name != "causes" && t.Name != "releases")

LogicElement result = null;
if (t.Name == "releases")
{
Token fT = state.PopToken();
if (fT == null)
firstToken.ThrowException("Expected fluent after release.");
else if (!state.Fluent.ContainsKey(fT.Name)) firstToken.ThrowException("Attempting to use undeclared fluent.");
result = state.Fluent[fT.Name];
}
else
if (t.Name == "causes")
{
result = EntryC1(state);
}
else
{
t.ThrowException("Expected 'causes' or 'releases'.");
}
LogicElement result = EntryC1(state);

if (t.Name == "releases" && (result is Fluent) == false)
{
t.ThrowException("Expected fluent after release.");
Expand Down

0 comments on commit 6c2fa98

Please sign in to comment.