UNPKG

bhai-lang-parser

Version:
132 lines (128 loc) 5.55 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __reExport = (target, module2, copyDefault, desc) => { if (module2 && typeof module2 === "object" || typeof module2 === "function") { for (let key of __getOwnPropNames(module2)) if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default")) __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable }); } return target; }; var __toCommonJS = /* @__PURE__ */ ((cache) => { return (module2, temp) => { return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp); }; })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0); // src/components/parser/tokenExecutor.ts var tokenExecutor_exports = {}; __export(tokenExecutor_exports, { default: () => TokenExecutor }); // src/constants/bhaiLangSpec.ts var TokenTypes = { NULL_TYPE: null, HI_BHAI_TYPE: "hi bhai", BYE_BHAI_TYPE: "bye bhai", BOL_BHAI_TYPE: "bol bhai", BHAI_YE_HAI_TYPE: "bhai ye hai", AGAR_BHAI: "agar bhai", WARNA_BHAI: "warna bhai", NAHI_TO_BHAI: "nahi to bhai", JAB_TAK_BHAI: "jab tak bhai", BAS_KAR_BHAI: "bas kar bhai", AGLA_DEKH_BHAI: "agla dekh bhai", NALLA_TYPE: "NALLA", SEMI_COLON_TYPE: ";", OPEN_CURLY_BRACE_TYPE: "{", CLOSED_CURLY_BRACE_TYPE: "}", OPEN_PARENTHESIS_TYPE: "(", CLOSED_PARENTHESIS_TYPE: ")", COMMA_TYPE: ",", NUMBER_TYPE: "NUMBER", IDENTIFIER_TYPE: "IDENTIFIER", SIMPLE_ASSIGN_TYPE: "SIMPLE_ASSIGN", COMPLEX_ASSIGN_TYPE: "COMPLEX_ASSIGN", ADDITIVE_OPERATOR_TYPE: "ADDITIVE_OPERATOR", MULTIPLICATIVE_OPERATOR_TYPE: "MULTIPLICATIVE_OPERATOR", RELATIONAL_OPERATOR: "RELATIONAL_OPERATOR", EQUALITY_OPERATOR: "EQUALITY_OPERATOR", STRING_TYPE: "STRING", BOOLEAN_TYPE: "BOOLEAN", LOGICAL_AND: "LOGICAL_AND", LOGICAL_OR: "LOGICAL_OR" }; var SPEC = [ { regex: /^\s+/, tokenType: TokenTypes.NULL_TYPE }, { regex: /^\/\/.*/, tokenType: TokenTypes.NULL_TYPE }, { regex: /^\/\*[\s\S]*?\*\//, tokenType: TokenTypes.NULL_TYPE }, { regex: /^;/, tokenType: TokenTypes.SEMI_COLON_TYPE }, { regex: /^\{/, tokenType: TokenTypes.OPEN_CURLY_BRACE_TYPE }, { regex: /^\}/, tokenType: TokenTypes.CLOSED_CURLY_BRACE_TYPE }, { regex: /^\(/, tokenType: TokenTypes.OPEN_PARENTHESIS_TYPE }, { regex: /^\)/, tokenType: TokenTypes.CLOSED_PARENTHESIS_TYPE }, { regex: /^,/, tokenType: TokenTypes.COMMA_TYPE }, { regex: /^\bhi bhai\b/, tokenType: TokenTypes.HI_BHAI_TYPE }, { regex: /^\bbye bhai\b/, tokenType: TokenTypes.BYE_BHAI_TYPE }, { regex: /^\bbol bhai\b/, tokenType: TokenTypes.BOL_BHAI_TYPE }, { regex: /^\bbhai ye hai\b/, tokenType: TokenTypes.BHAI_YE_HAI_TYPE }, { regex: /^\bagar bhai\b/, tokenType: TokenTypes.AGAR_BHAI }, { regex: /^\bnahi to bhai\b/, tokenType: TokenTypes.NAHI_TO_BHAI }, { regex: /^\bwarna bhai\b/, tokenType: TokenTypes.WARNA_BHAI }, { regex: /^\bnalla\b/, tokenType: TokenTypes.NALLA_TYPE }, { regex: /^\bjab tak bhai\b/, tokenType: TokenTypes.JAB_TAK_BHAI }, { regex: /^\bbas kar bhai\b/, tokenType: TokenTypes.BAS_KAR_BHAI }, { regex: /^\bagla dekh bhai\b/, tokenType: TokenTypes.AGLA_DEKH_BHAI }, { regex: /^-?\d+/, tokenType: TokenTypes.NUMBER_TYPE }, { regex: /^\bsahi\b/, tokenType: TokenTypes.BOOLEAN_TYPE }, { regex: /^\bgalat\b/, tokenType: TokenTypes.BOOLEAN_TYPE }, { regex: /^\w+/, tokenType: TokenTypes.IDENTIFIER_TYPE }, { regex: /^[=!]=/, tokenType: TokenTypes.EQUALITY_OPERATOR }, { regex: /^=/, tokenType: TokenTypes.SIMPLE_ASSIGN_TYPE }, { regex: /^[\*\%\/\+\-]=/, tokenType: TokenTypes.COMPLEX_ASSIGN_TYPE }, { regex: /^[+\-]/, tokenType: TokenTypes.ADDITIVE_OPERATOR_TYPE }, { regex: /^[*\/\%]/, tokenType: TokenTypes.MULTIPLICATIVE_OPERATOR_TYPE }, { regex: /^[><]=?/, tokenType: TokenTypes.RELATIONAL_OPERATOR }, { regex: /^&&/, tokenType: TokenTypes.LOGICAL_AND }, { regex: /^\|\|/, tokenType: TokenTypes.LOGICAL_OR }, { regex: /^"[^"]*"/, tokenType: TokenTypes.STRING_TYPE }, { regex: /^'[^']*'/, tokenType: TokenTypes.STRING_TYPE } ]; // src/components/parser/tokenExecutor.ts var TokenExecutor = class { constructor(tokenizer) { this._lookahead = null; this._tokenizer = tokenizer; } eatTokenAndForwardLookahead(tokenType) { const token = this._lookahead; if (token == null) { throw new SyntaxError(`Unexpected end of input, expected : "${tokenType}"`); } if (token.type !== tokenType) { throw new SyntaxError(`kya kar rha hai tu??...Unexpected token: "${token.value}", expected : "${tokenType}"`); } this.setLookahead(this._tokenizer.getNextToken()); return token; } eatOptionalSemiColonToken() { var _a; if (((_a = this.getLookahead()) == null ? void 0 : _a.type) == TokenTypes.SEMI_COLON_TYPE) this.eatTokenAndForwardLookahead(TokenTypes.SEMI_COLON_TYPE); } getLookahead() { return this._lookahead; } setLookahead(lookahead) { this._lookahead = lookahead; } }; module.exports = __toCommonJS(tokenExecutor_exports); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = {});