refactor token structure
This commit is contained in:
		
							parent
							
								
									10e2a3f3f7
								
							
						
					
					
						commit
						60f171bfa1
					
				| @ -1,16 +1,8 @@ | ||||
| package ast | ||||
| 
 | ||||
| import ( | ||||
| 	"github.com/z7zmey/php-parser/freefloating" | ||||
| 	"github.com/z7zmey/php-parser/position" | ||||
| ) | ||||
| 
 | ||||
| type Vertex interface { | ||||
| 	Accept(v NodeVisitor) | ||||
| 
 | ||||
| 	SetPosition(p *position.Position) | ||||
| 	GetPosition() *position.Position | ||||
| 	GetFreeFloating() *freefloating.Collection | ||||
| 	GetNode() *Node | ||||
| } | ||||
| 
 | ||||
| type Traverser interface { | ||||
|  | ||||
| @ -1,8 +1,6 @@ | ||||
| package ast_test | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| 	"github.com/z7zmey/php-parser/pkg/ast" | ||||
| 	"github.com/z7zmey/php-parser/pkg/ast/traverser" | ||||
| @ -11,92 +9,6 @@ import ( | ||||
| 	"strings" | ||||
| ) | ||||
| 
 | ||||
| func ExampleJSON() { | ||||
| 	stxTree := &ast.Root{ | ||||
| 		Stmts: []ast.Vertex{ | ||||
| 			&ast.Nullable{ | ||||
| 				Expr: &ast.Parameter{ | ||||
| 					Type:         nil, | ||||
| 					Var:          nil, | ||||
| 					DefaultValue: nil, | ||||
| 				}, | ||||
| 			}, | ||||
| 			&ast.Identifier{}, | ||||
| 			&ast.ArgumentList{ | ||||
| 				Arguments: []ast.Vertex{ | ||||
| 					&ast.Argument{}, | ||||
| 					&ast.Argument{ | ||||
| 						Expr: &ast.ScalarDnumber{}, | ||||
| 					}, | ||||
| 				}, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	jsonStxTree, err := json.Marshal(stxTree) | ||||
| 	if err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
| 
 | ||||
| 	buf := bytes.NewBuffer(nil) | ||||
| 	err = json.Indent(buf, jsonStxTree, "", "  ") | ||||
| 	if err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
| 
 | ||||
| 	fmt.Fprint(os.Stdout, buf.String()) | ||||
| 
 | ||||
| 	// output: | ||||
| 	// { | ||||
| 	//   "FreeFloating": null, | ||||
| 	//   "Position": null, | ||||
| 	//   "Stmts": [ | ||||
| 	//     { | ||||
| 	//       "FreeFloating": null, | ||||
| 	//       "Position": null, | ||||
| 	//       "Expr": { | ||||
| 	//         "FreeFloating": null, | ||||
| 	//         "Position": null, | ||||
| 	//         "ByRef": false, | ||||
| 	//         "Variadic": false, | ||||
| 	//         "Type": null, | ||||
| 	//         "Var": null, | ||||
| 	//         "DefaultValue": null | ||||
| 	//       } | ||||
| 	//     }, | ||||
| 	//     { | ||||
| 	//       "FreeFloating": null, | ||||
| 	//       "Position": null, | ||||
| 	//       "Value": "" | ||||
| 	//     }, | ||||
| 	//     { | ||||
| 	//       "FreeFloating": null, | ||||
| 	//       "Position": null, | ||||
| 	//       "Arguments": [ | ||||
| 	//         { | ||||
| 	//           "FreeFloating": null, | ||||
| 	//           "Position": null, | ||||
| 	//           "Variadic": false, | ||||
| 	//           "IsReference": false, | ||||
| 	//           "Expr": null | ||||
| 	//         }, | ||||
| 	//         { | ||||
| 	//           "FreeFloating": null, | ||||
| 	//           "Position": null, | ||||
| 	//           "Variadic": false, | ||||
| 	//           "IsReference": false, | ||||
| 	//           "Expr": { | ||||
| 	//             "FreeFloating": null, | ||||
| 	//             "Position": null, | ||||
| 	//             "Value": "" | ||||
| 	//           } | ||||
| 	//         } | ||||
| 	//       ] | ||||
| 	//     } | ||||
| 	//   ] | ||||
| 	// } | ||||
| } | ||||
| 
 | ||||
| func ExampleStxTree() { | ||||
| 	stxTree := &ast.Root{ | ||||
| 		Stmts: []ast.Vertex{ | ||||
|  | ||||
| @ -1,27 +1,18 @@ | ||||
| package ast | ||||
| 
 | ||||
| import ( | ||||
| 	"github.com/z7zmey/php-parser/freefloating" | ||||
| 	"github.com/z7zmey/php-parser/pkg/token" | ||||
| 	"github.com/z7zmey/php-parser/position" | ||||
| ) | ||||
| 
 | ||||
| type Node struct { | ||||
| 	FreeFloating freefloating.Collection | ||||
| 	StartTokens  []token.Token | ||||
| 	EndTokens    []token.Token | ||||
| 	Position     *position.Position | ||||
| } | ||||
| 
 | ||||
| // SetPosition sets node position | ||||
| func (n *Node) SetPosition(p *position.Position) { | ||||
| 	n.Position = p | ||||
| } | ||||
| 
 | ||||
| // GetPosition returns node positions | ||||
| func (n *Node) GetPosition() *position.Position { | ||||
| 	return n.Position | ||||
| } | ||||
| 
 | ||||
| func (n *Node) GetFreeFloating() *freefloating.Collection { | ||||
| 	return &n.FreeFloating | ||||
| func (n *Node) GetNode() *Node { | ||||
| 	return n | ||||
| } | ||||
| 
 | ||||
| // Root node | ||||
|  | ||||
							
								
								
									
										149
									
								
								pkg/token/token.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								pkg/token/token.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,149 @@ | ||||
| package token | ||||
| 
 | ||||
| type TokenID int | ||||
| 
 | ||||
| const ( | ||||
| 	T_INCLUDE TokenID = iota + 57346 | ||||
| 	T_INCLUDE_ONCE | ||||
| 	T_EXIT | ||||
| 	T_IF | ||||
| 	T_LNUMBER | ||||
| 	T_DNUMBER | ||||
| 	T_STRING | ||||
| 	T_STRING_VARNAME | ||||
| 	T_VARIABLE | ||||
| 	T_NUM_STRING | ||||
| 	T_INLINE_HTML | ||||
| 	T_CHARACTER | ||||
| 	T_BAD_CHARACTER | ||||
| 	T_ENCAPSED_AND_WHITESPACE | ||||
| 	T_CONSTANT_ENCAPSED_STRING | ||||
| 	T_ECHO | ||||
| 	T_DO | ||||
| 	T_WHILE | ||||
| 	T_ENDWHILE | ||||
| 	T_FOR | ||||
| 	T_ENDFOR | ||||
| 	T_FOREACH | ||||
| 	T_ENDFOREACH | ||||
| 	T_DECLARE | ||||
| 	T_ENDDECLARE | ||||
| 	T_AS | ||||
| 	T_SWITCH | ||||
| 	T_ENDSWITCH | ||||
| 	T_CASE | ||||
| 	T_DEFAULT | ||||
| 	T_BREAK | ||||
| 	T_CONTINUE | ||||
| 	T_GOTO | ||||
| 	T_FUNCTION | ||||
| 	T_FN | ||||
| 	T_CONST | ||||
| 	T_RETURN | ||||
| 	T_TRY | ||||
| 	T_CATCH | ||||
| 	T_FINALLY | ||||
| 	T_THROW | ||||
| 	T_USE | ||||
| 	T_INSTEADOF | ||||
| 	T_GLOBAL | ||||
| 	T_VAR | ||||
| 	T_UNSET | ||||
| 	T_ISSET | ||||
| 	T_EMPTY | ||||
| 	T_HALT_COMPILER | ||||
| 	T_CLASS | ||||
| 	T_TRAIT | ||||
| 	T_INTERFACE | ||||
| 	T_EXTENDS | ||||
| 	T_IMPLEMENTS | ||||
| 	T_OBJECT_OPERATOR | ||||
| 	T_DOUBLE_ARROW | ||||
| 	T_LIST | ||||
| 	T_ARRAY | ||||
| 	T_CALLABLE | ||||
| 	T_CLASS_C | ||||
| 	T_TRAIT_C | ||||
| 	T_METHOD_C | ||||
| 	T_FUNC_C | ||||
| 	T_LINE | ||||
| 	T_FILE | ||||
| 	T_COMMENT | ||||
| 	T_DOC_COMMENT | ||||
| 	T_OPEN_TAG | ||||
| 	T_OPEN_TAG_WITH_ECHO | ||||
| 	T_CLOSE_TAG | ||||
| 	T_WHITESPACE | ||||
| 	T_START_HEREDOC | ||||
| 	T_END_HEREDOC | ||||
| 	T_DOLLAR_OPEN_CURLY_BRACES | ||||
| 	T_CURLY_OPEN | ||||
| 	T_PAAMAYIM_NEKUDOTAYIM | ||||
| 	T_NAMESPACE | ||||
| 	T_NS_C | ||||
| 	T_DIR | ||||
| 	T_NS_SEPARATOR | ||||
| 	T_ELLIPSIS | ||||
| 	T_EVAL | ||||
| 	T_REQUIRE | ||||
| 	T_REQUIRE_ONCE | ||||
| 	T_LOGICAL_OR | ||||
| 	T_LOGICAL_XOR | ||||
| 	T_LOGICAL_AND | ||||
| 	T_INSTANCEOF | ||||
| 	T_NEW | ||||
| 	T_CLONE | ||||
| 	T_ELSEIF | ||||
| 	T_ELSE | ||||
| 	T_ENDIF | ||||
| 	T_PRINT | ||||
| 	T_YIELD | ||||
| 	T_STATIC | ||||
| 	T_ABSTRACT | ||||
| 	T_FINAL | ||||
| 	T_PRIVATE | ||||
| 	T_PROTECTED | ||||
| 	T_PUBLIC | ||||
| 	T_INC | ||||
| 	T_DEC | ||||
| 	T_YIELD_FROM | ||||
| 	T_INT_CAST | ||||
| 	T_DOUBLE_CAST | ||||
| 	T_STRING_CAST | ||||
| 	T_ARRAY_CAST | ||||
| 	T_OBJECT_CAST | ||||
| 	T_BOOL_CAST | ||||
| 	T_UNSET_CAST | ||||
| 	T_COALESCE | ||||
| 	T_SPACESHIP | ||||
| 	T_NOELSE | ||||
| 	T_PLUS_EQUAL | ||||
| 	T_MINUS_EQUAL | ||||
| 	T_MUL_EQUAL | ||||
| 	T_POW_EQUAL | ||||
| 	T_DIV_EQUAL | ||||
| 	T_CONCAT_EQUAL | ||||
| 	T_MOD_EQUAL | ||||
| 	T_AND_EQUAL | ||||
| 	T_OR_EQUAL | ||||
| 	T_XOR_EQUAL | ||||
| 	T_SL_EQUAL | ||||
| 	T_SR_EQUAL | ||||
| 	T_COALESCE_EQUAL | ||||
| 	T_BOOLEAN_OR | ||||
| 	T_BOOLEAN_AND | ||||
| 	T_POW | ||||
| 	T_SL | ||||
| 	T_SR | ||||
| 	T_IS_IDENTICAL | ||||
| 	T_IS_NOT_IDENTICAL | ||||
| 	T_IS_EQUAL | ||||
| 	T_IS_NOT_EQUAL | ||||
| 	T_IS_SMALLER_OR_EQUAL | ||||
| 	T_IS_GREATER_OR_EQUAL | ||||
| ) | ||||
| 
 | ||||
| type Token struct { | ||||
| 	ID    TokenID | ||||
| 	Value []byte | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user