UNPKG

horatio

Version:

A javascript compiler for the Shakespeare Programming Language

755 lines (613 loc) 12.9 kB
/** * Horatio AST * @namespace */ /** * @memberof Horatio.AST * @param {Horatio.AST.Comment} comment * @param {Array.<Horatio.AST.Declaration>} declarations * @param {Array.<Horatio.AST.Part>} parts */ class Program { constructor(comment, declarations, parts) { this.comment = comment; this.declarations = declarations; this.parts = parts; } visit(visitor, arg) { return visitor.visitProgram(this, arg); } } /** * @memberof Horatio.AST * @param {Horatio.AST.Character} character * @param {Horatio.AST.Comment} comment */ class Declaration { constructor(character, comment) { this.character = character; this.comment = comment; } visit(visitor, arg) { return visitor.visitDeclaration(this, arg); } } /** * @memberof Horatio.AST * @param {Horatio.AST.Numeral} numeral * @param {Horatio.AST.Comment} comment * @param {Array.<Horatio.AST.Subpart>} subparts */ class Part { constructor(numeral, comment, subparts) { this.numeral = numeral; this.comment = comment; this.subparts = subparts; } visit(visitor, arg) { return visitor.visitPart(this, arg); } } /** * @memberof Horatio.AST * @param {Horatio.AST.Numeral} numeral * @param {Horatio.AST.Comment} comment * @param {Horatio.AST.Stage} stage */ class Subpart { constructor(numeral, comment, stage) { this.numeral = numeral; this.comment = comment; this.stage = stage; } visit(visitor, arg) { return visitor.visitSubpart(this, arg); } } /** * @memberof Horatio.AST * @param {Horatio.AST.Dialogue} dialogue * @param {Horatio.AST.Enter|Horatio.AST.Exit|Horatio.AST.exeunt} start_presence * @param {Horatio.AST.Enter|Horatio.AST.Exit|Horatio.AST.exeunt} end_presence */ class Stage { constructor(dialogue, start_presence, end_presence) { this.dialogue = dialogue; this.start_presence = start_presence; this.end_presence = end_presence; } visit(visitor, arg) { return visitor.visitStage(this, arg); } } /** * @memberof Horatio.AST * @param {Horatio.AST.Character} character_1 * @param {Horatio.AST.Character} character_2 */ class Enter { constructor(character_1, character_2) { this.character_1 = character_1; this.character_2 = character_2; } visit(visitor, arg) { return visitor.visitEnter(this, arg); } } /** * @memberof Horatio.AST * @param {Horatio.AST.Character} character */ class Exit { constructor(character) { this.character = character; } visit(visitor, arg) { return visitor.visitExit(this, arg); } } /** * @memberof Horatio.AST * @param {Horatio.AST.Character} character_1 * @param {Horatio.AST.Character} character_2 */ class Exeunt { constructor(character_1, character_2) { this.character_1 = character_1; this.character_2 = character_2; } visit(visitor, arg) { return visitor.visitExeunt(this, arg); } } /** * @memberof Horatio.AST * @param {Array.<Horatio.AST.Line>} lines */ class Dialogue { constructor(lines) { this.lines = lines; } visit(visitor, arg) { return visitor.visitDialogue(this, arg); } } /** * @memberof Horatio.AST * @param {Horatio.AST.Character} character * @param {Array.<Horatio.AST.Sentences>} sentences */ class Line { constructor(character, sentences) { this.character = character; this.sentences = sentences; } visit(visitor, arg) { return visitor.visitLine(this, arg); } } /** * @memberof Horatio.AST * @param {Horatio.AST.Numeral} numeral */ class Goto { constructor(numeral) { this.numeral = numeral; } visit(visitor, arg) { return visitor.visitGoto(this, arg); } } /** * @memberof Horatio.AST */ class AssignmentSentence { constructor(be, value) { this.be = be; this.value = value; } visit(visitor, arg) { return visitor.visitAssignmentSentence(this, arg); } } /** * @memberof Horatio.AST */ class QuestionSentence { constructor(be, comparison, value) { this.be = be; this.comparison = comparison; this.value = value; } visit(visitor, arg) { return visitor.visitQuestionSentence(this, arg); } } /** * @memberof Horatio.AST */ class ResponseSentence { constructor(goto) { this.goto = goto; } visit(visitor, arg) { return visitor.visitResponseSentence(this, arg); } } /** * @memberof Horatio.AST */ class GotoSentence { constructor(goto) { this.goto = goto; } visit(visitor, arg) { return visitor.visitGotoSentence(this, arg); } } /** * @memberof Horatio.AST */ class IntegerInputSentence { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitIntegerInputSentence(this, arg); } } /** * @memberof Horatio.AST */ class CharInputSentence { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitCharInputSentence(this, arg); } } /** * @memberof Horatio.AST */ class IntegerOutputSentence { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitIntegerOutputSentence(this, arg); } } /** * @memberof Horatio.AST */ class CharOutputSentence { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitCharOutputSentence(this, arg); } } /** * @memberof Horatio.AST */ class RememberSentence { constructor(pronoun) { this.pronoun = pronoun; } visit(visitor, arg) { return visitor.visitRememberSentence(this, arg); } } /** * @memberof Horatio.AST */ class RecallSentence { constructor(comment) { this.comment = comment; } visit(visitor, arg) { return visitor.visitRecallSentence(this, arg); } } /** * @memberof Horatio.AST */ class PositiveConstantValue { constructor(noun, adjectives) { this.noun = noun; this.adjectives = adjectives; } visit(visitor, arg) { return visitor.visitPositiveConstantValue(this, arg); } } /** * @memberof Horatio.AST */ class NegativeConstantValue { constructor(noun, adjectives) { this.noun = noun; this.adjectives = adjectives; } visit(visitor, arg) { return visitor.visitNegativeConstantValue(this, arg); } } /** * @memberof Horatio.AST */ class UnaryOperationValue { constructor(operator, value) { this.operator = operator; this.value = value; } visit(visitor, arg) { return visitor.visitUnaryOperationValue(this, arg); } } /** * @memberof Horatio.AST */ class ArithmeticOperationValue { constructor(operator, value_1, value_2) { this.operator = operator; this.value_1 = value_1; this.value_2 = value_2; } visit(visitor, arg) { return visitor.visitArithmeticOperationValue(this, arg); } } /** * @memberof Horatio.AST */ class PronounValue { constructor(pronoun) { this.pronoun = pronoun; } visit(visitor, arg) { return visitor.visitPronounValue(this, arg); } } /** * @memberof Horatio.AST */ class GreaterThanComparison { constructor(comparative) { this.comparative = comparative; } visit(visitor, arg) { return visitor.visitGreaterThanComparison(this, arg); } } /** * @memberof Horatio.AST */ class LesserThanComparison { constructor(comparative) { this.comparative = comparative; } visit(visitor, arg) { return visitor.visitLesserThanComparison(this, arg); } } /** * @memberof Horatio.AST */ class EqualToComparison { constructor(adjective) { this.adjective = adjective; } visit(visitor, arg) { return visitor.visitEqualToComparison(this, arg); } } /** * @memberof Horatio.AST */ class InverseComparison { constructor(comparison) { this.comparison = comparison; } visit(visitor, arg) { return visitor.visitInverseComparison(this, arg); } } /** * @memberof Horatio.AST */ class Comment { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitComment(this, arg); } } /** * @memberof Horatio.AST */ class Numeral { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitNumeral(this, arg); } } /** * @memberof Horatio.AST */ class Character { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitCharacter(this, arg); } } /** * @memberof Horatio.AST */ class FirstPersonPronoun { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitFirstPersonPronoun(this, arg); } } /** * @memberof Horatio.AST */ class SecondPersonPronoun { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitSecondPersonPronoun(this, arg); } } /** * @memberof Horatio.AST */ class PositiveNoun { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitPositiveNoun(this, arg); } } /** * @memberof Horatio.AST */ class NeutralNoun { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitNeutralNoun(this, arg); } } /** * @memberof Horatio.AST */ class NegativeNoun { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitNegativeNoun(this, arg); } } /** * @memberof Horatio.AST */ class PositiveAdjective { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitPositiveAdjective(this, arg); } } /** * @memberof Horatio.AST */ class NeutralAdjective { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitNeutralAdjective(this, arg); } } /** * @memberof Horatio.AST */ class NegativeAdjective { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitNegativeAdjective(this, arg); } } /** * @memberof Horatio.AST */ class UnaryOperator { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitUnaryOperator(this, arg); } } /** * @memberof Horatio.AST */ class ArithmeticOperator { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitArithmeticOperator(this, arg); } } /** * @memberof Horatio.AST */ class PositiveComparative { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitPositiveComparative(this, arg); } } /** * @memberof Horatio.AST */ class NegativeComparative { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitNegativeComparative(this, arg); } } /** * @memberof Horatio.AST */ class Be { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitBe(this, arg); } } /** * @memberof Horatio.AST */ class BeComparative { constructor(sequence) { this.sequence = sequence; } visit(visitor, arg) { return visitor.visitBeComparative(this, arg); } } /** Export */ export default { Program: Program, Declaration: Declaration, Part: Part, Subpart: Subpart, Stage: Stage, Enter: Enter, Exit: Exit, Exeunt: Exeunt, Dialogue: Dialogue, Line: Line, Goto: Goto, AssignmentSentence: AssignmentSentence, QuestionSentence: QuestionSentence, ResponseSentence: ResponseSentence, GotoSentence: GotoSentence, IntegerInputSentence: IntegerInputSentence, IntegerOutputSentence: IntegerOutputSentence, CharOutputSentence: CharOutputSentence, RememberSentence: RememberSentence, RecallSentence: RecallSentence, PositiveConstantValue: PositiveConstantValue, NegativeConstantValue: NegativeConstantValue, UnaryOperationValue: UnaryOperationValue, ArithmeticOperationValue: ArithmeticOperationValue, PronounValue: PronounValue, GreaterThanComparison: GreaterThanComparison, LesserThanComparison: LesserThanComparison, EqualToComparison: EqualToComparison, InverseComparison: InverseComparison, Comment: Comment, Numeral: Numeral, Character: Character, FirstPersonPronoun: FirstPersonPronoun, SecondPersonPronoun: SecondPersonPronoun, PositiveNoun: PositiveNoun, NeutralNoun: NeutralNoun, NegativeNoun: NegativeNoun, PositiveAdjective: PositiveAdjective, NeutralAdjective: NeutralAdjective, NegativeAdjective: NegativeAdjective, UnaryOperator: UnaryOperator, ArithmeticOperator: ArithmeticOperator, PositiveComparative: PositiveComparative, NegativeComparative: NegativeComparative, Be: Be, BeComparative: BeComparative }