summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/examples/blackjack/cards.fate16
-rw-r--r--data/examples/blackjack/main.fate2
-rw-r--r--data/examples/blackjack/play.fate19
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/SwitchValue.java14
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/meta/RecurrentChecks.java14
-rw-r--r--src/core/src/tonkadur/fate/v1/parser/FateParser.g48
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java4
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptInteger.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptString.java8
9 files changed, 55 insertions, 38 deletions
diff --git a/data/examples/blackjack/cards.fate b/data/examples/blackjack/cards.fate
index 2312f03..fa2d9f5 100644
--- a/data/examples/blackjack/cards.fate
+++ b/data/examples/blackjack/cards.fate
@@ -41,7 +41,7 @@
)
)
- (add (var c) (at deck))
+ (add! (var c) (at deck))
)
)
@@ -52,10 +52,10 @@
(global (list card) deck_template)
-(add_all heart_cards deck_template)
-(add_all spade_cards deck_template)
-(add_all diamond_cards deck_template)
-(add_all club_cards deck_template)
+(add_all! heart_cards deck_template)
+(add_all! spade_cards deck_template)
+(add_all! diamond_cards deck_template)
+(add_all! club_cards deck_template)
(define_sequence shuffle_into_deck
(
@@ -74,8 +74,8 @@
(set d (rand 0 (- (size (at deck)) 1)))
)
- (add_at (var d) (access (at cards) (var o)) (at deck))
- (remove_at (var o) (at cards))
+ (add_at! (var d) (access (at cards) (var o)) (at deck))
+ (remove_at! (var o) (at cards))
)
)
@@ -90,7 +90,7 @@
(define_sequence draw_a_card (((ptr (list card)) deck) ((ptr card) result))
(set (at result) (access (at deck) 0))
- (remove_at 0 (at deck))
+ (remove_at! 0 (at deck))
)
(define_sequence compute_score (((ptr (list card)) deck) ((ptr int) result))
diff --git a/data/examples/blackjack/main.fate b/data/examples/blackjack/main.fate
index 0b5acf8..0ab9b7d 100644
--- a/data/examples/blackjack/main.fate
+++ b/data/examples/blackjack/main.fate
@@ -13,7 +13,7 @@
Welcome to Tonkadur's wonderful and totally original blackjack!
Say, I don't think I've seen you before...
No, no, I am sure I haven't, actually.
-(prompt_string player.name 1 64 What's your name, then?)
+(prompt_string (ptr player.name) 1 64 What's your name, then?)
Alright, (var player.name), well, since it's your first time here, let me give
you some coins.
Just between you and me, someone left those laying around, they aren't mine.
diff --git a/data/examples/blackjack/play.fate b/data/examples/blackjack/play.fate
index 8504afa..3dc9536 100644
--- a/data/examples/blackjack/play.fate
+++ b/data/examples/blackjack/play.fate
@@ -30,7 +30,12 @@
(done)
)
)
- (prompt_integer bet 1 (var player.money) How much would you like to bet?)
+ (prompt_integer
+ (ptr bet)
+ 1
+ (var player.money)
+ How much would you like to bet?
+ )
(text_effect action_description
The dealer shuffles the cards and starts dealing.
)
@@ -40,7 +45,7 @@
(visit generate_shuffled_deck (ptr current_deck))
(visit draw_a_card (ptr current_deck) (ptr new_card))
- (add (var new_card) player.hand)
+ (add! (var new_card) player.hand)
(text_effect action_description
You have been dealt the (var new_card.name).
@@ -49,7 +54,7 @@
(visit draw_a_card (ptr current_deck) (ptr new_card))
- (add (var new_card) dealer_hand)
+ (add! (var new_card) dealer_hand)
(text_effect action_description
The dealer has drawn the (var new_card.name).
@@ -57,7 +62,7 @@
)
(visit draw_a_card (ptr current_deck) (ptr new_card))
- (add (var new_card) player.hand)
+ (add! (var new_card) player.hand)
(text_effect action_description
You have been dealt the (var new_card.name).
@@ -67,7 +72,7 @@
(newline)
(visit draw_a_card (ptr current_deck) (ptr new_card))
- (add (var new_card) dealer_hand)
+ (add! (var new_card) dealer_hand)
(text_effect action_description
The dealer has drawn a card, face down.
@@ -182,7 +187,7 @@
(local int player_score)
(visit draw_a_card (ptr current_deck) (ptr new_card))
- (add (var new_card) player.hand)
+ (add! (var new_card) player.hand)
(visit compute_score (ptr player.hand) (ptr player_score))
@@ -260,7 +265,7 @@
(local card new_card)
(visit draw_a_card (ptr current_deck) (ptr new_card))
- (add (var new_card) dealer_hand)
+ (add! (var new_card) dealer_hand)
(text_effect action_description
The dealer has drawn the (var new_card.name).
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/SwitchValue.java b/src/core/src/tonkadur/fate/v1/lang/computation/SwitchValue.java
index e49525d..405580b 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/SwitchValue.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/SwitchValue.java
@@ -60,12 +60,20 @@ public class SwitchValue extends Computation
Type candidate_hint, hint;
target_type = target.get_type();
- first_type = branches.get(0).get_cdr().get_type();
- hint = first_type;
+
+ candidate_hint = branches.get(0).get_car().get_type();
+ hint = branches.get(0).get_cdr().get_type();
for (final Cons<Computation, Computation> entry: branches)
{
- hint = RecurrentChecks.assert_can_be_used_as(entry.get_car(), hint);
+ candidate_hint =
+ RecurrentChecks.assert_can_be_used_as
+ (
+ entry.get_car(),
+ candidate_hint
+ );
+
+ hint = RecurrentChecks.assert_can_be_used_as(entry.get_cdr(), hint);
}
hint = RecurrentChecks.assert_can_be_used_as(default_value, hint);
diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/RecurrentChecks.java b/src/core/src/tonkadur/fate/v1/lang/meta/RecurrentChecks.java
index 43ed6f6..01925f7 100644
--- a/src/core/src/tonkadur/fate/v1/lang/meta/RecurrentChecks.java
+++ b/src/core/src/tonkadur/fate/v1/lang/meta/RecurrentChecks.java
@@ -137,7 +137,7 @@ public class RecurrentChecks
public static void assert_is_a_collection (final Computation a)
throws ParsingError
{
- assert_is_a_set(a.get_origin(), a.get_type());
+ assert_is_a_collection(a.get_origin(), a.get_type());
}
public static void assert_is_a_collection (final Origin o, final Type t)
@@ -160,7 +160,11 @@ public class RecurrentChecks
}
}
- public static void assert_is_a_list_of (final Computation c, final Computation e)
+ public static void assert_is_a_list_of
+ (
+ final Computation c,
+ final Computation e
+ )
throws ParsingError
{
assert_is_a_list_of
@@ -190,7 +194,11 @@ public class RecurrentChecks
);
}
- public static void assert_is_a_set_of (final Computation c, final Computation e)
+ public static void assert_is_a_set_of
+ (
+ final Computation c,
+ final Computation e
+ )
throws ParsingError
{
assert_is_a_set_of
diff --git a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
index 95127e5..6d2501b 100644
--- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
+++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
@@ -535,7 +535,7 @@ returns [Instruction result]
}
| PROMPT_STRING_KW
- target=value_reference WS+
+ targetv=value WS+
min_size=value WS+
max_size=value WS+
paragraph WS*
@@ -549,7 +549,7 @@ returns [Instruction result]
($PROMPT_STRING_KW.getLine()),
($PROMPT_STRING_KW.getCharPositionInLine())
),
- ($target.result),
+ ($targetv.result),
($min_size.result),
($max_size.result),
($paragraph.result)
@@ -557,7 +557,7 @@ returns [Instruction result]
}
| PROMPT_INTEGER_KW
- target=value_reference WS+
+ targetv=value WS+
min_size=value WS+
max_size=value WS+
paragraph WS*
@@ -571,7 +571,7 @@ returns [Instruction result]
($PROMPT_INTEGER_KW.getLine()),
($PROMPT_INTEGER_KW.getCharPositionInLine())
),
- ($target.result),
+ ($targetv.result),
($min_size.result),
($max_size.result),
($paragraph.result)
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java
index 2bafc69..297ad14 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java
@@ -2314,7 +2314,7 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor
(
new PromptInteger
(
- target_cc.get_address(),
+ target_cc.get_computation(),
min_cc.get_computation(),
max_cc.get_computation(),
label_cc.get_computation()
@@ -2377,7 +2377,7 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor
(
new PromptString
(
- target_cc.get_address(),
+ target_cc.get_computation(),
min_cc.get_computation(),
max_cc.get_computation(),
label_cc.get_computation()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptInteger.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptInteger.java
index 237a9a5..cb01cf2 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptInteger.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptInteger.java
@@ -1,7 +1,5 @@
package tonkadur.wyrd.v1.lang.instruction;
-import tonkadur.wyrd.v1.lang.computation.Address;
-
import tonkadur.wyrd.v1.lang.meta.Computation;
import tonkadur.wyrd.v1.lang.meta.Instruction;
import tonkadur.wyrd.v1.lang.meta.InstructionVisitor;
@@ -11,7 +9,7 @@ public class PromptInteger extends Instruction
/***************************************************************************/
/**** MEMBERS **************************************************************/
/***************************************************************************/
- protected final Address target;
+ protected final Computation target;
protected final Computation min, max, label;
/***************************************************************************/
@@ -20,7 +18,7 @@ public class PromptInteger extends Instruction
/**** Constructors *********************************************************/
public PromptInteger
(
- final Address target,
+ final Computation target,
final Computation min,
final Computation max,
final Computation label
@@ -33,7 +31,7 @@ public class PromptInteger extends Instruction
}
/**** Accessors ************************************************************/
- public Address get_target()
+ public Computation get_target()
{
return target;
}
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptString.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptString.java
index a24ac61..0c825b6 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptString.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptString.java
@@ -1,7 +1,5 @@
package tonkadur.wyrd.v1.lang.instruction;
-import tonkadur.wyrd.v1.lang.computation.Address;
-
import tonkadur.wyrd.v1.lang.meta.Computation;
import tonkadur.wyrd.v1.lang.meta.Instruction;
import tonkadur.wyrd.v1.lang.meta.InstructionVisitor;
@@ -11,7 +9,7 @@ public class PromptString extends Instruction
/***************************************************************************/
/**** MEMBERS **************************************************************/
/***************************************************************************/
- protected final Address target;
+ protected final Computation target;
protected final Computation min, max, label;
/***************************************************************************/
@@ -20,7 +18,7 @@ public class PromptString extends Instruction
/**** Constructors *********************************************************/
public PromptString
(
- final Address target,
+ final Computation target,
final Computation min,
final Computation max,
final Computation label
@@ -33,7 +31,7 @@ public class PromptString extends Instruction
}
/**** Accessors ************************************************************/
- public Address get_target()
+ public Computation get_target()
{
return target;
}