Skip to content

Commit

Permalink
Fixed an issue with certain actions being misinterpreted
Browse files Browse the repository at this point in the history
  • Loading branch information
McJones committed Jul 19, 2017
1 parent eaa12f3 commit 97d9add
Show file tree
Hide file tree
Showing 7 changed files with 731 additions and 701 deletions.
3 changes: 2 additions & 1 deletion ANTLR/YarnSpinnerLexer.g4
Expand Up @@ -78,7 +78,8 @@ INDENT : '\u0007';
DEDENT : '\u000B';

COMMAND_IF : COMMAND_OPEN KEYWORD_IF -> pushMode(Command) ;
COMMAND_ELSE : COMMAND_OPEN KEYWORD_ELSE -> pushMode(Command) ;
//COMMAND_ELSE : COMMAND_OPEN KEYWORD_ELSE -> pushMode(Command) ;
COMMAND_ELSE : COMMAND_OPEN KEYWORD_ELSE COMMAND_CLOSE | '<<else>>' | '<<ELSE>>' ;
COMMAND_ELSE_IF : COMMAND_OPEN KEYWORD_ELSE_IF -> pushMode(Command) ;
COMMAND_ENDIF : COMMAND_OPEN ('endif' | 'ENDIF') '>>' ;
COMMAND_SET : COMMAND_OPEN KEYWORD_SET -> pushMode(Command) ;
Expand Down
2 changes: 1 addition & 1 deletion ANTLR/YarnSpinnerParser.g4
Expand Up @@ -38,7 +38,7 @@ shortcut_text : SHORTCUT_TEXT ;
if_statement : if_clause (else_if_clause)* (else_clause)? COMMAND_ENDIF (hashtag_block)? ;
if_clause : COMMAND_IF expression COMMAND_CLOSE statement* ;
else_if_clause : COMMAND_ELSE_IF expression COMMAND_CLOSE statement* ;
else_clause : COMMAND_ELSE COMMAND_CLOSE statement* ;
else_clause : COMMAND_ELSE statement* ;

// this is a hack until I can work out exactly what the rules for setting are
set_statement
Expand Down
21 changes: 19 additions & 2 deletions YarnSpinner/AntlrCompiler.cs
Expand Up @@ -350,9 +350,26 @@ public override int VisitSet_statement(YarnSpinnerParser.Set_statementContext co
public override int VisitAction_statement(YarnSpinnerParser.Action_statementContext context)
{
char[] trimming = { '<', '>' };
compiler.Emit(ByteCode.RunCommand, context.GetText().Trim(trimming));
string action = context.GetText().Trim(trimming);

return 0;
// TODO: look into replacing this as it seems a bit odd
switch (action)
{
case "stop":
compiler.Emit(ByteCode.Stop);
break;
case "shuffleNextOptions":
compiler.Emit(ByteCode.PushBool, true);
compiler.Emit(ByteCode.StoreVariable, VirtualMachine.SpecialVariables.ShuffleOptions);
compiler.Emit(ByteCode.Pop);
compiler.flags.DisableShuffleOptionsAfterNextSet = true;
break;
default:
compiler.Emit(ByteCode.RunCommand, action);
break;
}

return 0;
}

// solo function statements
Expand Down
776 changes: 395 additions & 381 deletions YarnSpinner/YarnSpinnerLexer.cs

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion YarnSpinner/YarnSpinnerLexer.g4
Expand Up @@ -78,7 +78,8 @@ INDENT : '\u0007';
DEDENT : '\u000B';

COMMAND_IF : COMMAND_OPEN KEYWORD_IF -> pushMode(Command) ;
COMMAND_ELSE : COMMAND_OPEN KEYWORD_ELSE -> pushMode(Command) ;
//COMMAND_ELSE : COMMAND_OPEN KEYWORD_ELSE -> pushMode(Command) ;
COMMAND_ELSE : COMMAND_OPEN KEYWORD_ELSE COMMAND_CLOSE | '<<else>>' | '<<ELSE>>' ;
COMMAND_ELSE_IF : COMMAND_OPEN KEYWORD_ELSE_IF -> pushMode(Command) ;
COMMAND_ENDIF : COMMAND_OPEN ('endif' | 'ENDIF') '>>' ;
COMMAND_SET : COMMAND_OPEN KEYWORD_SET -> pushMode(Command) ;
Expand Down

0 comments on commit 97d9add

Please sign in to comment.