@composita/compiler
Version:
Composita language compiler.
295 lines • 8.09 kB
JavaScript
export var Tag;
(function (Tag) {
Tag["EOT"] = "EOT";
Tag["Begin"] = "BEGIN";
Tag["Activity"] = "ACTIVITY";
Tag["Finally"] = "FINALLY";
Tag["End"] = "END";
Tag["Constant"] = "CONSTANT";
Tag["Variable"] = "VARIABLE";
Tag["In"] = "IN";
Tag["Out"] = "OUT";
Tag["Is"] = "IS";
Tag["Type"] = "TYPE";
Tag["Any"] = "ANY";
Tag["Finish"] = "FINISH";
Tag["Component"] = "COMPONENT";
Tag["Interface"] = "INTERFACE";
Tag["Procedure"] = "PROCEDURE";
Tag["Implementation"] = "IMPLEMENTATION";
Tag["Offers"] = "OFFERS";
Tag["Requires"] = "REQUIRES";
Tag["OpenBrace"] = "{";
Tag["CloseBrace"] = "}";
Tag["OpenSquareBracket"] = "[";
Tag["CloseSquareBracket"] = "]";
Tag["OpenParentheses"] = "(";
Tag["CloseParentheses"] = ")";
Tag["Semicolon"] = ";";
Tag["Colon"] = ":";
Tag["Comma"] = ",";
Tag["Asterisk"] = "*";
Tag["Pipe"] = "|";
Tag["For"] = "FOR";
Tag["To"] = "TO";
Tag["By"] = "BY";
Tag["Do"] = "DO";
Tag["Foreach"] = "FOREACH";
Tag["Of"] = "OF";
Tag["While"] = "WHILE";
Tag["Repeat"] = "REPEAT";
Tag["Until"] = "UNTIL";
Tag["If"] = "IF";
Tag["Then"] = "THEN";
Tag["Elsif"] = "ELSIF";
Tag["Else"] = "ELSE";
Tag["Return"] = "RETURN";
Tag["NumberSign"] = "#";
Tag["Equal"] = "=";
Tag["Less"] = "<";
Tag["LessEqual"] = "<=";
Tag["Greater"] = ">";
Tag["GreaterEqual"] = ">=";
Tag["ColonEqual"] = ":=";
Tag["Ellipsis"] = "..";
Tag["Plus"] = "+";
Tag["Minus"] = "-";
Tag["Tilde"] = "~";
Tag["Slash"] = "/";
Tag["Div"] = "DIV";
Tag["Mod"] = "MOD";
Tag["And"] = "AND";
Tag["Or"] = "OR";
Tag["ExclamationMark"] = "!";
Tag["QuestionMark"] = "?";
})(Tag || (Tag = {}));
export function tagFromString(identifier) {
switch (identifier) {
case Tag.Begin:
return Tag.Begin;
case Tag.Activity:
return Tag.Activity;
case Tag.Finally:
return Tag.Finally;
case Tag.End:
return Tag.End;
case Tag.Constant:
return Tag.Constant;
case Tag.Variable:
return Tag.Variable;
case Tag.In:
return Tag.In;
case Tag.Out:
return Tag.Out;
case Tag.Is:
return Tag.Is;
case Tag.Type:
return Tag.Type;
case Tag.Any:
return Tag.Any;
case Tag.Finish:
return Tag.Finish;
case Tag.Component:
return Tag.Component;
case Tag.Interface:
return Tag.Interface;
case Tag.Procedure:
return Tag.Procedure;
case Tag.Implementation:
return Tag.Implementation;
case Tag.Offers:
return Tag.Offers;
case Tag.Requires:
return Tag.Requires;
case Tag.OpenBrace:
return Tag.OpenBrace;
case Tag.CloseBrace:
return Tag.CloseBrace;
case Tag.OpenSquareBracket:
return Tag.OpenSquareBracket;
case Tag.CloseSquareBracket:
return Tag.CloseSquareBracket;
case Tag.OpenParentheses:
return Tag.OpenParentheses;
case Tag.CloseParentheses:
return Tag.CloseParentheses;
case Tag.Semicolon:
return Tag.Semicolon;
case Tag.Colon:
return Tag.Colon;
case Tag.Comma:
return Tag.Comma;
case Tag.Asterisk:
return Tag.Asterisk;
case Tag.Pipe:
return Tag.Pipe;
case Tag.For:
return Tag.For;
case Tag.To:
return Tag.To;
case Tag.By:
return Tag.By;
case Tag.Do:
return Tag.Do;
case Tag.Foreach:
return Tag.Foreach;
case Tag.Of:
return Tag.Of;
case Tag.While:
return Tag.While;
case Tag.Repeat:
return Tag.Repeat;
case Tag.Until:
return Tag.Until;
case Tag.If:
return Tag.If;
case Tag.Then:
return Tag.Then;
case Tag.Elsif:
return Tag.Elsif;
case Tag.Else:
return Tag.Else;
case Tag.Return:
return Tag.Return;
case Tag.NumberSign:
return Tag.NumberSign;
case Tag.Equal:
return Tag.Equal;
case Tag.Less:
return Tag.Less;
case Tag.LessEqual:
return Tag.LessEqual;
case Tag.Greater:
return Tag.Greater;
case Tag.GreaterEqual:
return Tag.GreaterEqual;
case Tag.ColonEqual:
return Tag.ColonEqual;
case Tag.Ellipsis:
return Tag.Ellipsis;
case Tag.Plus:
return Tag.Plus;
case Tag.Minus:
return Tag.Minus;
case Tag.Tilde:
return Tag.Tilde;
case Tag.Slash:
return Tag.Slash;
case Tag.Div:
return Tag.Div;
case Tag.Mod:
return Tag.Mod;
case Tag.And:
return Tag.And;
case Tag.Or:
return Tag.Or;
case Tag.ExclamationMark:
return Tag.ExclamationMark;
case Tag.QuestionMark:
return Tag.QuestionMark;
default:
return undefined;
}
}
export class Token {
constructor(location) {
this.location = location;
}
getLocation() {
return this.location;
}
}
export class UnknownCharacterToken extends Token {
constructor(location, character) {
super(location);
this.character = character;
}
getCharacter() {
return this.character;
}
}
var ErrorTokenTag;
(function (ErrorTokenTag) {
ErrorTokenTag[ErrorTokenTag["Tag"] = 0] = "Tag";
})(ErrorTokenTag || (ErrorTokenTag = {}));
export class ErrorToken extends Token {
constructor(location) {
super(location);
this._errorTag = ErrorTokenTag.Tag;
}
}
export class FixToken extends Token {
constructor(location, tag) {
super(location);
this.tag = tag;
}
getTag() {
return this.tag;
}
}
export class IdentifierToken extends Token {
constructor(location, identifier) {
super(location);
this.identifier = identifier;
}
getIdentifier() {
return this.identifier;
}
}
export class NumberToken extends Token {
constructor(location, value) {
super(location);
this.value = value;
}
getNumber() {
return this.value;
}
}
var HexNumberTokenTag;
(function (HexNumberTokenTag) {
HexNumberTokenTag[HexNumberTokenTag["Tag"] = 0] = "Tag";
})(HexNumberTokenTag || (HexNumberTokenTag = {}));
export class HexNumberToken extends NumberToken {
constructor() {
super(...arguments);
this._tag = HexNumberTokenTag.Tag;
}
}
var IntegerNumberTokenTag;
(function (IntegerNumberTokenTag) {
IntegerNumberTokenTag[IntegerNumberTokenTag["Tag"] = 0] = "Tag";
})(IntegerNumberTokenTag || (IntegerNumberTokenTag = {}));
export class IntegerNumberToken extends NumberToken {
constructor() {
super(...arguments);
this._tag = IntegerNumberTokenTag.Tag;
}
}
var FloatNumberTokenTag;
(function (FloatNumberTokenTag) {
FloatNumberTokenTag[FloatNumberTokenTag["Tag"] = 0] = "Tag";
})(FloatNumberTokenTag || (FloatNumberTokenTag = {}));
export class FloatNumberToken extends NumberToken {
constructor(location, mantissa, exponent) {
super(location, mantissa * 10 ** exponent);
this.mantissa = mantissa;
this.exponent = exponent;
this._tag = FloatNumberTokenTag.Tag;
}
getMantissa() {
return this.mantissa;
}
getExponent() {
return this.exponent;
}
}
export class TextToken extends Token {
constructor(location, text) {
super(location);
this.text = text;
}
getText() {
return this.text;
}
}
//# sourceMappingURL=tokens.js.map