ast

package
v1.1.1-0...-c57de61 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 13, 2018 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	V_ILLEGAL = iota
	V_ARGC
	V_CONVFMT
	V_FILENAME
	V_FNR
	V_FS
	V_NF
	V_NR
	V_OFMT
	V_OFS
	V_ORS
	V_RLENGTH
	V_RS
	V_RSTART
	V_SUBSEP

	V_LAST = V_SUBSEP
)

Variables

This section is empty.

Functions

func IsLValue

func IsLValue(expr Expr) bool

IsLValue returns true if the given expression can be used as an lvalue (on the left-hand side of an assignment, in a ++ or -- operation, or as the third argument to sub or gsub).

func SpecialVarIndex

func SpecialVarIndex(name string) int

SpecialVarIndex returns the "index" of the special variable, or 0 if it's not a special variable.

Types

type Action

type Action struct {
	Pattern []Expr
	Stmts   Stmts
}

Action is pattern-action section of a program.

func (*Action) String

func (a *Action) String() string

type ArrayExpr

type ArrayExpr struct {
	Scope VarScope
	Index int
	Name  string
}

Array reference. Not really a stand-alone expression, except as an argument to split() or a user function call.

func (*ArrayExpr) String

func (e *ArrayExpr) String() string

type AssignExpr

type AssignExpr struct {
	Left  Expr // can be one of: var, array[x], $n
	Right Expr
}

Assignment expression like x = 1234.

func (*AssignExpr) String

func (e *AssignExpr) String() string

type AugAssignExpr

type AugAssignExpr struct {
	Left  Expr // can be one of: var, array[x], $n
	Op    Token
	Right Expr
}

Augmented assignment expression like x += 5.

func (*AugAssignExpr) String

func (e *AugAssignExpr) String() string

type BinaryExpr

type BinaryExpr struct {
	Left  Expr
	Op    Token
	Right Expr
}

Binary expression like 1 + 2.

func (*BinaryExpr) String

func (e *BinaryExpr) String() string

type BlockStmt

type BlockStmt struct {
	Body Stmts
}

Stand-alone block like { print "x" }.

func (*BlockStmt) String

func (s *BlockStmt) String() string

type BreakStmt

type BreakStmt struct{}

Break statement.

func (*BreakStmt) String

func (s *BreakStmt) String() string

type CallExpr

type CallExpr struct {
	Func Token
	Args []Expr
}

Builtin function call like length($1).

func (*CallExpr) String

func (e *CallExpr) String() string

type CondExpr

type CondExpr struct {
	Cond  Expr
	True  Expr
	False Expr
}

Conditional expression like cond ? 1 : 0.

func (*CondExpr) String

func (e *CondExpr) String() string

type ContinueStmt

type ContinueStmt struct{}

Continue statement.

func (*ContinueStmt) String

func (s *ContinueStmt) String() string

type DeleteStmt

type DeleteStmt struct {
	Array *ArrayExpr
	Index []Expr
}

Delete statement like delete a[k].

func (*DeleteStmt) String

func (s *DeleteStmt) String() string

type DoWhileStmt

type DoWhileStmt struct {
	Body Stmts
	Cond Expr
}

Do-while loop.

func (*DoWhileStmt) String

func (s *DoWhileStmt) String() string

type ExitStmt

type ExitStmt struct {
	Status Expr
}

Exit statement.

func (*ExitStmt) String

func (s *ExitStmt) String() string

type Expr

type Expr interface {
	String() string
	// contains filtered or unexported methods
}

Expr is the abstract syntax tree for any AWK expression.

type ExprStmt

type ExprStmt struct {
	Expr Expr
}

Expression statement like a bare function call: my_func(x).

func (*ExprStmt) String

func (s *ExprStmt) String() string

type FieldExpr

type FieldExpr struct {
	Index Expr
}

Field expression like $0.

func (*FieldExpr) String

func (e *FieldExpr) String() string

type ForInStmt

type ForInStmt struct {
	Var   *VarExpr
	Array *ArrayExpr
	Body  Stmts
}

For-in loop: for (k in a) print k, a[k].

func (*ForInStmt) String

func (s *ForInStmt) String() string

type ForStmt

type ForStmt struct {
	Pre  Stmt
	Cond Expr
	Post Stmt
	Body Stmts
}

C-like for loop: for (i=0; i<10; i++) print i.

func (*ForStmt) String

func (s *ForStmt) String() string

type Function

type Function struct {
	Name   string
	Params []string
	Arrays []bool
	Body   Stmts
}

Function is the AST for a user-defined function.

func (*Function) String

func (f *Function) String() string

type GetlineExpr

type GetlineExpr struct {
	Command Expr
	Var     *VarExpr
	File    Expr
}

Getline expression (read from file or pipe input).

func (*GetlineExpr) String

func (e *GetlineExpr) String() string

type IfStmt

type IfStmt struct {
	Cond Expr
	Body Stmts
	Else Stmts
}

If or if-else statement.

func (*IfStmt) String

func (s *IfStmt) String() string

type InExpr

type InExpr struct {
	Index []Expr
	Array *ArrayExpr
}

In expression like (index in array).

func (*InExpr) String

func (e *InExpr) String() string

type IncrExpr

type IncrExpr struct {
	Expr Expr
	Op   Token
	Pre  bool
}

Increment or decrement expression like x++ or --y.

func (*IncrExpr) String

func (e *IncrExpr) String() string

type IndexExpr

type IndexExpr struct {
	Array *ArrayExpr
	Index []Expr
}

Index expression like a[k] (rvalue or lvalue).

func (*IndexExpr) String

func (e *IndexExpr) String() string

type MultiExpr

type MultiExpr struct {
	Exprs []Expr
}

MultiExpr isn't an interpretable expression, but it's used as a pseudo-expression for print[f] parsing.

func (*MultiExpr) String

func (e *MultiExpr) String() string

type NextStmt

type NextStmt struct{}

Next statement.

func (*NextStmt) String

func (s *NextStmt) String() string

type NumExpr

type NumExpr struct {
	Value complex128
}

Literal number like 1234.

func (*NumExpr) String

func (e *NumExpr) String() string

type PrintStmt

type PrintStmt struct {
	Args     []Expr
	Redirect Token
	Dest     Expr
}

Print statement like print $1, $3.

func (*PrintStmt) String

func (s *PrintStmt) String() string

type PrintfStmt

type PrintfStmt struct {
	Args     []Expr
	Redirect Token
	Dest     Expr
}

Printf statement like printf "%3d", 1234.

func (*PrintfStmt) String

func (s *PrintfStmt) String() string

type RegExpr

type RegExpr struct {
	Regex string
}

Stand-alone regex expression, equivalent to: $0 ~ /regex/.

func (*RegExpr) String

func (e *RegExpr) String() string

type ReturnStmt

type ReturnStmt struct {
	Value Expr
}

Return statement.

func (*ReturnStmt) String

func (s *ReturnStmt) String() string

type Stmt

type Stmt interface {
	String() string
	// contains filtered or unexported methods
}

Stmt is the abstract syntax tree for any AWK statement.

type Stmts

type Stmts []Stmt

Stmts is a block containing multiple statements.

func (Stmts) String

func (ss Stmts) String() string

type StrExpr

type StrExpr struct {
	Value string
}

Literal string like "foo".

func (*StrExpr) String

func (e *StrExpr) String() string

type UnaryExpr

type UnaryExpr struct {
	Op    Token
	Value Expr
}

Unary expression like -1234.

func (*UnaryExpr) String

func (e *UnaryExpr) String() string

type UserCallExpr

type UserCallExpr struct {
	Native bool // false = AWK-defined function, true = native Go func
	Index  int
	Name   string
	Args   []Expr
}

User-defined function call like my_func(1, 2, 3). Index is the resolved function index used by the interpreter; Name is the original name used by String().

func (*UserCallExpr) String

func (e *UserCallExpr) String() string

type VarExpr

type VarExpr struct {
	Scope VarScope
	Index int
	Name  string
}

Variable reference (special var, global, or local). Index is the resolved variable index used by the interpreter; Name is the original name used by String().

func (*VarExpr) String

func (e *VarExpr) String() string

type VarScope

type VarScope int
const (
	ScopeSpecial VarScope = iota
	ScopeGlobal
	ScopeLocal
)

type WhileStmt

type WhileStmt struct {
	Cond Expr
	Body Stmts
}

While loop.

func (*WhileStmt) String

func (s *WhileStmt) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL