Skip to content

Parser

Defined in: .work/repos/tabscript/src/parser.ts:61

TabScript parser implementing recursive descent parsing.

All parse* methods follow a contract:

  • Return truthy on success, falsy on failure
  • On failure, leave the state unchanged

Plugins can modify parse* methods directly on the Parser instance.

options: Options

Defined in: .work/repos/tabscript/src/parser.ts:62

pattern(regexp, name): RegExp

Defined in: .work/repos/tabscript/src/parser.ts:76

Creates a token matcher regex with a descriptive name for error messages. Automatically adds the sticky (/y) flag if not present.

This is the recommended way to create regex patterns for use with s.read(), s.accept(), s.peek(), and related methods in plugins.

RegExp

The regular expression pattern to match tokens

string

A descriptive name shown in error messages (e.g., “identifier”, “number”)

RegExp

A new RegExp with the sticky flag and custom toString()


parseFuncParams(s, isConstructor?, parenthesis?): string | boolean

Defined in: .work/repos/tabscript/src/parser.ts:84

Parse function parameters.

State

boolean = false

boolean = false

string | boolean

`|a, b: number, c = 3|` or `(a, b: number, c = 3)`

parseFunction(s, declaration?): boolean

Defined in: .work/repos/tabscript/src/parser.ts:113

Parse a function definition.

State

boolean = false

boolean

`|x| x * 2` or `async |x| await fetch(x)` or `function foo|x| x * 2`

parseVarDecl(s, allowInit?): boolean

Defined in: .work/repos/tabscript/src/parser.ts:157

Parse a variable declaration.

State

boolean = true

boolean

`x := 5` (const) or `x ::= 5` (let) or `x: number := 5` (with type)

parseExpression(s, withinTag?): boolean

Defined in: .work/repos/tabscript/src/parser.ts:176

Parse an expression.

State

boolean = false

boolean

`x + 1` or `foo(bar)` or `obj.method.. arg1 arg2`

parseType(s, allowFunction?): boolean

Defined in: .work/repos/tabscript/src/parser.ts:251

Parse a type annotation.

State

boolean = true

boolean

`number` or `string[]` or `{x: number, y: string}` or `Foo<Bar>`

parseMethod(s, typeOnly?, isDerived?): boolean

Defined in: .work/repos/tabscript/src/parser.ts:309

Parse a class method or property.

State

boolean = false

boolean = false

boolean

`myMethod|x| x * 2` or `static count := 0` or `get name|| this._name`

parseClass(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:391

Parse a class or interface definition.

State

boolean

`class Foo extends Bar` or `interface IFoo` or `abstract class Base`

parseMain(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:424

Parse the main entry point - processes header and all statements.

State

boolean


parseHeader(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:442

Parse the TabScript header line. Header format: tabscript X.Y

State

boolean


parseStatement(s): string | boolean

Defined in: .work/repos/tabscript/src/parser.ts:467

Parse a single statement.

State

string | boolean

`x := 5` or `if condition` or `for item: of items` or `return value`

parseExport(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:484

State

boolean


parseTypeDecl(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:507

State

boolean


parseEnum(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:515

State

boolean


parseReturn(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:541

State

boolean


parseIfWhile(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:547

State

boolean


parseThrow(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:558

State

boolean


parseDoWhile(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:564

State

boolean


parseFor(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:572

State

boolean


parseSwitch(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:595

State

boolean


parseImport(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:623

State

boolean


parseTry(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:686

State

boolean


parseDeclare(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:725

State

boolean


parseBlock(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:736

State

boolean


parseTemplateDef(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:740

State

boolean


parseClassicFuncExprBody(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:753

State

boolean


parseArrowFuncExprBody(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:764

State

boolean


parseFuncType(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:775

State

boolean


parseParenthesised(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:782

State

boolean


parseExpressionSeq(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:789

State

boolean


parseBacktickString(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:795

State

boolean


parseLiteralArray(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:806

State

boolean


parseLiteralObject(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:813

State

boolean


parseTemplateArg(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:836

State

boolean


parseIndex(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:847

State

boolean


parseTypeObjectEntry(s): boolean

Defined in: .work/repos/tabscript/src/parser.ts:854

State

boolean