solidity-antlr4
Version:
Solidity Lang Lexer and Parser by official ANTLR4 grammar
68 lines (67 loc) • 3.23 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ReceiveFunctionDefinition = exports.FunctionDefinition = exports.FallbackFunctionDefinition = exports.ConstructorDefinition = exports.BaseFunctionDefinition = void 0;
var _base = require("../base.cjs");
var _antlr = require("../../antlr4/index.cjs");
class BaseFunctionDefinition extends _base.BaseNode {
type = "FunctionDefinition";
name = null;
functionKind = "function";
override = null;
virtual = false;
visibility = null;
stateMutability = null;
modifiers = null;
parameters = null;
returnParameters = null;
body = null;
constructor(ctx, visitor) {
super(ctx, visitor);
if (ctx instanceof _antlr.FunctionTypeNameContext) {
this.functionKind = "function";
this.visibility = ctx.visibility(0)?.getText() ?? null;
this.stateMutability = ctx.stateMutability(0)?.getText() ?? null;
this.parameters = ctx._arguments?.accept(visitor) ?? null;
this.returnParameters = ctx._returnParameters?.accept(visitor) ?? null;
} else {
this.modifiers = ctx.modifierInvocation().map(modifier => modifier.accept(visitor));
this.body = ctx.block()?.accept(visitor) ?? null;
if (ctx instanceof _antlr.ConstructorDefinitionContext) {
this.functionKind = "constructor";
this.visibility = ctx.Internal(0) ? "internal" : ctx.Public(0) ? "public" : null;
this.stateMutability = ctx.Payable(0) ? "payable" : null;
this.parameters = ctx._arguments?.accept(visitor) ?? null;
this.returnParameters = null;
} else {
this.virtual = !!ctx.Virtual().length;
const overrideSpecifier = ctx.overrideSpecifier(0);
this.override = overrideSpecifier ? overrideSpecifier.accept(visitor) : null;
if (ctx instanceof _antlr.FallbackFunctionDefinitionContext) {
this.functionKind = "fallback";
this.visibility = ctx.External(0) ? "external" : null;
this.stateMutability = ctx.stateMutability(0)?.getText() ?? null;
this.parameters = ctx.parameterList().map(parameterList => parameterList.accept(visitor));
this.returnParameters = ctx._returnParameters?.accept(visitor) ?? null;
} else if (ctx instanceof _antlr.ReceiveFunctionDefinitionContext) {
this.functionKind = "receive";
this.visibility = ctx.External() ? "external" : null;
this.stateMutability = ctx.Payable() ? "payable" : null;
} else {
this.functionKind = "function";
this.name = ctx.identifier()?.accept(visitor) ?? null;
this.visibility = ctx.visibility(0)?.getText() ?? null;
this.stateMutability = ctx.stateMutability(0)?.getText() ?? null;
this.parameters = ctx._arguments?.accept(visitor) ?? null;
this.returnParameters = ctx._returnParameters?.accept(visitor) ?? null;
}
}
}
}
}
exports.BaseFunctionDefinition = BaseFunctionDefinition;
class FunctionDefinition extends BaseFunctionDefinition {
type = "FunctionDefinition";
}
exports.ReceiveFunctionDefinition = exports.FallbackFunctionDefinition = exports.ConstructorDefinition = exports.FunctionDefinition = FunctionDefinition;