Skip to content

Commit

Permalink
Added js DSL rules
Browse files Browse the repository at this point in the history
  • Loading branch information
Polina Volkhontseva committed Oct 10, 2022
1 parent 08fa569 commit cbf5484
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/main/dsl/rules.dsl
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ PrimitiveType <- $String$, $#$, $#$;
Program <- {ProgramItem};
ProgramItem <- ClassDeclaration | Statement | ClassItem;

Expression <- BinaryExpression | IntegerLiteral | This | StringLiteral | Identifier | PropertyAccess |
Expression <- BinaryExpression | IntegerLiteral | This | StringLiteral | Identifier |
FunctionCall | UnaryExpression | BitwiseExpression | LogicalExpression | AssignableExpression | Assignment | ParenthesizedExpression;
ArithmeticExpression <- Addition | Subtraction | Multiplication | Division | Modulus;
BinaryExpression <- ArithmeticExpression | RelationalExpression;
Expand All @@ -20,7 +20,7 @@ LogicalExpression <- LogicalAnd | LogicalOr | LogicalNot;
Assignment <- SimpleAssignment | AdditionAssignment | SubtractionAssignment | MultiplicationAssignment | DivisionAssignment
| ModulusAssignment | BitwiseAndAssignment | BitwiseOrAssignment | ExclusiveOrAssignment
| RightShiftAssignment | UnsignedRightShiftAssignment | LeftShiftAssignment;
AssignableExpression <- Variable | 0;
AssignableExpression <- Variable | PropertyAccess;

ExpressionStatement <- expression@Expression;
ParenthesizedExpression <- expression@Expression;
Expand Down Expand Up @@ -452,6 +452,7 @@ singleExpression(literal<"+">, #1) -> Positive(#1);

identifier(literal<#1>) -> Identifier<#1>;

singleExpression(#1, literal<"=">, #2) -> SimpleAssignment(#1, #2);
singleExpression(#1, literal<"=">, #2) -> SimpleAssignment(Variable(Name(#1)), #2);
singleExpression(#1, assignmentOperator(literal<"+=">), #2) -> AdditionAssignment(#1, #2);
singleExpression(#1, assignmentOperator(literal<"-=">), #2) -> SubtractionAssignment(#1, #2);
Expand All @@ -465,6 +466,9 @@ singleExpression(#1, assignmentOperator(literal<">>=">), #2) -> RightShift(#1, #
singleExpression(#1, assignmentOperator(literal<">>>=">), #2) -> UnsignedRightShift(#1, #2);
singleExpression(#1, assignmentOperator(literal<"<<=">), #2) -> LeftShift(#1, #2);

singleExpression(literal<"this">) -> This;
singleExpression(This, identifierName(#1)) -> PropertyAccess(This, #1);

variableDeclaration(assignable(#1), literal<"=">, #2) -> Declarator(#1, #2);
variableDeclarationList(varModifier(let_(literal<"let">)), #1...) -> VariableDeclaration(DeclaratorList(#1));
variableDeclarationList(varModifier(literal<"var">), #1...) -> VariableDeclaration(DeclaratorList(#1));
Expand Down

1 comment on commit cbf5484

@0pdd
Copy link

@0pdd 0pdd commented on cbf5484 Oct 10, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't able to retrieve PDD puzzles from the code base and submit them to github. If you think that it's a bug on our side, please submit it to yegor256/0pdd:

set -x && set -e && set -o pipefail && cd /tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA && pdd -v -f /tmp/20221010-3935-1pfuuwo [1]: + set -e + set -o pipefail + cd /tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA + pdd -v -f /tmp/20221010-3935-1pfuuwo My...

Please, copy and paste this stack trace to GitHub:

UserError
set -x && set -e && set -o pipefail && cd /tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA && pdd -v -f /tmp/20221010-3935-1pfuuwo [1]:
+ set -e
+ set -o pipefail
+ cd /tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA
+ pdd -v -f /tmp/20221010-3935-1pfuuwo

My version is 0.22.0
Ruby version is 2.7.5 at x86_64-linux
Reading from root dir /tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA
/tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA/src/main/documents/project_structure.png is a binary file (28774 bytes)
/tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA/src/main/documents/ast_js_raw.png is a binary file (67906 bytes)
/tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA/src/main/documents/ast_js_unified.png is a binary file (30973 bytes)
/tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA/src/main/documents/ast_java_unified.png is a binary file (46534 bytes)
/tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA/src/main/documents/ast_py_unified.png is a binary file (30973 bytes)
/tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA/src/main/documents/ast_java_raw.png is a binary file (36349 bytes)
/tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA/src/main/documents/comparison.png is a binary file (115513 bytes)
/tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA/src/main/documents/synchronized_java.png is a binary file (14938 bytes)
/tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA/src/main/documents/ast_py_raw.png is a binary file (47973 bytes)
/tmp/0pdd20221010-14-83azux/Z2l0QGdpdGh1Yi5jb206Y3Fmbi91YXN0LmdpdA/src/test/resources/algorithms/ClassWithProperty_js.json is a binary file (709 bytes)
Reading .gitignore ...
Reading README.md ...
Reading .rultor.yml ...
Reading pom.xml ...
Reading LICENSE.txt ...
Reading .github/workflows/build_and_test.yml ...
Reading codecov.yml ...
Reading src/main/antlr/PythonParser.g4 ...
ERROR: ERROR: src/main/antlr/PythonParser.g4; PDD::Error at src/main/antlr/PythonParser.g4:128: TODO found, but puzzle can't be parsed, most probably because TODO is not followed by a puzzle marker, as this page explains: https://github.com/cqfn/pdd#how-to-format
If you can't understand the cause of this issue or you don't know how to fix it, please submit a GitHub issue, we will try to help you: https://github.com/cqfn/pdd/issues. This tool is still in its beta version and we will appreciate your feedback. Here is where you can find more documentation: https://github.com/cqfn/pdd/blob/master/README.md.
Exit code is 1

/app/objects/git_repo.rb:73:in `rescue in block in xml'
/app/objects/git_repo.rb:70:in `block in xml'
/app/vendor/ruby-2.7.5/lib/ruby/2.7.0/tempfile.rb:291:in `open'
/app/objects/git_repo.rb:69:in `xml'
/app/objects/puzzles.rb:41:in `deploy'
/app/objects/jobs/job.rb:38:in `proceed'
/app/objects/jobs/job_starred.rb:32:in `proceed'
/app/objects/jobs/job_recorded.rb:31:in `proceed'
/app/objects/jobs/job_emailed.rb:33:in `proceed'
/app/objects/jobs/job_commiterrors.rb:33:in `proceed'
/app/objects/jobs/job_detached.rb:48:in `exclusive'
/app/objects/jobs/job_detached.rb:36:in `block in proceed'
/app/objects/jobs/job_detached.rb:36:in `fork'
/app/objects/jobs/job_detached.rb:36:in `proceed'
/app/0pdd.rb:530:in `process_request'
/app/0pdd.rb:367:in `block in <top (required)>'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1686:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1686:in `block in compile!'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1023:in `block (3 levels) in route!'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1042:in `route_eval'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1023:in `block (2 levels) in route!'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1071:in `block in process_route'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1069:in `catch'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1069:in `process_route'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1021:in `block in route!'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1018:in `each'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1018:in `route!'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1140:in `block in dispatch!'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1112:in `block in invoke'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1112:in `catch'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1112:in `invoke'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1135:in `dispatch!'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:949:in `block in call!'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1112:in `block in invoke'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1112:in `catch'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1112:in `invoke'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:949:in `call!'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:938:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/rack-2.2.4/lib/rack/deflater.rb:44:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/rack-protection-2.2.2/lib/rack/protection/xss_header.rb:18:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/rack-protection-2.2.2/lib/rack/protection/path_traversal.rb:16:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/rack-protection-2.2.2/lib/rack/protection/json_csrf.rb:26:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/rack-protection-2.2.2/lib/rack/protection/base.rb:50:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/rack-protection-2.2.2/lib/rack/protection/base.rb:50:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/rack-protection-2.2.2/lib/rack/protection/frame_options.rb:31:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/rack-2.2.4/lib/rack/logger.rb:17:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/rack-2.2.4/lib/rack/common_logger.rb:38:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:255:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:248:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/rack-2.2.4/lib/rack/head.rb:12:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/rack-2.2.4/lib/rack/method_override.rb:24:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:218:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1993:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1553:in `block in call'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1769:in `synchronize'
/app/vendor/bundle/ruby/2.7.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1553:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/rack-2.2.4/lib/rack/handler/webrick.rb:95:in `service'
/app/vendor/ruby-2.7.5/lib/ruby/2.7.0/webrick/httpserver.rb:140:in `service'
/app/vendor/ruby-2.7.5/lib/ruby/2.7.0/webrick/httpserver.rb:96:in `run'
/app/vendor/ruby-2.7.5/lib/ruby/2.7.0/webrick/server.rb:307:in `block in start_thread'

Please sign in to comment.