parent
632d6dc9e4
commit
cccab12a76
@ -0,0 +1,732 @@ |
|||||||
|
// Base on the original type definitions for solidity-parser-antlr 0.2
|
||||||
|
// by Leonid Logvinov <https://github.com/LogvinovLeon>
|
||||||
|
// Alex Browne <https://github.com/albrow>
|
||||||
|
// Xiao Liang <https://github.com/yxliang01>
|
||||||
|
|
||||||
|
export type ParseResult = SourceUnit & { |
||||||
|
errors?: any[] |
||||||
|
tokens?: Token[] |
||||||
|
} |
||||||
|
|
||||||
|
interface Token { |
||||||
|
type: string |
||||||
|
value: string | undefined |
||||||
|
range?: [number, number] |
||||||
|
loc?: { |
||||||
|
start: { |
||||||
|
line: number |
||||||
|
column: number |
||||||
|
} |
||||||
|
end: { |
||||||
|
line: number |
||||||
|
column: number |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
interface Location { |
||||||
|
start: { |
||||||
|
line: number |
||||||
|
column: number |
||||||
|
} |
||||||
|
end: { |
||||||
|
line: number |
||||||
|
column: number |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
export interface BaseASTNode { |
||||||
|
type: ASTNodeTypeString |
||||||
|
range?: [number, number] |
||||||
|
loc?: Location |
||||||
|
} |
||||||
|
|
||||||
|
export interface SourceUnit extends BaseASTNode { |
||||||
|
type: 'SourceUnit' |
||||||
|
children: ASTNode[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface ContractDefinition extends BaseASTNode { |
||||||
|
type: 'ContractDefinition' |
||||||
|
name: string |
||||||
|
baseContracts: InheritanceSpecifier[] |
||||||
|
kind: string |
||||||
|
subNodes: BaseASTNode[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface InheritanceSpecifier extends BaseASTNode { |
||||||
|
type: 'InheritanceSpecifier' |
||||||
|
baseName: UserDefinedTypeName |
||||||
|
arguments: Expression[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface UserDefinedTypeName extends BaseASTNode { |
||||||
|
type: 'UserDefinedTypeName' |
||||||
|
namePath: string |
||||||
|
} |
||||||
|
|
||||||
|
export type ASTNodeTypeString = typeof astNodeTypes[number] |
||||||
|
export interface InvalidNode extends BaseASTNode { |
||||||
|
type: 'InvalidNode' |
||||||
|
name?: string |
||||||
|
value?: string |
||||||
|
} |
||||||
|
export interface PragmaDirective extends BaseASTNode { |
||||||
|
type: 'PragmaDirective' |
||||||
|
name: string |
||||||
|
value: string |
||||||
|
} |
||||||
|
export interface ImportDirective extends BaseASTNode { |
||||||
|
type: 'ImportDirective' |
||||||
|
path: string |
||||||
|
pathLiteral: StringLiteral |
||||||
|
unitAlias: string | null |
||||||
|
unitAliasIdentifier: Identifier | null |
||||||
|
symbolAliases: Array<[string, string | null]> | null |
||||||
|
symbolAliasesIdentifiers: Array<[Identifier, Identifier | null]> | null |
||||||
|
} |
||||||
|
export interface StateVariableDeclaration extends BaseASTNode { |
||||||
|
type: 'StateVariableDeclaration' |
||||||
|
variables: StateVariableDeclarationVariable[] |
||||||
|
initialValue: Expression | null |
||||||
|
} |
||||||
|
export interface FileLevelConstant extends BaseASTNode { |
||||||
|
type: 'FileLevelConstant' |
||||||
|
typeName: TypeName |
||||||
|
name: string |
||||||
|
initialValue: Expression |
||||||
|
isDeclaredConst: boolean |
||||||
|
isImmutable: boolean |
||||||
|
} |
||||||
|
export interface UsingForDeclaration extends BaseASTNode { |
||||||
|
type: 'UsingForDeclaration' |
||||||
|
typeName: TypeName | null |
||||||
|
functions: string[] |
||||||
|
libraryName: string | null |
||||||
|
isGlobal: boolean; |
||||||
|
} |
||||||
|
export interface StructDefinition extends BaseASTNode { |
||||||
|
type: 'StructDefinition' |
||||||
|
name: string |
||||||
|
members: VariableDeclaration[] |
||||||
|
} |
||||||
|
export interface ModifierDefinition extends BaseASTNode { |
||||||
|
type: 'ModifierDefinition' |
||||||
|
name: string |
||||||
|
parameters: null | VariableDeclaration[] |
||||||
|
isVirtual: boolean |
||||||
|
override: null | UserDefinedTypeName[] |
||||||
|
body: Block | null |
||||||
|
} |
||||||
|
export interface ModifierInvocation extends BaseASTNode { |
||||||
|
type: 'ModifierInvocation' |
||||||
|
name: string |
||||||
|
arguments: Expression[] | null |
||||||
|
} |
||||||
|
export interface FunctionDefinition extends BaseASTNode { |
||||||
|
type: 'FunctionDefinition' |
||||||
|
name: string | null |
||||||
|
parameters: VariableDeclaration[] |
||||||
|
modifiers: ModifierInvocation[] |
||||||
|
stateMutability: 'pure' | 'constant' | 'payable' | 'view' | null |
||||||
|
visibility: 'default' | 'external' | 'internal' | 'public' | 'private' |
||||||
|
returnParameters: VariableDeclaration[] | null |
||||||
|
body: Block | null |
||||||
|
override: UserDefinedTypeName[] | null |
||||||
|
isConstructor: boolean |
||||||
|
isReceiveEther: boolean |
||||||
|
isFallback: boolean |
||||||
|
isVirtual: boolean |
||||||
|
} |
||||||
|
|
||||||
|
export interface CustomErrorDefinition extends BaseASTNode { |
||||||
|
type: 'CustomErrorDefinition' |
||||||
|
name: string |
||||||
|
parameters: VariableDeclaration[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface TypeDefinition extends BaseASTNode { |
||||||
|
type: 'TypeDefinition' |
||||||
|
name: string |
||||||
|
definition: ElementaryTypeName |
||||||
|
} |
||||||
|
|
||||||
|
export interface RevertStatement extends BaseASTNode { |
||||||
|
type: 'RevertStatement' |
||||||
|
revertCall: FunctionCall |
||||||
|
} |
||||||
|
export interface EventDefinition extends BaseASTNode { |
||||||
|
type: 'EventDefinition' |
||||||
|
name: string |
||||||
|
parameters: VariableDeclaration[] |
||||||
|
isAnonymous: boolean |
||||||
|
} |
||||||
|
export interface EnumValue extends BaseASTNode { |
||||||
|
type: 'EnumValue' |
||||||
|
name: string |
||||||
|
} |
||||||
|
export interface EnumDefinition extends BaseASTNode { |
||||||
|
type: 'EnumDefinition' |
||||||
|
name: string |
||||||
|
members: EnumValue[] |
||||||
|
} |
||||||
|
export interface VariableDeclaration extends BaseASTNode { |
||||||
|
type: 'VariableDeclaration' |
||||||
|
isIndexed: boolean |
||||||
|
isStateVar: boolean |
||||||
|
typeName: TypeName | null |
||||||
|
name: string | null |
||||||
|
identifier: Identifier | null |
||||||
|
isDeclaredConst?: boolean |
||||||
|
storageLocation: string | null |
||||||
|
expression: Expression | null |
||||||
|
visibility?: 'public' | 'private' | 'internal' | 'default' |
||||||
|
} |
||||||
|
export interface StateVariableDeclarationVariable extends VariableDeclaration { |
||||||
|
override: null | UserDefinedTypeName[] |
||||||
|
isImmutable: boolean |
||||||
|
} |
||||||
|
export interface ArrayTypeName extends BaseASTNode { |
||||||
|
type: 'ArrayTypeName' |
||||||
|
baseTypeName: TypeName |
||||||
|
length: Expression | null |
||||||
|
} |
||||||
|
export interface Mapping extends BaseASTNode { |
||||||
|
type: 'Mapping' |
||||||
|
keyType: ElementaryTypeName | UserDefinedTypeName |
||||||
|
valueType: TypeName |
||||||
|
} |
||||||
|
export interface FunctionTypeName extends BaseASTNode { |
||||||
|
type: 'FunctionTypeName' |
||||||
|
parameterTypes: VariableDeclaration[] |
||||||
|
returnTypes: VariableDeclaration[] |
||||||
|
visibility: string |
||||||
|
stateMutability: string | null |
||||||
|
} |
||||||
|
|
||||||
|
export interface Block extends BaseASTNode { |
||||||
|
type: 'Block' |
||||||
|
statements: BaseASTNode[] |
||||||
|
} |
||||||
|
export interface ExpressionStatement extends BaseASTNode { |
||||||
|
type: 'ExpressionStatement' |
||||||
|
expression: Expression | null |
||||||
|
} |
||||||
|
export interface IfStatement extends BaseASTNode { |
||||||
|
type: 'IfStatement' |
||||||
|
condition: Expression |
||||||
|
trueBody: Statement |
||||||
|
falseBody: Statement | null |
||||||
|
} |
||||||
|
export interface UncheckedStatement extends BaseASTNode { |
||||||
|
type: 'UncheckedStatement' |
||||||
|
block: Block |
||||||
|
} |
||||||
|
export interface TryStatement extends BaseASTNode { |
||||||
|
type: 'TryStatement' |
||||||
|
expression: Expression |
||||||
|
returnParameters: VariableDeclaration[] | null |
||||||
|
body: Block |
||||||
|
catchClauses: CatchClause[] |
||||||
|
} |
||||||
|
export interface CatchClause extends BaseASTNode { |
||||||
|
type: 'CatchClause' |
||||||
|
isReasonStringType: boolean |
||||||
|
kind: string | null |
||||||
|
parameters: VariableDeclaration[] | null |
||||||
|
body: Block |
||||||
|
} |
||||||
|
export interface WhileStatement extends BaseASTNode { |
||||||
|
type: 'WhileStatement' |
||||||
|
condition: Expression |
||||||
|
body: Statement |
||||||
|
} |
||||||
|
export interface ForStatement extends BaseASTNode { |
||||||
|
type: 'ForStatement' |
||||||
|
initExpression: SimpleStatement | null |
||||||
|
conditionExpression?: Expression |
||||||
|
loopExpression: ExpressionStatement |
||||||
|
body: Statement |
||||||
|
} |
||||||
|
export interface InlineAssemblyStatement extends BaseASTNode { |
||||||
|
type: 'InlineAssemblyStatement' |
||||||
|
language: string | null |
||||||
|
flags: string[] |
||||||
|
body: AssemblyBlock |
||||||
|
} |
||||||
|
export interface DoWhileStatement extends BaseASTNode { |
||||||
|
type: 'DoWhileStatement' |
||||||
|
condition: Expression |
||||||
|
body: Statement |
||||||
|
} |
||||||
|
export interface ContinueStatement extends BaseASTNode { |
||||||
|
type: 'ContinueStatement' |
||||||
|
} |
||||||
|
export interface Break extends BaseASTNode { |
||||||
|
type: 'Break' |
||||||
|
} |
||||||
|
export interface Continue extends BaseASTNode { |
||||||
|
type: 'Continue' |
||||||
|
} |
||||||
|
export interface BreakStatement extends BaseASTNode { |
||||||
|
type: 'BreakStatement' |
||||||
|
} |
||||||
|
export interface ReturnStatement extends BaseASTNode { |
||||||
|
type: 'ReturnStatement' |
||||||
|
expression: Expression | null |
||||||
|
} |
||||||
|
export interface EmitStatement extends BaseASTNode { |
||||||
|
type: 'EmitStatement' |
||||||
|
eventCall: FunctionCall |
||||||
|
} |
||||||
|
export interface ThrowStatement extends BaseASTNode { |
||||||
|
type: 'ThrowStatement' |
||||||
|
} |
||||||
|
export interface VariableDeclarationStatement extends BaseASTNode { |
||||||
|
type: 'VariableDeclarationStatement' |
||||||
|
variables: Array<BaseASTNode | null> |
||||||
|
initialValue: Expression | null |
||||||
|
} |
||||||
|
export interface ElementaryTypeName extends BaseASTNode { |
||||||
|
type: 'ElementaryTypeName' |
||||||
|
name: string |
||||||
|
stateMutability: string | null |
||||||
|
} |
||||||
|
export interface FunctionCall extends BaseASTNode { |
||||||
|
type: 'FunctionCall' |
||||||
|
expression: Expression |
||||||
|
arguments: Expression[] |
||||||
|
names: string[] |
||||||
|
identifiers: Identifier[] |
||||||
|
} |
||||||
|
export interface AssemblyBlock extends BaseASTNode { |
||||||
|
type: 'AssemblyBlock' |
||||||
|
operations: AssemblyItem[] |
||||||
|
} |
||||||
|
export interface AssemblyCall extends BaseASTNode { |
||||||
|
type: 'AssemblyCall' |
||||||
|
functionName: string |
||||||
|
arguments: AssemblyExpression[] |
||||||
|
} |
||||||
|
export interface AssemblyLocalDefinition extends BaseASTNode { |
||||||
|
type: 'AssemblyLocalDefinition' |
||||||
|
names: Identifier[] | AssemblyMemberAccess[] |
||||||
|
expression: AssemblyExpression | null |
||||||
|
} |
||||||
|
export interface AssemblyAssignment extends BaseASTNode { |
||||||
|
type: 'AssemblyAssignment' |
||||||
|
names: Identifier[] | AssemblyMemberAccess[] |
||||||
|
expression: AssemblyExpression |
||||||
|
} |
||||||
|
export interface AssemblyStackAssignment extends BaseASTNode { |
||||||
|
type: 'AssemblyStackAssignment' |
||||||
|
name: string |
||||||
|
expression: AssemblyExpression |
||||||
|
} |
||||||
|
export interface LabelDefinition extends BaseASTNode { |
||||||
|
type: 'LabelDefinition' |
||||||
|
name: string |
||||||
|
} |
||||||
|
export interface AssemblySwitch extends BaseASTNode { |
||||||
|
type: 'AssemblySwitch' |
||||||
|
expression: AssemblyExpression |
||||||
|
cases: AssemblyCase[] |
||||||
|
} |
||||||
|
export interface AssemblyCase extends BaseASTNode { |
||||||
|
type: 'AssemblyCase' |
||||||
|
value: AssemblyLiteral | null |
||||||
|
block: AssemblyBlock |
||||||
|
default: boolean |
||||||
|
} |
||||||
|
export interface AssemblyFunctionDefinition extends BaseASTNode { |
||||||
|
type: 'AssemblyFunctionDefinition' |
||||||
|
name: string |
||||||
|
arguments: Identifier[] |
||||||
|
returnArguments: Identifier[] |
||||||
|
body: AssemblyBlock |
||||||
|
} |
||||||
|
export interface AssemblyFunctionReturns extends BaseASTNode { |
||||||
|
type: 'AssemblyFunctionReturns' |
||||||
|
} |
||||||
|
export interface AssemblyFor extends BaseASTNode { |
||||||
|
type: 'AssemblyFor' |
||||||
|
pre: AssemblyBlock | AssemblyExpression |
||||||
|
condition: AssemblyExpression |
||||||
|
post: AssemblyBlock | AssemblyExpression |
||||||
|
body: AssemblyBlock |
||||||
|
} |
||||||
|
export interface AssemblyIf extends BaseASTNode { |
||||||
|
type: 'AssemblyIf' |
||||||
|
condition: AssemblyExpression |
||||||
|
body: AssemblyBlock |
||||||
|
} |
||||||
|
export type AssemblyLiteral = |
||||||
|
| StringLiteral |
||||||
|
| DecimalNumber |
||||||
|
| HexNumber |
||||||
|
| HexLiteral |
||||||
|
export interface SubAssembly extends BaseASTNode { |
||||||
|
type: 'SubAssembly' |
||||||
|
} |
||||||
|
export interface AssemblyMemberAccess extends BaseASTNode { |
||||||
|
type: 'AssemblyMemberAccess' |
||||||
|
expression: Identifier |
||||||
|
memberName: Identifier |
||||||
|
} |
||||||
|
export interface NewExpression extends BaseASTNode { |
||||||
|
type: 'NewExpression' |
||||||
|
typeName: TypeName |
||||||
|
} |
||||||
|
export interface TupleExpression extends BaseASTNode { |
||||||
|
type: 'TupleExpression' |
||||||
|
components: Array<BaseASTNode | null> |
||||||
|
isArray: boolean |
||||||
|
} |
||||||
|
export interface NameValueExpression extends BaseASTNode { |
||||||
|
type: 'NameValueExpression' |
||||||
|
expression: Expression |
||||||
|
arguments: NameValueList |
||||||
|
} |
||||||
|
export interface NumberLiteral extends BaseASTNode { |
||||||
|
type: 'NumberLiteral' |
||||||
|
number: string |
||||||
|
subdenomination: |
||||||
|
| null |
||||||
|
| 'wei' |
||||||
|
| 'szabo' |
||||||
|
| 'finney' |
||||||
|
| 'ether' |
||||||
|
| 'seconds' |
||||||
|
| 'minutes' |
||||||
|
| 'hours' |
||||||
|
| 'days' |
||||||
|
| 'weeks' |
||||||
|
| 'years' |
||||||
|
} |
||||||
|
export interface BooleanLiteral extends BaseASTNode { |
||||||
|
type: 'BooleanLiteral' |
||||||
|
value: boolean |
||||||
|
} |
||||||
|
export interface HexLiteral extends BaseASTNode { |
||||||
|
type: 'HexLiteral' |
||||||
|
value: string |
||||||
|
parts: string[] |
||||||
|
} |
||||||
|
export interface StringLiteral extends BaseASTNode { |
||||||
|
type: 'StringLiteral' |
||||||
|
value: string |
||||||
|
parts: string[] |
||||||
|
isUnicode: boolean[] |
||||||
|
} |
||||||
|
export interface Identifier extends BaseASTNode { |
||||||
|
type: 'Identifier' |
||||||
|
name: string |
||||||
|
} |
||||||
|
|
||||||
|
export interface BinaryOperation extends BaseASTNode { |
||||||
|
type: 'BinaryOperation' |
||||||
|
left: Expression |
||||||
|
right: Expression |
||||||
|
operator: BinOp |
||||||
|
} |
||||||
|
export interface UnaryOperation extends BaseASTNode { |
||||||
|
type: 'UnaryOperation' |
||||||
|
operator: UnaryOp |
||||||
|
subExpression: Expression |
||||||
|
isPrefix: boolean |
||||||
|
} |
||||||
|
export interface Conditional extends BaseASTNode { |
||||||
|
type: 'Conditional' |
||||||
|
condition: Expression |
||||||
|
trueExpression: Expression |
||||||
|
falseExpression: Expression |
||||||
|
} |
||||||
|
export interface IndexAccess extends BaseASTNode { |
||||||
|
type: 'IndexAccess' |
||||||
|
base: Expression |
||||||
|
index: Expression |
||||||
|
} |
||||||
|
export interface IndexRangeAccess extends BaseASTNode { |
||||||
|
type: 'IndexRangeAccess' |
||||||
|
base: Expression |
||||||
|
indexStart?: Expression |
||||||
|
indexEnd?: Expression |
||||||
|
} |
||||||
|
export interface MemberAccess extends BaseASTNode { |
||||||
|
type: 'MemberAccess' |
||||||
|
expression: Expression |
||||||
|
memberName: string |
||||||
|
} |
||||||
|
export interface HexNumber extends BaseASTNode { |
||||||
|
type: 'HexNumber' |
||||||
|
value: string |
||||||
|
} |
||||||
|
export interface DecimalNumber extends BaseASTNode { |
||||||
|
type: 'DecimalNumber' |
||||||
|
value: string |
||||||
|
} |
||||||
|
export interface NameValueList extends BaseASTNode { |
||||||
|
type: 'NameValueList' |
||||||
|
names: string[] |
||||||
|
identifiers: Identifier[] |
||||||
|
arguments: Expression[] |
||||||
|
} |
||||||
|
|
||||||
|
export type ASTNode = |
||||||
|
| SourceUnit |
||||||
|
| PragmaDirective |
||||||
|
| ImportDirective |
||||||
|
| ContractDefinition |
||||||
|
| InheritanceSpecifier |
||||||
|
| StateVariableDeclaration |
||||||
|
| UsingForDeclaration |
||||||
|
| StructDefinition |
||||||
|
| ModifierDefinition |
||||||
|
| ModifierInvocation |
||||||
|
| FunctionDefinition |
||||||
|
| EventDefinition |
||||||
|
| CustomErrorDefinition |
||||||
|
| EnumValue |
||||||
|
| EnumDefinition |
||||||
|
| VariableDeclaration |
||||||
|
| TypeName |
||||||
|
| UserDefinedTypeName |
||||||
|
| Mapping |
||||||
|
| FunctionTypeName |
||||||
|
| Block |
||||||
|
| Statement |
||||||
|
| ElementaryTypeName |
||||||
|
| AssemblyBlock |
||||||
|
| AssemblyCall |
||||||
|
| AssemblyLocalDefinition |
||||||
|
| AssemblyAssignment |
||||||
|
| AssemblyStackAssignment |
||||||
|
| LabelDefinition |
||||||
|
| AssemblySwitch |
||||||
|
| AssemblyCase |
||||||
|
| AssemblyFunctionDefinition |
||||||
|
| AssemblyFunctionReturns |
||||||
|
| AssemblyFor |
||||||
|
| AssemblyIf |
||||||
|
| AssemblyLiteral |
||||||
|
| SubAssembly |
||||||
|
| TupleExpression |
||||||
|
| BinaryOperation |
||||||
|
| Conditional |
||||||
|
| IndexAccess |
||||||
|
| IndexRangeAccess |
||||||
|
| AssemblyItem |
||||||
|
| Expression |
||||||
|
| NameValueList |
||||||
|
| AssemblyMemberAccess |
||||||
|
| CatchClause |
||||||
|
| FileLevelConstant |
||||||
|
| TypeDefinition |
||||||
|
| InvalidNode |
||||||
|
|
||||||
|
export type AssemblyItem = |
||||||
|
| Identifier |
||||||
|
| AssemblyBlock |
||||||
|
| AssemblyExpression |
||||||
|
| AssemblyLocalDefinition |
||||||
|
| AssemblyAssignment |
||||||
|
| AssemblyStackAssignment |
||||||
|
| LabelDefinition |
||||||
|
| AssemblySwitch |
||||||
|
| AssemblyFunctionDefinition |
||||||
|
| AssemblyFor |
||||||
|
| AssemblyIf |
||||||
|
| Break |
||||||
|
| Continue |
||||||
|
| SubAssembly |
||||||
|
| NumberLiteral |
||||||
|
| StringLiteral |
||||||
|
| HexNumber |
||||||
|
| HexLiteral |
||||||
|
| DecimalNumber |
||||||
|
export type AssemblyExpression = AssemblyCall | AssemblyLiteral |
||||||
|
export type Expression = |
||||||
|
| IndexAccess |
||||||
|
| IndexRangeAccess |
||||||
|
| TupleExpression |
||||||
|
| BinaryOperation |
||||||
|
| Conditional |
||||||
|
| MemberAccess |
||||||
|
| FunctionCall |
||||||
|
| UnaryOperation |
||||||
|
| NewExpression |
||||||
|
| PrimaryExpression |
||||||
|
| NameValueExpression |
||||||
|
export type PrimaryExpression = |
||||||
|
| BooleanLiteral |
||||||
|
| HexLiteral |
||||||
|
| StringLiteral |
||||||
|
| NumberLiteral |
||||||
|
| Identifier |
||||||
|
| TupleExpression |
||||||
|
| TypeName |
||||||
|
export type SimpleStatement = VariableDeclarationStatement | ExpressionStatement |
||||||
|
export type TypeName = |
||||||
|
| ElementaryTypeName |
||||||
|
| UserDefinedTypeName |
||||||
|
| Mapping |
||||||
|
| ArrayTypeName |
||||||
|
| FunctionTypeName |
||||||
|
export type Statement = |
||||||
|
| IfStatement |
||||||
|
| WhileStatement |
||||||
|
| ForStatement |
||||||
|
| Block |
||||||
|
| InlineAssemblyStatement |
||||||
|
| DoWhileStatement |
||||||
|
| ContinueStatement |
||||||
|
| BreakStatement |
||||||
|
| ReturnStatement |
||||||
|
| EmitStatement |
||||||
|
| ThrowStatement |
||||||
|
| SimpleStatement |
||||||
|
| VariableDeclarationStatement |
||||||
|
| UncheckedStatement |
||||||
|
| TryStatement |
||||||
|
| RevertStatement |
||||||
|
|
||||||
|
type ASTMap<U> = { [K in ASTNodeTypeString]: U extends { type: K } ? U : never } |
||||||
|
type ASTTypeMap = ASTMap<ASTNode> |
||||||
|
|
||||||
|
|
||||||
|
export const astNodeTypes = [ |
||||||
|
'SourceUnit', |
||||||
|
'PragmaDirective', |
||||||
|
'ImportDirective', |
||||||
|
'ContractDefinition', |
||||||
|
'InheritanceSpecifier', |
||||||
|
'StateVariableDeclaration', |
||||||
|
'UsingForDeclaration', |
||||||
|
'StructDefinition', |
||||||
|
'ModifierDefinition', |
||||||
|
'ModifierInvocation', |
||||||
|
'FunctionDefinition', |
||||||
|
'EventDefinition', |
||||||
|
'CustomErrorDefinition', |
||||||
|
'RevertStatement', |
||||||
|
'EnumValue', |
||||||
|
'EnumDefinition', |
||||||
|
'VariableDeclaration', |
||||||
|
'UserDefinedTypeName', |
||||||
|
'Mapping', |
||||||
|
'ArrayTypeName', |
||||||
|
'FunctionTypeName', |
||||||
|
'Block', |
||||||
|
'ExpressionStatement', |
||||||
|
'IfStatement', |
||||||
|
'WhileStatement', |
||||||
|
'ForStatement', |
||||||
|
'InlineAssemblyStatement', |
||||||
|
'DoWhileStatement', |
||||||
|
'ContinueStatement', |
||||||
|
'Break', |
||||||
|
'Continue', |
||||||
|
'BreakStatement', |
||||||
|
'ReturnStatement', |
||||||
|
'EmitStatement', |
||||||
|
'ThrowStatement', |
||||||
|
'VariableDeclarationStatement', |
||||||
|
'ElementaryTypeName', |
||||||
|
'FunctionCall', |
||||||
|
'AssemblyBlock', |
||||||
|
'AssemblyCall', |
||||||
|
'AssemblyLocalDefinition', |
||||||
|
'AssemblyAssignment', |
||||||
|
'AssemblyStackAssignment', |
||||||
|
'LabelDefinition', |
||||||
|
'AssemblySwitch', |
||||||
|
'AssemblyCase', |
||||||
|
'AssemblyFunctionDefinition', |
||||||
|
'AssemblyFunctionReturns', |
||||||
|
'AssemblyFor', |
||||||
|
'AssemblyIf', |
||||||
|
'SubAssembly', |
||||||
|
'TupleExpression', |
||||||
|
'NameValueExpression', |
||||||
|
'BooleanLiteral', |
||||||
|
'NumberLiteral', |
||||||
|
'Identifier', |
||||||
|
'BinaryOperation', |
||||||
|
'UnaryOperation', |
||||||
|
'NewExpression', |
||||||
|
'Conditional', |
||||||
|
'StringLiteral', |
||||||
|
'HexLiteral', |
||||||
|
'HexNumber', |
||||||
|
'DecimalNumber', |
||||||
|
'MemberAccess', |
||||||
|
'IndexAccess', |
||||||
|
'IndexRangeAccess', |
||||||
|
'NameValueList', |
||||||
|
'UncheckedStatement', |
||||||
|
'TryStatement', |
||||||
|
'CatchClause', |
||||||
|
'FileLevelConstant', |
||||||
|
'AssemblyMemberAccess', |
||||||
|
'TypeDefinition', |
||||||
|
'InvalidNode' |
||||||
|
] as const |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export const binaryOpValues = [ |
||||||
|
'+', |
||||||
|
'-', |
||||||
|
'*', |
||||||
|
'/', |
||||||
|
'**', |
||||||
|
'%', |
||||||
|
'<<', |
||||||
|
'>>', |
||||||
|
'&&', |
||||||
|
'||', |
||||||
|
',,', |
||||||
|
'&', |
||||||
|
',', |
||||||
|
'^', |
||||||
|
'<', |
||||||
|
'>', |
||||||
|
'<=', |
||||||
|
'>=', |
||||||
|
'==', |
||||||
|
'!=', |
||||||
|
'=', |
||||||
|
',=', |
||||||
|
'^=', |
||||||
|
'&=', |
||||||
|
'<<=', |
||||||
|
'>>=', |
||||||
|
'+=', |
||||||
|
'-=', |
||||||
|
'*=', |
||||||
|
'/=', |
||||||
|
'%=', |
||||||
|
'|', |
||||||
|
'|=', |
||||||
|
] as const |
||||||
|
export type BinOp = typeof binaryOpValues[number] |
||||||
|
|
||||||
|
export const unaryOpValues = [ |
||||||
|
'-', |
||||||
|
'+', |
||||||
|
'++', |
||||||
|
'--', |
||||||
|
'~', |
||||||
|
'after', |
||||||
|
'delete', |
||||||
|
'!', |
||||||
|
] as const |
||||||
|
export type UnaryOp = typeof unaryOpValues[number] |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@ |
|||||||
|
export * as antlr from './antlr-types' |
Loading…
Reference in new issue