From ac15bde327b7d73748d7b901176402b5deb5e390 Mon Sep 17 00:00:00 2001 From: Branden J Brown Date: Sun, 14 Jan 2024 20:50:19 -0600 Subject: [PATCH] don't overlap type and variant names --- Syntax.fs | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/Syntax.fs b/Syntax.fs index 183f0a9..1a2d4d8 100644 --- a/Syntax.fs +++ b/Syntax.fs @@ -2,46 +2,45 @@ module VijiN.Syntax type Variable = Variable of string -type Term = Text of string | Variable of Variable +type Term = TextTerm of string | VarTerm of Variable type Character = Character of Term // TODO: Character should probably have more, like selecting portrait outfit/style -type DirectivePrefix = Prefix of string -type DirectiveInfix = Infix of string -type DirectiveSuffix = Suffix of string -type DirectiveOperator = DirectivePrefix * DirectiveInfix option * DirectiveSuffix option +type DirectivePrefix = string +type DirectiveInfix = string +type DirectiveOperator = DirectivePrefix * DirectiveInfix -type DirectiveArg = Arg of Term +type DirectiveArg = Arg of Term list type Directive = DirectiveOperator * DirectiveArg list list // TODO: non-empty list type Directives = Directive list // TODO: non-empty list -type ChoiceText = Text of Term -type ChoiceValue = Value of Term +type ChoiceText = ChoiceText of Term list +type ChoiceValue = ChoiceValue of Term list type ChoiceOption = ChoiceText * ChoiceValue option type Choice = Variable * ChoiceOption list // TODO: non-empty list type InlineDirective = Directive type SpokenText = - | Plain of Term - | Emphasis of Term - | Yell of Term - | Whisper of Term + | Plain of Term list + | Emphasis of Term list + | Yell of Term list + | Whisper of Term list type Spoken = Character option * InlineDirective list * SpokenText list // TODO: non-empty list type Comment = Comment of string type Line = - | Spoken of Spoken - | Directive of Directives - | Comment of Comment - | Choice of Choice + | SpokenLine of Spoken + | DirectiveLine of Directives + | CommentLine of Comment + | ChoiceLine of Choice -type LineNumber = Line of int // TODO: >= 1 -type PageNumber = Page of int // TODO: >= 1 +type LineNumber = LineNo of int // TODO: >= 1 +type PageNumber = PageNo of int // TODO: >= 1 type ScriptLine = LineNumber * PageNumber * Line // TODO: other diffing metadata -type SceneName = Name of string +type SceneName = SceneName of string type Scene = SceneName * Character list * ScriptLine list