move ast types into seperate ts file (#169)

This commit is contained in:
Kurt Hutten
2023-07-13 16:57:22 +10:00
committed by GitHub
parent 317dc6d0b2
commit 3fc4d71a1e
28 changed files with 234 additions and 265 deletions

View File

@ -1,9 +1,6 @@
import { useEffect, useState, useRef } from 'react' import { useEffect, useState, useRef } from 'react'
import { import { abstractSyntaxTree } from '../lang/abstractSyntaxTree'
abstractSyntaxTree, import { BinaryPart, Value } from '../lang/abstractSyntaxTreeTypes'
BinaryPart,
Value,
} from '../lang/abstractSyntaxTree'
import { executor } from '../lang/executor' import { executor } from '../lang/executor'
import { import {
createIdentifier, createIdentifier,

View File

@ -1,6 +1,6 @@
import { Dialog, Transition } from '@headlessui/react' import { Dialog, Transition } from '@headlessui/react'
import { Fragment, useState } from 'react' import { Fragment, useState } from 'react'
import { Value } from '../lang/abstractSyntaxTree' import { Value } from '../lang/abstractSyntaxTreeTypes'
import { import {
AvailableVars, AvailableVars,
addToInputHelper, addToInputHelper,

View File

@ -1,6 +1,6 @@
import { Dialog, Transition } from '@headlessui/react' import { Dialog, Transition } from '@headlessui/react'
import { Fragment, useState } from 'react' import { Fragment, useState } from 'react'
import { Value } from '../lang/abstractSyntaxTree' import { Value } from '../lang/abstractSyntaxTreeTypes'
import { import {
AvailableVars, AvailableVars,
addToInputHelper, addToInputHelper,

View File

@ -1,6 +1,6 @@
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react'
import { toolTips, useStore } from '../../useStore' import { toolTips, useStore } from '../../useStore'
import { Value, VariableDeclarator } from '../../lang/abstractSyntaxTree' import { Value, VariableDeclarator } from '../../lang/abstractSyntaxTreeTypes'
import { import {
getNodePathFromSourceRange, getNodePathFromSourceRange,
getNodeFromPath, getNodeFromPath,

View File

@ -1,6 +1,6 @@
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react'
import { toolTips, useStore } from '../../useStore' import { toolTips, useStore } from '../../useStore'
import { Value, VariableDeclarator } from '../../lang/abstractSyntaxTree' import { Value, VariableDeclarator } from '../../lang/abstractSyntaxTreeTypes'
import { import {
getNodePathFromSourceRange, getNodePathFromSourceRange,
getNodeFromPath, getNodeFromPath,

View File

@ -1,6 +1,6 @@
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react'
import { toolTips, useStore } from '../../useStore' import { toolTips, useStore } from '../../useStore'
import { Value } from '../../lang/abstractSyntaxTree' import { Value } from '../../lang/abstractSyntaxTreeTypes'
import { import {
getNodePathFromSourceRange, getNodePathFromSourceRange,
getNodeFromPath, getNodeFromPath,

View File

@ -5,7 +5,7 @@ import {
BinaryPart, BinaryPart,
Value, Value,
VariableDeclarator, VariableDeclarator,
} from '../../lang/abstractSyntaxTree' } from '../../lang/abstractSyntaxTreeTypes'
import { import {
getNodePathFromSourceRange, getNodePathFromSourceRange,
getNodeFromPath, getNodeFromPath,

View File

@ -1,6 +1,6 @@
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react'
import { toolTips, useStore } from '../../useStore' import { toolTips, useStore } from '../../useStore'
import { Value } from '../../lang/abstractSyntaxTree' import { Value } from '../../lang/abstractSyntaxTreeTypes'
import { import {
getNodePathFromSourceRange, getNodePathFromSourceRange,
getNodeFromPath, getNodeFromPath,

View File

@ -1,7 +1,7 @@
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react'
import { create } from 'react-modal-promise' import { create } from 'react-modal-promise'
import { toolTips, useStore } from '../../useStore' import { toolTips, useStore } from '../../useStore'
import { Value } from '../../lang/abstractSyntaxTree' import { Value } from '../../lang/abstractSyntaxTreeTypes'
import { import {
getNodePathFromSourceRange, getNodePathFromSourceRange,
getNodeFromPath, getNodeFromPath,

View File

@ -5,7 +5,7 @@ import {
BinaryPart, BinaryPart,
Value, Value,
VariableDeclarator, VariableDeclarator,
} from '../../lang/abstractSyntaxTree' } from '../../lang/abstractSyntaxTreeTypes'
import { import {
getNodePathFromSourceRange, getNodePathFromSourceRange,
getNodeFromPath, getNodeFromPath,

View File

@ -5,7 +5,7 @@ import {
BinaryPart, BinaryPart,
Value, Value,
VariableDeclarator, VariableDeclarator,
} from '../../lang/abstractSyntaxTree' } from '../../lang/abstractSyntaxTreeTypes'
import { import {
getNodePathFromSourceRange, getNodePathFromSourceRange,
getNodeFromPath, getNodeFromPath,

View File

@ -1,7 +1,7 @@
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react'
import { create } from 'react-modal-promise' import { create } from 'react-modal-promise'
import { toolTips, useStore } from '../../useStore' import { toolTips, useStore } from '../../useStore'
import { Value } from '../../lang/abstractSyntaxTree' import { Value } from '../../lang/abstractSyntaxTreeTypes'
import { import {
getNodePathFromSourceRange, getNodePathFromSourceRange,
getNodeFromPath, getNodeFromPath,

View File

@ -1,107 +1,31 @@
import { Token } from './tokeniser' import { Token } from './tokeniser'
import { parseExpression } from './astMathExpressions' import { parseExpression } from './astMathExpressions'
import {
export type SyntaxType = BinaryPart,
| 'Program' BodyItem,
| 'ExpressionStatement' Identifier,
| 'BinaryExpression' Literal,
| 'CallExpression' NoneCodeMeta,
| 'Identifier' NoneCodeNode,
| 'BlockStatement' ObjectKeyInfo,
| 'ReturnStatement' ObjectProperty,
| 'VariableDeclaration' PipeSubstitution,
| 'VariableDeclarator' Program,
| 'MemberExpression' Value,
| 'ArrayExpression' VariableDeclaration,
| 'ObjectExpression' VariableDeclarator,
| 'ObjectProperty' ArrayExpression,
| 'FunctionExpression' BinaryExpression,
| 'PipeExpression' CallExpression,
| 'PipeSubstitution' FunctionExpression,
| 'Literal' MemberExpression,
| 'NoneCodeNode' ObjectExpression,
| 'UnaryExpression' PipeExpression,
// | 'NumberLiteral' UnaryExpression,
// | 'StringLiteral' BlockStatement,
// | 'IfStatement' ExpressionStatement,
// | 'WhileStatement' ReturnStatement,
// | 'FunctionDeclaration' } from './abstractSyntaxTreeTypes'
// | 'AssignmentExpression'
// | 'Property'
// | 'LogicalExpression'
// | 'ConditionalExpression'
// | 'ForStatement'
// | 'ForInStatement'
// | 'ForOfStatement'
// | 'BreakStatement'
// | 'ContinueStatement'
// | 'SwitchStatement'
// | 'SwitchCase'
// | 'ThrowStatement'
// | 'TryStatement'
// | 'CatchClause'
// | 'ClassDeclaration'
// | 'ClassBody'
// | 'MethodDefinition'
// | 'NewExpression'
// | 'ThisExpression'
// | 'UpdateExpression'
// | 'YieldExpression'
// | 'AwaitExpression'
// | 'ImportDeclaration'
// | 'ImportSpecifier'
// | 'ImportDefaultSpecifier'
// | 'ImportNamespaceSpecifier'
// | 'ExportNamedDeclaration'
// | 'ExportDefaultDeclaration'
// | 'ExportAllDeclaration'
// | 'ExportSpecifier'
// | 'TaggedTemplateExpression'
// | 'TemplateLiteral'
// | 'TemplateElement'
// | 'SpreadElement'
// | 'RestElement'
// | 'SequenceExpression'
// | 'DebuggerStatement'
// | 'LabeledStatement'
// | 'DoWhileStatement'
// | 'WithStatement'
// | 'EmptyStatement'
// | 'ArrayPattern'
// | 'ObjectPattern'
// | 'AssignmentPattern'
// | 'MetaProperty'
// | 'Super'
// | 'Import'
// | 'RegExpLiteral'
// | 'BooleanLiteral'
// | 'NullLiteral'
// | 'TypeAnnotation'
export interface Program {
type: SyntaxType
start: number
end: number
body: BodyItem[]
nonCodeMeta: NoneCodeMeta
}
interface GeneralStatement {
type: SyntaxType
start: number
end: number
}
interface NoneCodeNode extends GeneralStatement {
type: 'NoneCodeNode'
value: string
}
interface NoneCodeMeta {
// Stores the whitespace/comments that go after the statement who's index we're using here
[statementIndex: number]: NoneCodeNode
// Which is why we also need `start` for and whitespace at the start of the file/block
start?: NoneCodeNode
}
function makeNoneCodeNode( function makeNoneCodeNode(
tokens: Token[], tokens: Token[],
@ -129,11 +53,6 @@ function findEndOfNonCodeNode(tokens: Token[], index: number): number {
return index return index
} }
export interface ExpressionStatement extends GeneralStatement {
type: 'ExpressionStatement'
expression: Value
}
function makeExpressionStatement( function makeExpressionStatement(
tokens: Token[], tokens: Token[],
index: number index: number
@ -165,13 +84,6 @@ function makeExpressionStatement(
} }
} }
export interface CallExpression extends GeneralStatement {
type: 'CallExpression'
callee: Identifier
arguments: Value[]
optional: boolean
}
export function makeCallExpression( export function makeCallExpression(
tokens: Token[], tokens: Token[],
index: number index: number
@ -373,12 +285,6 @@ function makeArguments(
throw new Error('Expected a previous Argument if statement to match') throw new Error('Expected a previous Argument if statement to match')
} }
export interface VariableDeclaration extends GeneralStatement {
type: 'VariableDeclaration'
declarations: VariableDeclarator[]
kind: 'const' | 'unknown' | 'fn' //| "solid" | "surface" | "face"
}
function makeVariableDeclaration( function makeVariableDeclaration(
tokens: Token[], tokens: Token[],
index: number index: number
@ -407,19 +313,6 @@ function makeVariableDeclaration(
} }
} }
export type Value =
| Literal
| Identifier
| BinaryExpression
| FunctionExpression
| CallExpression
| PipeExpression
| PipeSubstitution
| ArrayExpression
| ObjectExpression
| MemberExpression
| UnaryExpression
function makeValue( function makeValue(
tokens: Token[], tokens: Token[],
index: number index: number
@ -523,12 +416,6 @@ function makeValue(
throw new Error('Expected a previous Value if statement to match') throw new Error('Expected a previous Value if statement to match')
} }
export interface VariableDeclarator extends GeneralStatement {
type: 'VariableDeclarator'
id: Identifier
init: Value
}
function makeVariableDeclarators( function makeVariableDeclarators(
tokens: Token[], tokens: Token[],
index: number, index: number,
@ -576,29 +463,6 @@ function makeVariableDeclarators(
} }
} }
export type BinaryPart =
| Literal
| Identifier
| BinaryExpression
| CallExpression
| UnaryExpression
// | MemberExpression
// | ArrayExpression
// | ObjectExpression
// | LogicalExpression
// | ConditionalExpression
export interface Literal extends GeneralStatement {
type: 'Literal'
value: string | number | boolean | null
raw: string
}
export interface Identifier extends GeneralStatement {
type: 'Identifier'
name: string
}
function makeIdentifier(token: Token[], index: number): Identifier { function makeIdentifier(token: Token[], index: number): Identifier {
const currentToken = token[index] const currentToken = token[index]
return { return {
@ -609,10 +473,6 @@ function makeIdentifier(token: Token[], index: number): Identifier {
} }
} }
export interface PipeSubstitution extends GeneralStatement {
type: 'PipeSubstitution'
}
function makeLiteral(tokens: Token[], index: number): Literal { function makeLiteral(tokens: Token[], index: number): Literal {
const token = tokens[index] const token = tokens[index]
const value = const value =
@ -626,11 +486,6 @@ function makeLiteral(tokens: Token[], index: number): Literal {
} }
} }
export interface ArrayExpression extends GeneralStatement {
type: 'ArrayExpression'
elements: Value[]
}
function makeArrayElements( function makeArrayElements(
tokens: Token[], tokens: Token[],
index: number, index: number,
@ -686,17 +541,6 @@ function makeArrayExpression(
} }
} }
export interface ObjectExpression extends GeneralStatement {
type: 'ObjectExpression'
properties: ObjectProperty[]
}
interface ObjectProperty extends GeneralStatement {
type: 'ObjectProperty'
key: Identifier
value: Value
}
function makeObjectExpression( function makeObjectExpression(
tokens: Token[], tokens: Token[],
index: number index: number
@ -765,13 +609,6 @@ function makeObjectProperties(
]) ])
} }
export interface MemberExpression extends GeneralStatement {
type: 'MemberExpression'
object: MemberExpression | Identifier
property: Identifier | Literal
computed: boolean
}
function makeMemberExpression( function makeMemberExpression(
tokens: Token[], tokens: Token[],
index: number index: number
@ -808,12 +645,6 @@ function makeMemberExpression(
} }
} }
interface ObjectKeyInfo {
key: Identifier | Literal
index: number
computed: boolean
}
function collectObjectKeys( function collectObjectKeys(
tokens: Token[], tokens: Token[],
index: number, index: number,
@ -859,13 +690,6 @@ function collectObjectKeys(
]) ])
} }
export interface BinaryExpression extends GeneralStatement {
type: 'BinaryExpression'
operator: string
left: BinaryPart
right: BinaryPart
}
export function findEndOfBinaryExpression( export function findEndOfBinaryExpression(
tokens: Token[], tokens: Token[],
index: number index: number
@ -922,12 +746,6 @@ function makeBinaryExpression(
} }
} }
export interface UnaryExpression extends GeneralStatement {
type: 'UnaryExpression'
operator: '-' | '!'
argument: BinaryPart
}
function makeUnaryExpression( function makeUnaryExpression(
tokens: Token[], tokens: Token[],
index: number index: number
@ -950,12 +768,6 @@ function makeUnaryExpression(
} }
} }
export interface PipeExpression extends GeneralStatement {
type: 'PipeExpression'
body: Value[]
nonCodeMeta: NoneCodeMeta
}
function makePipeExpression( function makePipeExpression(
tokens: Token[], tokens: Token[],
index: number index: number
@ -1017,13 +829,6 @@ function makePipeBody(
) )
} }
export interface FunctionExpression extends GeneralStatement {
type: 'FunctionExpression'
id: Identifier | null
params: Identifier[]
body: BlockStatement
}
function makeFunctionExpression( function makeFunctionExpression(
tokens: Token[], tokens: Token[],
index: number index: number
@ -1072,12 +877,6 @@ function makeParams(
]) ])
} }
export interface BlockStatement extends GeneralStatement {
type: 'BlockStatement'
body: BodyItem[]
nonCodeMeta: NoneCodeMeta
}
function makeBlockStatement( function makeBlockStatement(
tokens: Token[], tokens: Token[],
index: number index: number
@ -1100,11 +899,6 @@ function makeBlockStatement(
} }
} }
export interface ReturnStatement extends GeneralStatement {
type: 'ReturnStatement'
argument: Value
}
function makeReturnStatement( function makeReturnStatement(
tokens: Token[], tokens: Token[],
index: number index: number
@ -1123,8 +917,6 @@ function makeReturnStatement(
} }
} }
export type All = Program | ExpressionStatement[] | BinaryExpression | Literal
function nextMeaningfulToken( function nextMeaningfulToken(
tokens: Token[], tokens: Token[],
index: number, index: number,
@ -1163,8 +955,6 @@ function previousMeaningfulToken(
return { token, index: newIndex } return { token, index: newIndex }
} }
type BodyItem = ExpressionStatement | VariableDeclaration | ReturnStatement
function makeBody( function makeBody(
{ {
tokens, tokens,

View File

@ -0,0 +1,177 @@
export type SyntaxType =
| 'Program'
| 'ExpressionStatement'
| 'BinaryExpression'
| 'CallExpression'
| 'Identifier'
| 'BlockStatement'
| 'ReturnStatement'
| 'VariableDeclaration'
| 'VariableDeclarator'
| 'MemberExpression'
| 'ArrayExpression'
| 'ObjectExpression'
| 'ObjectProperty'
| 'FunctionExpression'
| 'PipeExpression'
| 'PipeSubstitution'
| 'Literal'
| 'NoneCodeNode'
| 'UnaryExpression'
export interface Program {
type: SyntaxType
start: number
end: number
body: BodyItem[]
nonCodeMeta: NoneCodeMeta
}
interface GeneralStatement {
type: SyntaxType
start: number
end: number
}
export type BodyItem =
| ExpressionStatement
| VariableDeclaration
| ReturnStatement
export type Value =
| Literal
| Identifier
| BinaryExpression
| FunctionExpression
| CallExpression
| PipeExpression
| PipeSubstitution
| ArrayExpression
| ObjectExpression
| MemberExpression
| UnaryExpression
export type BinaryPart =
| Literal
| Identifier
| BinaryExpression
| CallExpression
| UnaryExpression
export interface NoneCodeNode extends GeneralStatement {
type: 'NoneCodeNode'
value: string
}
export interface NoneCodeMeta {
// Stores the whitespace/comments that go after the statement who's index we're using here
[statementIndex: number]: NoneCodeNode
// Which is why we also need `start` for and whitespace at the start of the file/block
start?: NoneCodeNode
}
export interface ExpressionStatement extends GeneralStatement {
type: 'ExpressionStatement'
expression: Value
}
export interface CallExpression extends GeneralStatement {
type: 'CallExpression'
callee: Identifier
arguments: Value[]
optional: boolean
}
export interface VariableDeclaration extends GeneralStatement {
type: 'VariableDeclaration'
declarations: VariableDeclarator[]
kind: 'const' | 'unknown' | 'fn' //| "solid" | "surface" | "face"
}
export interface VariableDeclarator extends GeneralStatement {
type: 'VariableDeclarator'
id: Identifier
init: Value
}
export interface Literal extends GeneralStatement {
type: 'Literal'
value: string | number | boolean | null
raw: string
}
export interface Identifier extends GeneralStatement {
type: 'Identifier'
name: string
}
export interface PipeSubstitution extends GeneralStatement {
type: 'PipeSubstitution'
}
export interface ArrayExpression extends GeneralStatement {
type: 'ArrayExpression'
elements: Value[]
}
export interface ObjectExpression extends GeneralStatement {
type: 'ObjectExpression'
properties: ObjectProperty[]
}
export interface ObjectProperty extends GeneralStatement {
type: 'ObjectProperty'
key: Identifier
value: Value
}
export interface MemberExpression extends GeneralStatement {
type: 'MemberExpression'
object: MemberExpression | Identifier
property: Identifier | Literal
computed: boolean
}
export interface ObjectKeyInfo {
key: Identifier | Literal
index: number
computed: boolean
}
export interface BinaryExpression extends GeneralStatement {
type: 'BinaryExpression'
operator: string
left: BinaryPart
right: BinaryPart
}
export interface UnaryExpression extends GeneralStatement {
type: 'UnaryExpression'
operator: '-' | '!'
argument: BinaryPart
}
export interface PipeExpression extends GeneralStatement {
type: 'PipeExpression'
body: Value[]
nonCodeMeta: NoneCodeMeta
}
export interface FunctionExpression extends GeneralStatement {
type: 'FunctionExpression'
id: Identifier | null
params: Identifier[]
body: BlockStatement
}
export interface BlockStatement extends GeneralStatement {
type: 'BlockStatement'
body: BodyItem[]
nonCodeMeta: NoneCodeMeta
}
export interface ReturnStatement extends GeneralStatement {
type: 'ReturnStatement'
argument: Value
}
export type All = Program | ExpressionStatement[] | BinaryExpression | Literal

View File

@ -3,6 +3,8 @@ import {
Literal, Literal,
Identifier, Identifier,
CallExpression, CallExpression,
} from './abstractSyntaxTreeTypes'
import {
findClosingBrace, findClosingBrace,
makeCallExpression, makeCallExpression,
isNotCodeToken, isNotCodeToken,

View File

@ -9,7 +9,7 @@ import {
CallExpression, CallExpression,
ArrayExpression, ArrayExpression,
UnaryExpression, UnaryExpression,
} from './abstractSyntaxTree' } from './abstractSyntaxTreeTypes'
import { InternalFnNames } from './std/stdTypes' import { InternalFnNames } from './std/stdTypes'
import { internalFns } from './std/std' import { internalFns } from './std/std'
import { import {

View File

@ -14,7 +14,7 @@ import {
ObjectExpression, ObjectExpression,
UnaryExpression, UnaryExpression,
BinaryExpression, BinaryExpression,
} from './abstractSyntaxTree' } from './abstractSyntaxTreeTypes'
import { import {
findAllPreviousVariables, findAllPreviousVariables,
getNodeFromPath, getNodeFromPath,

View File

@ -10,7 +10,7 @@ import {
VariableDeclaration, VariableDeclaration,
ReturnStatement, ReturnStatement,
ArrayExpression, ArrayExpression,
} from './abstractSyntaxTree' } from './abstractSyntaxTreeTypes'
import { createIdentifier, splitPathAtLastIndex } from './modifyAst' import { createIdentifier, splitPathAtLastIndex } from './modifyAst'
import { getSketchSegmentFromSourceRange } from './std/sketchConstraints' import { getSketchSegmentFromSourceRange } from './std/sketchConstraints'
import { getAngle } from '../lib/utils' import { getAngle } from '../lib/utils'

View File

@ -1,5 +1,6 @@
import { recast } from './recast' import { recast } from './recast'
import { Program, abstractSyntaxTree } from './abstractSyntaxTree' import { abstractSyntaxTree } from './abstractSyntaxTree'
import { Program } from './abstractSyntaxTreeTypes'
import { lexer, Token } from './tokeniser' import { lexer, Token } from './tokeniser'
import fs from 'node:fs' import fs from 'node:fs'
import { initPromise } from './rust' import { initPromise } from './rust'

View File

@ -11,7 +11,7 @@ import {
MemberExpression, MemberExpression,
PipeExpression, PipeExpression,
UnaryExpression, UnaryExpression,
} from './abstractSyntaxTree' } from './abstractSyntaxTreeTypes'
import { precedence } from './astMathExpressions' import { precedence } from './astMathExpressions'
export function recast( export function recast(

View File

@ -13,7 +13,7 @@ import {
Value, Value,
Literal, Literal,
VariableDeclaration, VariableDeclaration,
} from '../abstractSyntaxTree' } from '../abstractSyntaxTreeTypes'
import { import {
getNodeFromPath, getNodeFromPath,
getNodeFromPathCurry, getNodeFromPathCurry,

View File

@ -4,7 +4,7 @@ import {
Program, Program,
VariableDeclarator, VariableDeclarator,
CallExpression, CallExpression,
} from '../abstractSyntaxTree' } from '../abstractSyntaxTreeTypes'
import { SketchGroup, SourceRange } from '../executor' import { SketchGroup, SourceRange } from '../executor'
import { InternalFn } from './stdTypes' import { InternalFn } from './stdTypes'

View File

@ -1,4 +1,5 @@
import { abstractSyntaxTree, Value } from '../abstractSyntaxTree' import { abstractSyntaxTree } from '../abstractSyntaxTree'
import { Value } from '../abstractSyntaxTreeTypes'
import { lexer } from '../tokeniser' import { lexer } from '../tokeniser'
import { import {
getConstraintType, getConstraintType,

View File

@ -6,7 +6,7 @@ import {
Value, Value,
BinaryPart, BinaryPart,
VariableDeclarator, VariableDeclarator,
} from '../abstractSyntaxTree' } from '../abstractSyntaxTreeTypes'
import { import {
getNodeFromPath, getNodeFromPath,
getNodeFromPathCurry, getNodeFromPathCurry,

View File

@ -1,5 +1,5 @@
import { ProgramMemory, Path, SourceRange } from '../executor' import { ProgramMemory, Path, SourceRange } from '../executor'
import { Program, Value } from '../abstractSyntaxTree' import { Program, Value } from '../abstractSyntaxTreeTypes'
import { TooTip } from '../../useStore' import { TooTip } from '../../useStore'
import { PathToNode } from '../executor' import { PathToNode } from '../executor'
import { EngineCommandManager } from './engineConnection' import { EngineCommandManager } from './engineConnection'

View File

@ -1,5 +1,5 @@
import { Selections, StoreState } from '../useStore' import { Selections, StoreState } from '../useStore'
import { Program } from './abstractSyntaxTree' import { Program } from './abstractSyntaxTreeTypes'
import { PathToNode } from './executor' import { PathToNode } from './executor'
import { getNodeFromPath } from './queryAst' import { getNodeFromPath } from './queryAst'

View File

@ -1,4 +1,4 @@
import { Program } from '../lang/abstractSyntaxTree' import { Program } from '../lang/abstractSyntaxTreeTypes'
import { ProgramMemory, _executor } from '../lang/executor' import { ProgramMemory, _executor } from '../lang/executor'
import { EngineCommandManager } from '../lang/std/engineConnection' import { EngineCommandManager } from '../lang/std/engineConnection'

View File

@ -1,7 +1,8 @@
import create from 'zustand' import create from 'zustand'
import { persist } from 'zustand/middleware' import { persist } from 'zustand/middleware'
import { addLineHighlight, EditorView } from './editor/highlightextension' import { addLineHighlight, EditorView } from './editor/highlightextension'
import { Program, abstractSyntaxTree } from './lang/abstractSyntaxTree' import { abstractSyntaxTree } from './lang/abstractSyntaxTree'
import { Program } from './lang/abstractSyntaxTreeTypes'
import { getNodeFromPath } from './lang/queryAst' import { getNodeFromPath } from './lang/queryAst'
import { import {
ProgramMemory, ProgramMemory,