refactor token structure
This commit is contained in:
		
							parent
							
								
									10e2a3f3f7
								
							
						
					
					
						commit
						60f171bfa1
					
				| @ -1,16 +1,8 @@ | |||||||
| package ast | package ast | ||||||
| 
 | 
 | ||||||
| import ( |  | ||||||
| 	"github.com/z7zmey/php-parser/freefloating" |  | ||||||
| 	"github.com/z7zmey/php-parser/position" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| type Vertex interface { | type Vertex interface { | ||||||
| 	Accept(v NodeVisitor) | 	Accept(v NodeVisitor) | ||||||
| 
 | 	GetNode() *Node | ||||||
| 	SetPosition(p *position.Position) |  | ||||||
| 	GetPosition() *position.Position |  | ||||||
| 	GetFreeFloating() *freefloating.Collection |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type Traverser interface { | type Traverser interface { | ||||||
|  | |||||||
| @ -1,8 +1,6 @@ | |||||||
| package ast_test | package ast_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"bytes" |  | ||||||
| 	"encoding/json" |  | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"github.com/z7zmey/php-parser/pkg/ast" | 	"github.com/z7zmey/php-parser/pkg/ast" | ||||||
| 	"github.com/z7zmey/php-parser/pkg/ast/traverser" | 	"github.com/z7zmey/php-parser/pkg/ast/traverser" | ||||||
| @ -11,92 +9,6 @@ import ( | |||||||
| 	"strings" | 	"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() { | func ExampleStxTree() { | ||||||
| 	stxTree := &ast.Root{ | 	stxTree := &ast.Root{ | ||||||
| 		Stmts: []ast.Vertex{ | 		Stmts: []ast.Vertex{ | ||||||
|  | |||||||
| @ -1,27 +1,18 @@ | |||||||
| package ast | package ast | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"github.com/z7zmey/php-parser/freefloating" | 	"github.com/z7zmey/php-parser/pkg/token" | ||||||
| 	"github.com/z7zmey/php-parser/position" | 	"github.com/z7zmey/php-parser/position" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type Node struct { | type Node struct { | ||||||
| 	FreeFloating freefloating.Collection | 	StartTokens  []token.Token | ||||||
|  | 	EndTokens    []token.Token | ||||||
| 	Position     *position.Position | 	Position     *position.Position | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // SetPosition sets node position | func (n *Node) GetNode() *Node { | ||||||
| func (n *Node) SetPosition(p *position.Position) { | 	return n | ||||||
| 	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 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Root node | // 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