Skip to content

Commit

Permalink
Implement "none" keyword. (VirusTotal#40)
Browse files Browse the repository at this point in the history
Add support for the "none" keyword.
  • Loading branch information
wxsBSD authored Oct 15, 2021
1 parent 4276b11 commit 6cbe65e
Show file tree
Hide file tree
Showing 12 changed files with 3,395 additions and 2,358 deletions.
3 changes: 3 additions & 0 deletions ast/ast.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ type Keyword string
const (
KeywordAll Keyword = "all"
KeywordAny Keyword = "any"
KeywordNone Keyword = "none"
KeywordEntrypoint Keyword = "entrypoint"
KeywordFalse Keyword = "false"
KeywordFilesize Keyword = "filesize"
Expand Down Expand Up @@ -900,6 +901,8 @@ func (q *Quantifier) AsProto() *pb.ForExpression {
pbkw = pb.ForKeyword_ALL
} else if kw == KeywordAny {
pbkw = pb.ForKeyword_ANY
} else if kw == KeywordNone {
pbkw = pb.ForKeyword_NONE
} else {
panic(fmt.Sprintf("unexpected keyword in for: %s", kw))
}
Expand Down
2 changes: 2 additions & 0 deletions ast/serialization.go
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,8 @@ func quantifierFromProto(expr *pb.ForExpression) *Quantifier {
q = KeywordAll
} else if v.Keyword == pb.ForKeyword_ANY {
q = KeywordAny
} else if v.Keyword == pb.ForKeyword_NONE {
q = KeywordNone
}
case *pb.ForExpression_Expression:
q = expressionFromProto(v.Expression)
Expand Down
3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@ go 1.11

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/golang/protobuf v1.3.2
github.com/golang/protobuf v1.5.0
github.com/kr/pretty v0.1.0 // indirect
github.com/stretchr/testify v1.4.0
golang.org/x/tools v0.0.0-20201002141543-22683886a977 // indirect
google.golang.org/protobuf v1.27.1
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
gopkg.in/yaml.v2 v2.2.7 // indirect
)
7 changes: 7 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=
Expand Down Expand Up @@ -35,7 +38,11 @@ golang.org/x/tools v0.0.0-20201002141543-22683886a977 h1:DHhk3I+S2b/npPIGINkUyTf
golang.org/x/tools v0.0.0-20201002141543-22683886a977/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
Expand Down
5 changes: 5 additions & 0 deletions parser/grammar.y
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ type stringModifiers struct {
%token _ENTRYPOINT_
%token _ALL_
%token _ANY_
%token _NONE_
%token _IN_
%token _OF_
%token _FOR_
Expand Down Expand Up @@ -976,6 +977,10 @@ for_expression
{
$$ = &ast.Quantifier{ast.KeywordAny}
}
| _NONE_
{
$$ = &ast.Quantifier{ast.KeywordNone}
}
;


Expand Down
648 changes: 328 additions & 320 deletions parser/lexer.go

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions parser/lexer.l
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ octdigit [0-7]
"for" { return yy.Token(_FOR_); }
"all" { return yy.Token(_ALL_); }
"any" { return yy.Token(_ANY_); }
"none" { return yy.Token(_NONE_); }
"entrypoint" { return yy.Token(_ENTRYPOINT_); }
"filesize" { return yy.Token(_FILESIZE_); }
"matches" { return yy.Token(_MATCHES_); }
Expand Down
Loading

0 comments on commit 6cbe65e

Please sign in to comment.