File: specialvars.go

package info (click to toggle)
goawk 1.29.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 10,560 kB
  • sloc: awk: 3,060; yacc: 198; fortran: 189; python: 131; sh: 58; makefile: 12
file content (100 lines) | stat: -rw-r--r-- 1,639 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Special variable constants

package ast

import (
	"fmt"
)

const (
	V_ILLEGAL = iota
	V_ARGC
	V_CONVFMT
	V_FILENAME
	V_FNR
	V_FS
	V_INPUTMODE
	V_NF
	V_NR
	V_OFMT
	V_OFS
	V_ORS
	V_OUTPUTMODE
	V_RLENGTH
	V_RS
	V_RSTART
	V_RT
	V_SUBSEP

	V_LAST = V_SUBSEP
)

var specialVars = map[string]int{
	"ARGC":       V_ARGC,
	"CONVFMT":    V_CONVFMT,
	"FILENAME":   V_FILENAME,
	"FNR":        V_FNR,
	"FS":         V_FS,
	"INPUTMODE":  V_INPUTMODE,
	"NF":         V_NF,
	"NR":         V_NR,
	"OFMT":       V_OFMT,
	"OFS":        V_OFS,
	"ORS":        V_ORS,
	"OUTPUTMODE": V_OUTPUTMODE,
	"RLENGTH":    V_RLENGTH,
	"RS":         V_RS,
	"RSTART":     V_RSTART,
	"RT":         V_RT,
	"SUBSEP":     V_SUBSEP,
}

// SpecialVarIndex returns the "index" of the special variable, or 0
// if it's not a special variable.
func SpecialVarIndex(name string) int {
	return specialVars[name]
}

// SpecialVarName returns the name of the special variable by index.
func SpecialVarName(index int) string {
	switch index {
	case V_ILLEGAL:
		return "ILLEGAL"
	case V_ARGC:
		return "ARGC"
	case V_CONVFMT:
		return "CONVFMT"
	case V_FILENAME:
		return "FILENAME"
	case V_FNR:
		return "FNR"
	case V_FS:
		return "FS"
	case V_INPUTMODE:
		return "INPUTMODE"
	case V_NF:
		return "NF"
	case V_NR:
		return "NR"
	case V_OFMT:
		return "OFMT"
	case V_OFS:
		return "OFS"
	case V_ORS:
		return "ORS"
	case V_OUTPUTMODE:
		return "OUTPUTMODE"
	case V_RLENGTH:
		return "RLENGTH"
	case V_RS:
		return "RS"
	case V_RSTART:
		return "RSTART"
	case V_RT:
		return "RT"
	case V_SUBSEP:
		return "SUBSEP"
	default:
		return fmt.Sprintf("<unknown special var %d>", index)
	}
}