normalizer

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 16, 2018 License: GPL-3.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AnnotationRules = On(Any).Self(
	On(Not(phpast.File)).Error(errors.New("root must be uast.File")),
	On(phpast.File).Roles(uast.File, uast.Module).Descendants(

		On(phpast.Alias).Roles(uast.Statement, uast.Alias),
		On(phpast.Arg).Roles(uast.Argument),
		On(phpast.Array).Roles(uast.Expression, uast.Literal, uast.List),
		On(phpast.ArrayDimFetch).Roles(uast.Expression, uast.List, uast.Value,
			uast.Entry),
		On(phpast.ArrayItem).Roles(uast.Expression, uast.List, uast.Entry),
		On(phpast.Variable).Roles(uast.Identifier, uast.Variable),
		On(phpast.Name).Roles(uast.Expression, uast.Identifier).Self(
			On(HasInternalRole("class")).Roles(uast.Qualified),
		),
		On(phpast.NameRelative).Roles(uast.Expression, uast.Identifier, uast.Qualified, uast.Incomplete),
		On(phpast.Comment).Roles(uast.Noop, uast.Comment),
		On(phpast.Doc).Roles(uast.Noop, uast.Comment, uast.Documentation),
		On(phpast.Nop).Roles(uast.Noop),
		On(phpast.Echo).Roles(uast.Statement, uast.Call),
		On(phpast.Print).Roles(uast.Statement, uast.Call),
		On(phpast.Empty).Roles(uast.Expression, uast.Call),
		On(phpast.Isset).Roles(uast.Expression, uast.Call),
		On(phpast.Unset).Roles(uast.Expression, uast.Call),
		On(HasInternalRole("stmts")).Roles(uast.Expression, uast.Body),
		On(phpast.PropertyFetch).Roles(uast.Expression, uast.Map, uast.Identifier,
			uast.Entry, uast.Value),

		On(phpast.StaticPropertyFetch).Roles(uast.Expression, uast.Map,
			uast.Identifier, uast.Entry, uast.Value, uast.Incomplete),

		On(phpast.ErrorSuppress).Roles(uast.Expression, uast.Incomplete),
		On(phpast.Eval).Roles(uast.Expression, uast.Call),
		On(phpast.Exit).Roles(uast.Expression, uast.Call),
		On(phpast.Namespace).Roles(uast.Block),

		On(phpast.Const).Roles(uast.Expression, uast.Variable, uast.Incomplete),
		On(phpast.ConstFetch).Roles(uast.Expression, uast.Variable, uast.Incomplete),
		On(phpast.FullyQualified).Roles(uast.Expression, uast.Variable, uast.Incomplete),
		On(phpast.ClassConstFetch).Roles(uast.Expression, uast.Type, uast.Incomplete),
		On(phpast.Clone).Roles(uast.Expression, uast.Call, uast.Incomplete),
		On(phpast.Param).Roles(uast.Argument),
		On(phpast.Closure).Roles(uast.Function, uast.Declaration, uast.Expression,
			uast.Anonymous),
		On(phpast.ClosureUse).Roles(uast.Visibility, uast.Incomplete),
		On(phpast.Coalesce).Roles(uast.Expression, uast.Incomplete),
		On(HasInternalRole("cond")).Roles(uast.Condition),
		On(Or(phpast.Use, phpast.UseUse)).Roles(uast.Alias),
		On(Or(phpast.Yield, phpast.YieldFrom)).Roles(uast.Return, uast.Incomplete),

		On(phpast.Break).Roles(uast.Statement, uast.Break),
		On(phpast.Continue).Roles(uast.Statement, uast.Continue),
		On(phpast.Return).Roles(uast.Statement, uast.Return),
		On(phpast.Throw).Roles(uast.Statement, uast.Throw),
		On(phpast.Goto).Roles(uast.Statement, uast.Goto),

		On(phpast.Label).Roles(uast.Statement, uast.Goto, uast.Incomplete),

		On(Or(phpast.Assign, someAssignOp)).Roles(uast.Expression, uast.Assignment).Children(
			On(HasInternalRole("var")).Roles(uast.Left),
			On(HasInternalRole("expr")).Roles(uast.Right),
		),

		On(HasInternalRole("left")).Roles(uast.Left),
		On(HasInternalRole("right")).Roles(uast.Right),
		On(phpast.Name).Self(On(HasToken("null")).Roles(uast.Null)),

		On(phpast.NullableType).Roles(uast.Type, uast.Incomplete),
		On(phpast.Global).Roles(uast.Visibility, uast.World),

		On(phpast.Static).Roles(uast.Visibility, uast.Type),
		On(phpast.StaticVar).Roles(uast.Expression, uast.Identifier, uast.Variable, uast.Visibility, uast.Type),
		On(phpast.InlineHTML).Roles(uast.String, uast.Literal, uast.Incomplete),
		On(phpast.List).Roles(uast.Call, uast.List),

		On(phpast.BinaryOpPlus).Roles(uast.Expression, uast.Operator, uast.Add),
		On(phpast.BinaryOpMinus).Roles(uast.Expression, uast.Operator, uast.Substract),
		On(phpast.BinaryOpMul).Roles(uast.Expression, uast.Operator, uast.Multiply),
		On(phpast.BinaryOpDiv).Roles(uast.Expression, uast.Operator, uast.Divide),
		On(phpast.BinaryOpMod).Roles(uast.Expression, uast.Operator, uast.Modulo),
		On(phpast.BinaryOpPow).Roles(uast.Expression, uast.Operator, uast.Incomplete),

		On(phpast.AssignOpPlus).Roles(uast.Expression, uast.Operator, uast.Add),
		On(phpast.AssignOpMinus).Roles(uast.Expression, uast.Operator, uast.Substract),
		On(phpast.AssignOpMul).Roles(uast.Expression, uast.Operator, uast.Multiply),
		On(phpast.AssignOpDiv).Roles(uast.Expression, uast.Operator, uast.Divide),
		On(phpast.AssignOpMod).Roles(uast.Expression, uast.Operator, uast.Modulo),

		On(phpast.BitwiseAnd).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Bitwise, uast.And),
		On(phpast.BitwiseOr).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Bitwise, uast.Or),
		On(phpast.BitwiseXor).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Bitwise, uast.Xor),
		On(phpast.BitwiseNot).Roles(uast.Expression, uast.Unary, uast.Operator,
			uast.Bitwise, uast.Not),

		On(phpast.BooleanAnd).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Boolean, uast.And),
		On(phpast.BooleanOr).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Boolean, uast.Or),
		On(phpast.BooleanXor).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Boolean, uast.Xor),
		On(phpast.BooleanNot).Roles(uast.Expression, uast.Operator, uast.Boolean,
			uast.Not),

		On(phpast.UnaryPlus).Roles(uast.Expression, uast.Unary, uast.Incomplete),
		On(phpast.UnaryMinus).Roles(uast.Expression, uast.Unary, uast.Incomplete),
		On(phpast.PreInc).Roles(uast.Expression, uast.Unary, uast.Increment),
		On(phpast.PostInc).Roles(uast.Expression, uast.Unary, uast.Increment, uast.Postfix),
		On(phpast.PreDec).Roles(uast.Expression, uast.Unary, uast.Decrement),
		On(phpast.PostDec).Roles(uast.Expression, uast.Unary, uast.Decrement, uast.Postfix),

		On(phpast.Concat).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Add, uast.Incomplete),

		On(phpast.ShiftLeft).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Bitwise, uast.LeftShift),
		On(phpast.ShiftRight).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Bitwise, uast.RightShift),

		On(phpast.Equal).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Relational, uast.Equal),
		On(phpast.Identical).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Relational, uast.Identical),
		On(phpast.NotEqual).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Relational, uast.Not, uast.Equal),
		On(phpast.NotIdentical).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Relational, uast.Not, uast.Identical),
		On(phpast.GreaterOrEqual).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Relational, uast.GreaterThanOrEqual),
		On(phpast.SmallerOrEqual).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Relational, uast.LessThanOrEqual),
		On(phpast.Greater).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Relational, uast.GreaterThan),
		On(phpast.Smaller).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Relational, uast.LessThan),
		On(phpast.Spaceship).Roles(uast.Expression, uast.Binary, uast.Operator,
			uast.Relational, uast.GreaterThanOrEqual, uast.LessThanOrEqual),

		On(phpast.ScalarString).Roles(uast.Expression, uast.Literal, uast.String),
		On(Or(phpast.ScalarLNumber, phpast.ScalarDNumber)).Roles(uast.Expression,
			uast.Literal, uast.Number),

		On(Or(phpast.ScalarMagicClass,
			phpast.ScalarMagicDir,
			phpast.ScalarMagicFile,
			phpast.ScalarMagicFunction,
			phpast.ScalarMagicLine,
			phpast.ScalarMagicMethod,
			phpast.ScalarMagicNamespace,
			phpast.ScalarMagicTrait)).Roles(uast.Expression, uast.Literal,
			uast.Incomplete),

		On(phpast.Switch).Roles(uast.Statement, uast.Switch).Children(
			On(HasInternalRole("cond")).Roles(uast.Switch),
		),
		On(phpast.Case).Roles(uast.Statement, uast.Case).Self(
			On(Not(HasChild(HasInternalRole("cond")))).Roles(uast.Default),
		).Children(
			On(HasInternalRole("cond")).Roles(uast.Case),
		),

		On(phpast.CastArray).Roles(uast.Expression, uast.List, uast.Incomplete),
		On(phpast.CastBool).Roles(uast.Expression, uast.Boolean, uast.Incomplete),
		On(phpast.CastDouble).Roles(uast.Expression, uast.Number, uast.Incomplete),
		On(phpast.CastInt).Roles(uast.Expression, uast.Number, uast.Incomplete),
		On(phpast.CastObject).Roles(uast.Expression, uast.Type, uast.Incomplete),
		On(phpast.CastString).Roles(uast.Expression, uast.String, uast.Incomplete),
		On(phpast.CastUnset).Roles(uast.Expression, uast.Incomplete),

		On(phpast.TryCatch).Roles(uast.Statement, uast.Try),
		On(phpast.Catch).Roles(uast.Statement, uast.Catch).Children(
			On(HasInternalRole("types")).Roles(uast.Catch, uast.Type),
		),
		On(phpast.Finally).Roles(uast.Statement, uast.Finally),

		On(phpast.Class).Roles(uast.Statement, uast.Declaration, uast.Type),
		On(HasInternalRole("extends")).Roles(uast.Base),
		On(HasInternalRole("implements")).Roles(uast.Implements),

		On(phpast.ClassConst).Roles(uast.Type, uast.Variable, uast.Incomplete),

		On(Or(phpast.Property, phpast.PropertyProperty)).Roles(uast.Type,
			uast.Variable, uast.Incomplete),

		On(phpast.ClassMethod).Roles(uast.Type, uast.Function),

		On(phpast.Ternary).Roles(uast.Expression, uast.If).Children(
			On(HasInternalRole("if")).Roles(uast.Then),
			On(HasInternalRole("else")).Roles(uast.Else),
		),
		On(phpast.If).Roles(uast.Statement, uast.If),
		On(phpast.ElseIf).Roles(uast.Statement, uast.If, uast.Else),
		On(phpast.Else).Roles(uast.Statement, uast.Else),

		On(phpast.Declare).Roles(uast.Expression, uast.Assignment, uast.Incomplete).Children(
			On(HasInternalRole("declares")).Roles(uast.Identifier, uast.Left).Children(
				On(HasInternalRole("value")).Roles(uast.Right),
			),
		),

		On(phpast.Do).Roles(uast.Statement, uast.DoWhile),
		On(phpast.While).Roles(uast.Statement, uast.While),

		On(phpast.Encapsed).Roles(uast.Expression, uast.Literal, uast.String,
			uast.Incomplete),
		On(phpast.EncapsedStringPart).Roles(uast.Expression, uast.Identifier,
			uast.Value),

		On(phpast.For).Roles(uast.Statement, uast.For).Children(
			On(HasInternalRole("init")).Roles(uast.Expression, uast.For, uast.Initialization),
			On(HasInternalRole("cond")).Roles(uast.For),
			On(HasInternalRole("loop")).Roles(uast.Expression, uast.For, uast.Update),
		),

		On(phpast.Foreach).Roles(uast.Statement, uast.For, uast.Incomplete).Children(
			On(HasInternalRole("valueVar")).Roles(uast.Iterator),
		),

		On(phpast.FuncCall).Roles(uast.Expression, uast.Call).Children(
			On(HasInternalRole("name")).Roles(uast.Function, uast.Name),
		),
		On(phpast.StaticCall).Roles(uast.Expression, uast.Call, uast.Identifier).Children(
			On(HasInternalRole("class")).Roles(uast.Type, uast.Receiver),
		),
		On(phpast.MethodCall).Roles(uast.Expression, uast.Call, uast.Identifier).Children(
			On(HasInternalRole("var")).Roles(uast.Receiver, uast.Receiver, uast.Identifier),
		),

		On(phpast.Function).Roles(uast.Function, uast.Declaration).Children(
			On(phpast.Param).Self(

				On(HasProperty("byRef", "true")).Roles(uast.Incomplete),
				On(HasProperty("variadic", "true")).Roles(uast.ArgsList),
			).Children(
				On(HasInternalRole("default")).Roles(uast.Default),
			),
			On(phpast.FunctionReturn).Roles(uast.Return, uast.Type),
		),

		On(phpast.Include).Roles(uast.Import).Children(
			On(Any).Roles(uast.Import, uast.Pathname),
		),

		On(phpast.Instanceof).Roles(uast.Expression, uast.Call).Children(
			On(Any).Roles(uast.Argument),
			On(HasInternalRole("class")).Roles(uast.Type),
		),

		On(phpast.Interface).Roles(uast.Type, uast.Declaration).Children(
			On(HasInternalRole("extends")).Roles(uast.Type, uast.Base),
		),

		On(phpast.Trait).Roles(uast.Type, uast.Declaration),
		On(phpast.TraitUse).Roles(uast.Base),
		On(phpast.TraitPrecedence).Roles(uast.Base, uast.Alias, uast.Incomplete),
		On(HasInternalRole("insteadof")).Roles(uast.Alias, uast.Incomplete),

		On(phpast.New).Roles(uast.Expression, uast.Initialization, uast.Call).Children(
			On(HasInternalRole("class")).Roles(uast.Type),
		),
	),
)

AnnotationRules for the PHP language

View Source
var ToNode = &uast.ObjectToNode{
	InternalTypeKey: "nodeType",
	LineKey:         "attributes.startLine",
	ColumnKey:       "attributes.startTokenPos",
	OffsetKey:       "attributes.startFilePos",
	EndLineKey:      "attributes.endLine",
	EndColumnKey:    "attributes.endTokenPos",
	SyntheticTokens: map[string]string{
		"Expr_Clone":      "clone",
		"Expr_Empty":      "empty",
		"Expr_Isset":      "isset",
		"Stmt_Echo":       "echo",
		"Stmt_Print":      "print",
		"Stmt_Unset":      "unset",
		"Expr_Eval":       "eval",
		"Expr_Exit":       "exit",
		"Expr_Instanceof": "instanceof",
		"Expr_List":       "list",
		"Expr_New":        "new",
	},
	EndOffsetKey: "attributes.endFilePos",
	TokenKeys: map[string]bool{
		"name":    true,
		"text":    true,
		"value":   true,
		"var":     true,
		"key":     true,
		"newName": true,
	},
	PromotedPropertyStrings: map[string]map[string]bool{
		"Stmt_Function": {"returnType": true},
	},

	IsNode: func(v map[string]interface{}) bool {
		_, ok := v["nodeType"]
		return ok
	},

	OnToNode: func(n interface{}) (interface{}, error) {
		return map[string]interface{}{
			"root": map[string]interface{}{
				"nodeType": "File",
				"children": n,
			},
		}, nil
	},
	Modifier: func(n map[string]interface{}) error {

		if parts, ok := n["parts"].([]interface{}); ok {
			deleteParts := false
			n["name"], deleteParts = sliceInterfaceToString(parts, "\\")
			if deleteParts {
				delete(n, "parts")
			}
		}

		if pos, ok := n["filePos"].(float64); ok {
			n["attributes.startFilePos"] = pos
			n["attributes.endFilePos"] = pos + float64(len(n["text"].(string)))
			n["attributes.startLine"] = n["line"]
			delete(n, "filePos")
			delete(n, "line")
		}

		return nil
	},
}

ToNode is an instance of `uast.ObjectToNode`, defining how to transform an into a UAST (`uast.Node`).

https://godoc.org/gopkg.in/bblfsh/sdk.v1/uast#ObjectToNode

Transformers is the list of `transformer.Transfomer` to apply to a UAST, to learn more about the Transformers and the available ones take a look to: https://godoc.org/gopkg.in/bblfsh/sdk.v1/uast/transformers

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
Package phpast defines constants for PHP-Parser lib nodes
Package phpast defines constants for PHP-Parser lib nodes

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL