move ast types into seperate ts file (#169)
This commit is contained in:
@ -1,9 +1,6 @@
|
||||
import { useEffect, useState, useRef } from 'react'
|
||||
import {
|
||||
abstractSyntaxTree,
|
||||
BinaryPart,
|
||||
Value,
|
||||
} from '../lang/abstractSyntaxTree'
|
||||
import { abstractSyntaxTree } from '../lang/abstractSyntaxTree'
|
||||
import { BinaryPart, Value } from '../lang/abstractSyntaxTreeTypes'
|
||||
import { executor } from '../lang/executor'
|
||||
import {
|
||||
createIdentifier,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Dialog, Transition } from '@headlessui/react'
|
||||
import { Fragment, useState } from 'react'
|
||||
import { Value } from '../lang/abstractSyntaxTree'
|
||||
import { Value } from '../lang/abstractSyntaxTreeTypes'
|
||||
import {
|
||||
AvailableVars,
|
||||
addToInputHelper,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Dialog, Transition } from '@headlessui/react'
|
||||
import { Fragment, useState } from 'react'
|
||||
import { Value } from '../lang/abstractSyntaxTree'
|
||||
import { Value } from '../lang/abstractSyntaxTreeTypes'
|
||||
import {
|
||||
AvailableVars,
|
||||
addToInputHelper,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { useState, useEffect } from 'react'
|
||||
import { toolTips, useStore } from '../../useStore'
|
||||
import { Value, VariableDeclarator } from '../../lang/abstractSyntaxTree'
|
||||
import { Value, VariableDeclarator } from '../../lang/abstractSyntaxTreeTypes'
|
||||
import {
|
||||
getNodePathFromSourceRange,
|
||||
getNodeFromPath,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { useState, useEffect } from 'react'
|
||||
import { toolTips, useStore } from '../../useStore'
|
||||
import { Value, VariableDeclarator } from '../../lang/abstractSyntaxTree'
|
||||
import { Value, VariableDeclarator } from '../../lang/abstractSyntaxTreeTypes'
|
||||
import {
|
||||
getNodePathFromSourceRange,
|
||||
getNodeFromPath,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { useState, useEffect } from 'react'
|
||||
import { toolTips, useStore } from '../../useStore'
|
||||
import { Value } from '../../lang/abstractSyntaxTree'
|
||||
import { Value } from '../../lang/abstractSyntaxTreeTypes'
|
||||
import {
|
||||
getNodePathFromSourceRange,
|
||||
getNodeFromPath,
|
||||
|
@ -5,7 +5,7 @@ import {
|
||||
BinaryPart,
|
||||
Value,
|
||||
VariableDeclarator,
|
||||
} from '../../lang/abstractSyntaxTree'
|
||||
} from '../../lang/abstractSyntaxTreeTypes'
|
||||
import {
|
||||
getNodePathFromSourceRange,
|
||||
getNodeFromPath,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { useState, useEffect } from 'react'
|
||||
import { toolTips, useStore } from '../../useStore'
|
||||
import { Value } from '../../lang/abstractSyntaxTree'
|
||||
import { Value } from '../../lang/abstractSyntaxTreeTypes'
|
||||
import {
|
||||
getNodePathFromSourceRange,
|
||||
getNodeFromPath,
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { useState, useEffect } from 'react'
|
||||
import { create } from 'react-modal-promise'
|
||||
import { toolTips, useStore } from '../../useStore'
|
||||
import { Value } from '../../lang/abstractSyntaxTree'
|
||||
import { Value } from '../../lang/abstractSyntaxTreeTypes'
|
||||
import {
|
||||
getNodePathFromSourceRange,
|
||||
getNodeFromPath,
|
||||
|
@ -5,7 +5,7 @@ import {
|
||||
BinaryPart,
|
||||
Value,
|
||||
VariableDeclarator,
|
||||
} from '../../lang/abstractSyntaxTree'
|
||||
} from '../../lang/abstractSyntaxTreeTypes'
|
||||
import {
|
||||
getNodePathFromSourceRange,
|
||||
getNodeFromPath,
|
||||
|
@ -5,7 +5,7 @@ import {
|
||||
BinaryPart,
|
||||
Value,
|
||||
VariableDeclarator,
|
||||
} from '../../lang/abstractSyntaxTree'
|
||||
} from '../../lang/abstractSyntaxTreeTypes'
|
||||
import {
|
||||
getNodePathFromSourceRange,
|
||||
getNodeFromPath,
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { useState, useEffect } from 'react'
|
||||
import { create } from 'react-modal-promise'
|
||||
import { toolTips, useStore } from '../../useStore'
|
||||
import { Value } from '../../lang/abstractSyntaxTree'
|
||||
import { Value } from '../../lang/abstractSyntaxTreeTypes'
|
||||
import {
|
||||
getNodePathFromSourceRange,
|
||||
getNodeFromPath,
|
||||
|
@ -1,107 +1,31 @@
|
||||
import { Token } from './tokeniser'
|
||||
import { parseExpression } from './astMathExpressions'
|
||||
|
||||
export type SyntaxType =
|
||||
| 'Program'
|
||||
| 'ExpressionStatement'
|
||||
| 'BinaryExpression'
|
||||
| 'CallExpression'
|
||||
| 'Identifier'
|
||||
| 'BlockStatement'
|
||||
| 'ReturnStatement'
|
||||
| 'VariableDeclaration'
|
||||
| 'VariableDeclarator'
|
||||
| 'MemberExpression'
|
||||
| 'ArrayExpression'
|
||||
| 'ObjectExpression'
|
||||
| 'ObjectProperty'
|
||||
| 'FunctionExpression'
|
||||
| 'PipeExpression'
|
||||
| 'PipeSubstitution'
|
||||
| 'Literal'
|
||||
| 'NoneCodeNode'
|
||||
| 'UnaryExpression'
|
||||
// | 'NumberLiteral'
|
||||
// | 'StringLiteral'
|
||||
// | 'IfStatement'
|
||||
// | 'WhileStatement'
|
||||
// | 'FunctionDeclaration'
|
||||
// | '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
|
||||
}
|
||||
import {
|
||||
BinaryPart,
|
||||
BodyItem,
|
||||
Identifier,
|
||||
Literal,
|
||||
NoneCodeMeta,
|
||||
NoneCodeNode,
|
||||
ObjectKeyInfo,
|
||||
ObjectProperty,
|
||||
PipeSubstitution,
|
||||
Program,
|
||||
Value,
|
||||
VariableDeclaration,
|
||||
VariableDeclarator,
|
||||
ArrayExpression,
|
||||
BinaryExpression,
|
||||
CallExpression,
|
||||
FunctionExpression,
|
||||
MemberExpression,
|
||||
ObjectExpression,
|
||||
PipeExpression,
|
||||
UnaryExpression,
|
||||
BlockStatement,
|
||||
ExpressionStatement,
|
||||
ReturnStatement,
|
||||
} from './abstractSyntaxTreeTypes'
|
||||
|
||||
function makeNoneCodeNode(
|
||||
tokens: Token[],
|
||||
@ -129,11 +53,6 @@ function findEndOfNonCodeNode(tokens: Token[], index: number): number {
|
||||
return index
|
||||
}
|
||||
|
||||
export interface ExpressionStatement extends GeneralStatement {
|
||||
type: 'ExpressionStatement'
|
||||
expression: Value
|
||||
}
|
||||
|
||||
function makeExpressionStatement(
|
||||
tokens: Token[],
|
||||
index: number
|
||||
@ -165,13 +84,6 @@ function makeExpressionStatement(
|
||||
}
|
||||
}
|
||||
|
||||
export interface CallExpression extends GeneralStatement {
|
||||
type: 'CallExpression'
|
||||
callee: Identifier
|
||||
arguments: Value[]
|
||||
optional: boolean
|
||||
}
|
||||
|
||||
export function makeCallExpression(
|
||||
tokens: Token[],
|
||||
index: number
|
||||
@ -373,12 +285,6 @@ function makeArguments(
|
||||
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(
|
||||
tokens: Token[],
|
||||
index: number
|
||||
@ -407,19 +313,6 @@ function makeVariableDeclaration(
|
||||
}
|
||||
}
|
||||
|
||||
export type Value =
|
||||
| Literal
|
||||
| Identifier
|
||||
| BinaryExpression
|
||||
| FunctionExpression
|
||||
| CallExpression
|
||||
| PipeExpression
|
||||
| PipeSubstitution
|
||||
| ArrayExpression
|
||||
| ObjectExpression
|
||||
| MemberExpression
|
||||
| UnaryExpression
|
||||
|
||||
function makeValue(
|
||||
tokens: Token[],
|
||||
index: number
|
||||
@ -523,12 +416,6 @@ function makeValue(
|
||||
throw new Error('Expected a previous Value if statement to match')
|
||||
}
|
||||
|
||||
export interface VariableDeclarator extends GeneralStatement {
|
||||
type: 'VariableDeclarator'
|
||||
id: Identifier
|
||||
init: Value
|
||||
}
|
||||
|
||||
function makeVariableDeclarators(
|
||||
tokens: Token[],
|
||||
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 {
|
||||
const currentToken = token[index]
|
||||
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 {
|
||||
const token = tokens[index]
|
||||
const value =
|
||||
@ -626,11 +486,6 @@ function makeLiteral(tokens: Token[], index: number): Literal {
|
||||
}
|
||||
}
|
||||
|
||||
export interface ArrayExpression extends GeneralStatement {
|
||||
type: 'ArrayExpression'
|
||||
elements: Value[]
|
||||
}
|
||||
|
||||
function makeArrayElements(
|
||||
tokens: Token[],
|
||||
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(
|
||||
tokens: Token[],
|
||||
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(
|
||||
tokens: Token[],
|
||||
index: number
|
||||
@ -808,12 +645,6 @@ function makeMemberExpression(
|
||||
}
|
||||
}
|
||||
|
||||
interface ObjectKeyInfo {
|
||||
key: Identifier | Literal
|
||||
index: number
|
||||
computed: boolean
|
||||
}
|
||||
|
||||
function collectObjectKeys(
|
||||
tokens: Token[],
|
||||
index: number,
|
||||
@ -859,13 +690,6 @@ function collectObjectKeys(
|
||||
])
|
||||
}
|
||||
|
||||
export interface BinaryExpression extends GeneralStatement {
|
||||
type: 'BinaryExpression'
|
||||
operator: string
|
||||
left: BinaryPart
|
||||
right: BinaryPart
|
||||
}
|
||||
|
||||
export function findEndOfBinaryExpression(
|
||||
tokens: Token[],
|
||||
index: number
|
||||
@ -922,12 +746,6 @@ function makeBinaryExpression(
|
||||
}
|
||||
}
|
||||
|
||||
export interface UnaryExpression extends GeneralStatement {
|
||||
type: 'UnaryExpression'
|
||||
operator: '-' | '!'
|
||||
argument: BinaryPart
|
||||
}
|
||||
|
||||
function makeUnaryExpression(
|
||||
tokens: Token[],
|
||||
index: number
|
||||
@ -950,12 +768,6 @@ function makeUnaryExpression(
|
||||
}
|
||||
}
|
||||
|
||||
export interface PipeExpression extends GeneralStatement {
|
||||
type: 'PipeExpression'
|
||||
body: Value[]
|
||||
nonCodeMeta: NoneCodeMeta
|
||||
}
|
||||
|
||||
function makePipeExpression(
|
||||
tokens: Token[],
|
||||
index: number
|
||||
@ -1017,13 +829,6 @@ function makePipeBody(
|
||||
)
|
||||
}
|
||||
|
||||
export interface FunctionExpression extends GeneralStatement {
|
||||
type: 'FunctionExpression'
|
||||
id: Identifier | null
|
||||
params: Identifier[]
|
||||
body: BlockStatement
|
||||
}
|
||||
|
||||
function makeFunctionExpression(
|
||||
tokens: Token[],
|
||||
index: number
|
||||
@ -1072,12 +877,6 @@ function makeParams(
|
||||
])
|
||||
}
|
||||
|
||||
export interface BlockStatement extends GeneralStatement {
|
||||
type: 'BlockStatement'
|
||||
body: BodyItem[]
|
||||
nonCodeMeta: NoneCodeMeta
|
||||
}
|
||||
|
||||
function makeBlockStatement(
|
||||
tokens: Token[],
|
||||
index: number
|
||||
@ -1100,11 +899,6 @@ function makeBlockStatement(
|
||||
}
|
||||
}
|
||||
|
||||
export interface ReturnStatement extends GeneralStatement {
|
||||
type: 'ReturnStatement'
|
||||
argument: Value
|
||||
}
|
||||
|
||||
function makeReturnStatement(
|
||||
tokens: Token[],
|
||||
index: number
|
||||
@ -1123,8 +917,6 @@ function makeReturnStatement(
|
||||
}
|
||||
}
|
||||
|
||||
export type All = Program | ExpressionStatement[] | BinaryExpression | Literal
|
||||
|
||||
function nextMeaningfulToken(
|
||||
tokens: Token[],
|
||||
index: number,
|
||||
@ -1163,8 +955,6 @@ function previousMeaningfulToken(
|
||||
return { token, index: newIndex }
|
||||
}
|
||||
|
||||
type BodyItem = ExpressionStatement | VariableDeclaration | ReturnStatement
|
||||
|
||||
function makeBody(
|
||||
{
|
||||
tokens,
|
||||
|
177
src/lang/abstractSyntaxTreeTypes.ts
Normal file
177
src/lang/abstractSyntaxTreeTypes.ts
Normal 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
|
@ -3,6 +3,8 @@ import {
|
||||
Literal,
|
||||
Identifier,
|
||||
CallExpression,
|
||||
} from './abstractSyntaxTreeTypes'
|
||||
import {
|
||||
findClosingBrace,
|
||||
makeCallExpression,
|
||||
isNotCodeToken,
|
||||
|
@ -9,7 +9,7 @@ import {
|
||||
CallExpression,
|
||||
ArrayExpression,
|
||||
UnaryExpression,
|
||||
} from './abstractSyntaxTree'
|
||||
} from './abstractSyntaxTreeTypes'
|
||||
import { InternalFnNames } from './std/stdTypes'
|
||||
import { internalFns } from './std/std'
|
||||
import {
|
||||
|
@ -14,7 +14,7 @@ import {
|
||||
ObjectExpression,
|
||||
UnaryExpression,
|
||||
BinaryExpression,
|
||||
} from './abstractSyntaxTree'
|
||||
} from './abstractSyntaxTreeTypes'
|
||||
import {
|
||||
findAllPreviousVariables,
|
||||
getNodeFromPath,
|
||||
|
@ -10,7 +10,7 @@ import {
|
||||
VariableDeclaration,
|
||||
ReturnStatement,
|
||||
ArrayExpression,
|
||||
} from './abstractSyntaxTree'
|
||||
} from './abstractSyntaxTreeTypes'
|
||||
import { createIdentifier, splitPathAtLastIndex } from './modifyAst'
|
||||
import { getSketchSegmentFromSourceRange } from './std/sketchConstraints'
|
||||
import { getAngle } from '../lib/utils'
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { recast } from './recast'
|
||||
import { Program, abstractSyntaxTree } from './abstractSyntaxTree'
|
||||
import { abstractSyntaxTree } from './abstractSyntaxTree'
|
||||
import { Program } from './abstractSyntaxTreeTypes'
|
||||
import { lexer, Token } from './tokeniser'
|
||||
import fs from 'node:fs'
|
||||
import { initPromise } from './rust'
|
||||
|
@ -11,7 +11,7 @@ import {
|
||||
MemberExpression,
|
||||
PipeExpression,
|
||||
UnaryExpression,
|
||||
} from './abstractSyntaxTree'
|
||||
} from './abstractSyntaxTreeTypes'
|
||||
import { precedence } from './astMathExpressions'
|
||||
|
||||
export function recast(
|
||||
|
@ -13,7 +13,7 @@ import {
|
||||
Value,
|
||||
Literal,
|
||||
VariableDeclaration,
|
||||
} from '../abstractSyntaxTree'
|
||||
} from '../abstractSyntaxTreeTypes'
|
||||
import {
|
||||
getNodeFromPath,
|
||||
getNodeFromPathCurry,
|
||||
|
@ -4,7 +4,7 @@ import {
|
||||
Program,
|
||||
VariableDeclarator,
|
||||
CallExpression,
|
||||
} from '../abstractSyntaxTree'
|
||||
} from '../abstractSyntaxTreeTypes'
|
||||
import { SketchGroup, SourceRange } from '../executor'
|
||||
import { InternalFn } from './stdTypes'
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { abstractSyntaxTree, Value } from '../abstractSyntaxTree'
|
||||
import { abstractSyntaxTree } from '../abstractSyntaxTree'
|
||||
import { Value } from '../abstractSyntaxTreeTypes'
|
||||
import { lexer } from '../tokeniser'
|
||||
import {
|
||||
getConstraintType,
|
||||
|
@ -6,7 +6,7 @@ import {
|
||||
Value,
|
||||
BinaryPart,
|
||||
VariableDeclarator,
|
||||
} from '../abstractSyntaxTree'
|
||||
} from '../abstractSyntaxTreeTypes'
|
||||
import {
|
||||
getNodeFromPath,
|
||||
getNodeFromPathCurry,
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { ProgramMemory, Path, SourceRange } from '../executor'
|
||||
import { Program, Value } from '../abstractSyntaxTree'
|
||||
import { Program, Value } from '../abstractSyntaxTreeTypes'
|
||||
import { TooTip } from '../../useStore'
|
||||
import { PathToNode } from '../executor'
|
||||
import { EngineCommandManager } from './engineConnection'
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Selections, StoreState } from '../useStore'
|
||||
import { Program } from './abstractSyntaxTree'
|
||||
import { Program } from './abstractSyntaxTreeTypes'
|
||||
import { PathToNode } from './executor'
|
||||
import { getNodeFromPath } from './queryAst'
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { Program } from '../lang/abstractSyntaxTree'
|
||||
import { Program } from '../lang/abstractSyntaxTreeTypes'
|
||||
import { ProgramMemory, _executor } from '../lang/executor'
|
||||
import { EngineCommandManager } from '../lang/std/engineConnection'
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
import create from 'zustand'
|
||||
import { persist } from 'zustand/middleware'
|
||||
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 {
|
||||
ProgramMemory,
|
||||
|
Reference in New Issue
Block a user