Browse Source

add start to ast

master
Brett Langdon 10 years ago
parent
commit
5ced4fc0f9
5 changed files with 224 additions and 0 deletions
  1. +19
    -0
      ast/fileinput.go
  2. +19
    -0
      ast/listnode.go
  3. +6
    -0
      ast/node.go
  4. +91
    -0
      ast/nodeid.go
  5. +89
    -0
      ast/nodename.go

+ 19
- 0
ast/fileinput.go View File

@ -0,0 +1,19 @@
package ast
type FileInput struct {
ListNode
}
func NewFileInput() *FileInput {
node := &FileInput{}
node.initChildren()
return node
}
func (node *FileInput) ID() NodeID {
return FILE_INPUT
}
func (node *FileInput) Name() string {
return NodeNames[FILE_INPUT]
}

+ 19
- 0
ast/listnode.go View File

@ -0,0 +1,19 @@
package ast
import "github.com/brettlangdon/gython/token"
type ListNode struct {
children []interface{}
}
func (node *ListNode) initChildren() {
node.children = make([]interface{}, 0)
}
func (node *ListNode) AppendToken(t *token.Token) {
node.children = append(node.children, t)
}
func (node *ListNode) AppendNode(n Node) {
node.children = append(node.children, n)
}

+ 6
- 0
ast/node.go View File

@ -0,0 +1,6 @@
package ast
type Node interface {
ID() NodeID
Name() string
}

+ 91
- 0
ast/nodeid.go View File

@ -0,0 +1,91 @@
package ast
type NodeID int
const (
SINGLE_INPUT NodeID = 256
FILE_INPUT NodeID = 257
EVAL_INPUT NodeID = 258
DECORATOR NodeID = 259
DECORATORS NodeID = 260
DECORATED NodeID = 261
ASYNC_FUNCDEF NodeID = 262
FUNCDEF NodeID = 263
PARAMETERS NodeID = 264
TYPEDARGSLIST NodeID = 265
TFPDEF NodeID = 266
VARARGSLIST NodeID = 267
VFPDEF NodeID = 268
STMT NodeID = 269
SIMPLE_STMT NodeID = 270
SMALL_STMT NodeID = 271
EXPR_STMT NodeID = 272
TESTLIST_STAR_EXPR NodeID = 273
AUGASSIGN NodeID = 274
DEL_STMT NodeID = 275
PASS_STMT NodeID = 276
FLOW_STMT NodeID = 277
BREAK_STMT NodeID = 278
CONTINUE_STMT NodeID = 279
RETURN_STMT NodeID = 280
YIELD_STMT NodeID = 281
RAISE_STMT NodeID = 282
IMPORT_STMT NodeID = 283
IMPORT_NAME NodeID = 284
IMPORT_FROM NodeID = 285
IMPORT_AS_NAME NodeID = 286
DOTTED_AS_NAME NodeID = 287
IMPORT_AS_NAMES NodeID = 288
DOTTED_AS_NAMES NodeID = 289
DOTTED_NAME NodeID = 290
GLOBAL_STMT NodeID = 291
NONLOCAL_STMT NodeID = 292
ASSERT_STMT NodeID = 293
COMPOUND_STMT NodeID = 294
ASYNC_STMT NodeID = 295
IF_STMT NodeID = 296
WHILE_STMT NodeID = 297
FOR_STMT NodeID = 298
TRY_STMT NodeID = 299
WITH_STMT NodeID = 300
WITH_ITEM NodeID = 301
EXCEPT_CLAUSE NodeID = 302
SUITE NodeID = 303
TEST NodeID = 304
TEST_NOCOND NodeID = 305
LAMBDEF NodeID = 306
LAMBDEF_NOCOND NodeID = 307
OR_TEST NodeID = 308
AND_TEST NodeID = 309
NOT_TEST NodeID = 310
COMPARISON NodeID = 311
COMP_OP NodeID = 312
STAR_EXPR NodeID = 313
EXPR NodeID = 314
XOR_EXPR NodeID = 315
AND_EXPR NodeID = 316
SHIFT_EXPR NodeID = 317
ARITH_EXPR NodeID = 318
TERM NodeID = 319
FACTOR NodeID = 320
POWER NodeID = 321
ATOM_EXPR NodeID = 322
ATOM NodeID = 323
TESTLIST_COMP NodeID = 324
TRAILER NodeID = 325
SUBSCRIPTLIST NodeID = 326
SUBSCRIPT NodeID = 327
SLICEOP NodeID = 328
EXPRLIST NodeID = 329
TESTLIST NodeID = 330
DICTORSETMAKER NodeID = 331
CLASSDEF NodeID = 332
ARGLIST NodeID = 333
ARGUMENT NodeID = 334
COMP_ITER NodeID = 335
COMP_FOR NodeID = 336
COMP_IF NodeID = 337
ENCODING_DECL NodeID = 338
YIELD_EXPR NodeID = 339
YIELD_ARG NodeID = 340
)

+ 89
- 0
ast/nodename.go View File

@ -0,0 +1,89 @@
package ast
var NodeNames = [...]string{
SINGLE_INPUT: "SINGLE_INPUT",
FILE_INPUT: "FILE_INPUT",
EVAL_INPUT: "EVAL_INPUT",
DECORATOR: "DECORATOR",
DECORATORS: "DECORATORS",
DECORATED: "DECORATED",
ASYNC_FUNCDEF: "ASYNC_FUNCDEF",
FUNCDEF: "FUNCDEF",
PARAMETERS: "PARAMETERS",
TYPEDARGSLIST: "TYPEDARGSLIST",
TFPDEF: "TFPDEF",
VARARGSLIST: "VARARGSLIST",
VFPDEF: "VFPDEF",
STMT: "STMT",
SIMPLE_STMT: "SIMPLE_STMT",
SMALL_STMT: "SMALL_STMT",
EXPR_STMT: "EXPR_STMT",
TESTLIST_STAR_EXPR: "TESTLIST_STAR_EXPR",
AUGASSIGN: "AUGASSIGN",
DEL_STMT: "DEL_STMT",
PASS_STMT: "PASS_STMT",
FLOW_STMT: "FLOW_STMT",
BREAK_STMT: "BREAK_STMT",
CONTINUE_STMT: "CONTINUE_STMT",
RETURN_STMT: "RETURN_STMT",
YIELD_STMT: "YIELD_STMT",
RAISE_STMT: "RAISE_STMT",
IMPORT_STMT: "IMPORT_STMT",
IMPORT_NAME: "IMPORT_NAME",
IMPORT_FROM: "IMPORT_FROM",
IMPORT_AS_NAME: "IMPORT_AS_NAME",
DOTTED_AS_NAME: "DOTTED_AS_NAME",
IMPORT_AS_NAMES: "IMPORT_AS_NAMES",
DOTTED_AS_NAMES: "DOTTED_AS_NAMES",
DOTTED_NAME: "DOTTED_NAME",
GLOBAL_STMT: "GLOBAL_STMT",
NONLOCAL_STMT: "NONLOCAL_STMT",
ASSERT_STMT: "ASSERT_STMT",
COMPOUND_STMT: "COMPOUND_STMT",
ASYNC_STMT: "ASYNC_STMT",
IF_STMT: "IF_STMT",
WHILE_STMT: "WHILE_STMT",
FOR_STMT: "FOR_STMT",
TRY_STMT: "TRY_STMT",
WITH_STMT: "WITH_STMT",
WITH_ITEM: "WITH_ITEM",
EXCEPT_CLAUSE: "EXCEPT_CLAUSE",
SUITE: "SUITE",
TEST: "TEST",
TEST_NOCOND: "TEST_NOCOND",
LAMBDEF: "LAMBDEF",
LAMBDEF_NOCOND: "LAMBDEF_NOCOND",
OR_TEST: "OR_TEST",
AND_TEST: "AND_TEST",
NOT_TEST: "NOT_TEST",
COMPARISON: "COMPARISON",
COMP_OP: "COMP_OP",
STAR_EXPR: "STAR_EXPR",
EXPR: "EXPR",
XOR_EXPR: "XOR_EXPR",
AND_EXPR: "AND_EXPR",
SHIFT_EXPR: "SHIFT_EXPR",
ARITH_EXPR: "ARITH_EXPR",
TERM: "TERM",
FACTOR: "FACTOR",
POWER: "POWER",
ATOM_EXPR: "ATOM_EXPR",
ATOM: "ATOM",
TESTLIST_COMP: "TESTLIST_COMP",
TRAILER: "TRAILER",
SUBSCRIPTLIST: "SUBSCRIPTLIST",
SUBSCRIPT: "SUBSCRIPT",
SLICEOP: "SLICEOP",
EXPRLIST: "EXPRLIST",
TESTLIST: "TESTLIST",
DICTORSETMAKER: "DICTORSETMAKER",
CLASSDEF: "CLASSDEF",
ARGLIST: "ARGLIST",
ARGUMENT: "ARGUMENT",
COMP_ITER: "COMP_ITER",
COMP_FOR: "COMP_FOR",
COMP_IF: "COMP_IF",
ENCODING_DECL: "ENCODING_DECL",
YIELD_EXPR: "YIELD_EXPR",
YIELD_ARG: "YIELD_ARG",
}

Loading…
Cancel
Save