github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/token/token.go (about)

     1  // Copyright 2009 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // パッケージtokenは、Goプログラミング言語の字句トークンとトークンに対する基本的な操作(印刷、述語)を定義する定数を表します。
     6  package token
     7  
     8  // TokenはGoプログラミング言語の字句トークンの集合です。
     9  type Token int
    10  
    11  // トークンのリスト。
    12  const (
    13  	// 特別なトークン
    14  	ILLEGAL Token = iota
    15  	EOF
    16  	COMMENT
    17  
    18  	// 識別子と基本型のリテラル
    19  	// (これらのトークンはリテラルのクラスを表します)
    20  	IDENT
    21  	INT
    22  	FLOAT
    23  	IMAG
    24  	CHAR
    25  	STRING
    26  
    27  	// オペレータと区切り文字
    28  	ADD
    29  	SUB
    30  	MUL
    31  	QUO
    32  	REM
    33  
    34  	AND
    35  	OR
    36  	XOR
    37  	SHL
    38  	SHR
    39  	AND_NOT
    40  
    41  	ADD_ASSIGN
    42  	SUB_ASSIGN
    43  	MUL_ASSIGN
    44  	QUO_ASSIGN
    45  	REM_ASSIGN
    46  
    47  	AND_ASSIGN
    48  	OR_ASSIGN
    49  	XOR_ASSIGN
    50  	SHL_ASSIGN
    51  	SHR_ASSIGN
    52  	AND_NOT_ASSIGN
    53  
    54  	LAND
    55  	LOR
    56  	ARROW
    57  	INC
    58  	DEC
    59  
    60  	EQL
    61  	LSS
    62  	GTR
    63  	ASSIGN
    64  	NOT
    65  
    66  	NEQ
    67  	LEQ
    68  	GEQ
    69  	DEFINE
    70  	ELLIPSIS
    71  
    72  	LPAREN
    73  	LBRACK
    74  	LBRACE
    75  	COMMA
    76  	PERIOD
    77  
    78  	RPAREN
    79  	RBRACK
    80  	RBRACE
    81  	SEMICOLON
    82  	COLON
    83  
    84  	// キーワード
    85  	BREAK
    86  	CASE
    87  	CHAN
    88  	CONST
    89  	CONTINUE
    90  
    91  	DEFAULT
    92  	DEFER
    93  	ELSE
    94  	FALLTHROUGH
    95  	FOR
    96  
    97  	FUNC
    98  	GO
    99  	GOTO
   100  	IF
   101  	IMPORT
   102  
   103  	INTERFACE
   104  	MAP
   105  	PACKAGE
   106  	RANGE
   107  	RETURN
   108  
   109  	SELECT
   110  	STRUCT
   111  	SWITCH
   112  	TYPE
   113  	VAR
   114  
   115  	// 追加のトークン、特別な方法で処理される
   116  	TILDE
   117  )
   118  
   119  // Stringはtokに対応する文字列を返します。
   120  // 演算子、区切り文字、キーワードの場合、文字列は実際のトークン文字列です(たとえば、トークン [ADD] の場合、文字列は"+"です)。
   121  // それ以外のすべてのトークンに対して、文字列はトークンの定数名に対応します(たとえば、トークン [IDENT] の場合、文字列は"IDENT"です)。
   122  func (tok Token) String() string
   123  
   124  // 優先順位ベースの式の解析のための定数のセット。
   125  // 非演算子は最低の優先度を持ち、1から始まる演算子が続きます。
   126  // 最高の優先度はセレクタ、インデックス、その他の演算子や区切り記号トークンのための「キャッチオール」優先度として機能します。
   127  const (
   128  	LowestPrec  = 0
   129  	UnaryPrec   = 6
   130  	HighestPrec = 7
   131  )
   132  
   133  // Precedence returns the operator precedence of the binary
   134  // operator op. If op is not a binary operator, the result
   135  // is LowestPrecedence.
   136  // Precedenceは、バイナリ演算子opの演算子の優先度を返します。opがバイナリ演算子でない場合、結果はLowestPrecedenceになります。
   137  func (op Token) Precedence() int
   138  
   139  // Lookupは識別子をキーワードトークンまたは [IDENT](キーワードでない場合)にマップします。
   140  func Lookup(ident string) Token
   141  
   142  // IsLiteral は、識別子と基本型のリテラルに対応するトークンに対して true を返します。それ以外の場合は、false を返します。
   143  func (tok Token) IsLiteral() bool
   144  
   145  // IsOperatorはオペレーターや区切り記号に対応するトークンに対してtrueを返し、
   146  // それ以外の場合はfalseを返します。
   147  func (tok Token) IsOperator() bool
   148  
   149  // IsKeywordはキーワードに対応するトークンに対してtrueを返し、それ以外の場合はfalseを返します。
   150  func (tok Token) IsKeyword() bool
   151  
   152  // IsExported は、name が大文字で始まるかどうかを報告します。
   153  func IsExported(name string) bool
   154  
   155  // IsKeywordは、nameがGoのキーワード("func"や"return"など)であるかどうかを報告します。
   156  func IsKeyword(name string) bool
   157  
   158  // IsIdentifierは、nameがGoの識別子であるかどうかを報告します。つまり、
   159  // 最初の文字が数字でない、文字、数字、アンダースコアで構成された空でない文字列です。キーワードは識別子ではありません。
   160  func IsIdentifier(name string) bool