diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..a9aba9f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "vuvoth" + ] +} \ No newline at end of file diff --git a/crates/parser/src/utils.rs b/crates/parser/src/utils.rs new file mode 100644 index 0000000..e69de29 diff --git a/crates/syntax/src/lib.rs b/crates/syntax/src/lib.rs index 7f4b53c..e746fe1 100644 --- a/crates/syntax/src/lib.rs +++ b/crates/syntax/src/lib.rs @@ -1,5 +1,5 @@ pub mod abstract_syntax_tree; pub mod syntax; pub mod syntax_node; - -mod test_programs; +mod utils; +mod view_syntax; diff --git a/crates/syntax/src/snapshots/syntax__syntax__grammar_tests____src__test_files__happy__block.circom.snap b/crates/syntax/src/snapshots/syntax__syntax__grammar_tests____src__test_files__happy__block.circom.snap new file mode 100644 index 0000000..beaf281 --- /dev/null +++ b/crates/syntax/src/snapshots/syntax__syntax__grammar_tests____src__test_files__happy__block.circom.snap @@ -0,0 +1,670 @@ +--- +source: crates/syntax/src/syntax.rs +expression: "crate::view_syntax::view_ast(&syntax)" +--- + Block 0..1021 +| LCurly 0..1 +| | LCurly 0..1 "{" +| EndLine 1..2 +| | EndLine 1..2 +| | | EndLine 1..2 "\n" +| WhiteSpace 2..3 +| | WhiteSpace 2..3 +| | | WhiteSpace 2..3 " " +| CommentLine 3..28 +| | CommentLine 3..28 +| | | CommentLine 3..28 "//Declaration of signals." +| EndLine 28..29 +| | EndLine 28..29 +| | | EndLine 28..29 "\n" +| WhiteSpace 29..41 +| | WhiteSpace 29..41 +| | | WhiteSpace 29..41 " " +| StatementList 41..1020 +| | InputSignalDecl 41..56 +| | | SignalHeader 41..54 +| | | | SignalKw 41..47 +| | | | | SignalKw 41..47 "signal" +| | | | WhiteSpace 47..48 +| | | | | WhiteSpace 47..48 +| | | | | | WhiteSpace 47..48 " " +| | | | InputKw 48..53 +| | | | | InputKw 48..53 "input" +| | | | WhiteSpace 53..54 +| | | | | WhiteSpace 53..54 +| | | | | | WhiteSpace 53..54 " " +| | | Identifier 54..56 +| | | | Identifier 54..56 "in" +| | Error 56..89 +| | | Error 56..89 +| | | | Error 56..89 "expect Semicolon but got LBracket" +| | Statement 89..125 +| | | Error 89..90 +| | | | Expression 89..90 +| | | | | Error 89..90 +| | | | | | LBracket 89..90 +| | | | | | | LBracket 89..90 "[" +| | | Error 90..125 +| | | | Error 90..125 +| | | | | Error 90..125 "expect Semicolon but got Identifier" +| | Statement 125..159 +| | | Error 125..126 +| | | | Expression 125..126 +| | | | | ComponentIdentifier 125..126 +| | | | | | Identifier 125..126 +| | | | | | | Identifier 125..126 "N" +| | | Error 126..159 +| | | | Error 126..159 +| | | | | Error 126..159 "expect Semicolon but got RBracket" +| | Statement 159..161 +| | | Error 159..160 +| | | | Expression 159..160 +| | | | | Error 159..160 +| | | | | | RBracket 159..160 +| | | | | | | RBracket 159..160 "]" +| | | Semicolon 160..161 +| | | | Semicolon 160..161 ";" +| | EndLine 161..162 +| | | EndLine 161..162 +| | | | EndLine 161..162 "\n" +| | WhiteSpace 162..174 +| | | WhiteSpace 162..174 +| | | | WhiteSpace 162..174 " " +| | OutputSignalDecl 174..191 +| | | SignalHeader 174..188 +| | | | SignalKw 174..180 +| | | | | SignalKw 174..180 "signal" +| | | | WhiteSpace 180..181 +| | | | | WhiteSpace 180..181 +| | | | | | WhiteSpace 180..181 " " +| | | | OutputKw 181..187 +| | | | | OutputKw 181..187 "output" +| | | | WhiteSpace 187..188 +| | | | | WhiteSpace 187..188 +| | | | | | WhiteSpace 187..188 " " +| | | Identifier 188..191 +| | | | Identifier 188..191 "out" +| | Semicolon 191..192 +| | | Semicolon 191..192 ";" +| | EndLine 192..193 +| | | EndLine 192..193 +| | | | EndLine 192..193 "\n" +| | WhiteSpace 193..205 +| | | WhiteSpace 193..205 +| | | | WhiteSpace 193..205 " " +| | ComponentDecl 205..343 +| | | ComponentKw 205..214 +| | | | ComponentKw 205..214 "component" +| | | WhiteSpace 214..215 +| | | | WhiteSpace 214..215 +| | | | | WhiteSpace 214..215 " " +| | | ComponentIdentifier 215..219 +| | | | Identifier 215..219 +| | | | | Identifier 215..219 "comp" +| | | Error 219..249 +| | | | Error 219..249 +| | | | | Error 219..249 "expect Assign but got LBracket" +| | | TemplateName 249..283 +| | | | Error 249..283 +| | | | | Error 249..283 +| | | | | | Error 249..283 "expect Identifier but got LBracket" +| | | Error 283..313 +| | | | Error 283..313 +| | | | | Error 283..313 "expect LParen but got LBracket" +| | | Error 313..343 +| | | | Error 313..343 +| | | | | Error 313..343 "expect RParen but got LBracket" +| | Error 343..376 +| | | Error 343..376 +| | | | Error 343..376 "expect Semicolon but got LBracket" +| | Statement 376..412 +| | | Error 376..377 +| | | | Expression 376..377 +| | | | | Error 376..377 +| | | | | | LBracket 376..377 +| | | | | | | LBracket 376..377 "[" +| | | Error 377..412 +| | | | Error 377..412 +| | | | | Error 377..412 "expect Semicolon but got Identifier" +| | Statement 412..441 +| | | Error 412..413 +| | | | Expression 412..413 +| | | | | ComponentIdentifier 412..413 +| | | | | | Identifier 412..413 +| | | | | | | Identifier 412..413 "N" +| | | Error 413..441 +| | | | Error 413..441 +| | | | | Error 413..441 "expect Semicolon but got Sub" +| | Statement 441..476 +| | | Error 441..443 +| | | | Expression 441..443 +| | | | | Sub 441..443 +| | | | | | Sub 441..442 +| | | | | | | Sub 441..442 "-" +| | | | | | Number 442..443 +| | | | | | | Number 442..443 +| | | | | | | | Number 442..443 "1" +| | | Error 443..476 +| | | | Error 443..476 +| | | | | Error 443..476 "expect Semicolon but got RBracket" +| | Statement 476..478 +| | | Error 476..477 +| | | | Expression 476..477 +| | | | | Error 476..477 +| | | | | | RBracket 476..477 +| | | | | | | RBracket 476..477 "]" +| | | Semicolon 477..478 +| | | | Semicolon 477..478 ";" +| | EndLine 478..479 +| | | EndLine 478..479 +| | | | EndLine 478..479 "\n" +| | EndLine 479..480 +| | | EndLine 479..480 +| | | | EndLine 479..480 "\n" +| | WhiteSpace 480..492 +| | | WhiteSpace 480..492 +| | | | WhiteSpace 480..492 " " +| | CommentLine 492..505 +| | | CommentLine 492..505 +| | | | CommentLine 492..505 "//Statements." +| | EndLine 505..506 +| | | EndLine 505..506 +| | | | EndLine 505..506 "\n" +| | WhiteSpace 506..518 +| | | WhiteSpace 506..518 +| | | | WhiteSpace 506..518 " " +| | Statement 518..606 +| | | ForLoop 518..606 +| | | | ForKw 518..521 +| | | | | ForKw 518..521 "for" +| | | | LParen 521..522 +| | | | | LParen 521..522 "(" +| | | | VarDecl 522..531 +| | | | | VarKw 522..525 +| | | | | | VarKw 522..525 "var" +| | | | | WhiteSpace 525..526 +| | | | | | WhiteSpace 525..526 +| | | | | | | WhiteSpace 525..526 " " +| | | | | Identifier 526..527 +| | | | | | Identifier 526..527 "i" +| | | | | WhiteSpace 527..528 +| | | | | | WhiteSpace 527..528 +| | | | | | | WhiteSpace 527..528 " " +| | | | | Assign 528..529 +| | | | | | Assign 528..529 "=" +| | | | | WhiteSpace 529..530 +| | | | | | WhiteSpace 529..530 +| | | | | | | WhiteSpace 529..530 " " +| | | | | Expression 530..531 +| | | | | | Number 530..531 +| | | | | | | Number 530..531 +| | | | | | | | Number 530..531 "0" +| | | | Semicolon 531..532 +| | | | | Semicolon 531..532 ";" +| | | | WhiteSpace 532..533 +| | | | | WhiteSpace 532..533 +| | | | | | WhiteSpace 532..533 " " +| | | | Expression 533..540 +| | | | | LessThan 533..540 +| | | | | | Identifier 533..534 +| | | | | | | Identifier 533..534 +| | | | | | | | Identifier 533..534 "i" +| | | | | | WhiteSpace 534..535 +| | | | | | | WhiteSpace 534..535 +| | | | | | | | WhiteSpace 534..535 " " +| | | | | | LessThan 535..536 +| | | | | | | LessThan 535..536 "<" +| | | | | | WhiteSpace 536..537 +| | | | | | | WhiteSpace 536..537 +| | | | | | | | WhiteSpace 536..537 " " +| | | | | | Sub 537..540 +| | | | | | | Identifier 537..538 +| | | | | | | | Identifier 537..538 +| | | | | | | | | Identifier 537..538 "N" +| | | | | | | Sub 538..539 +| | | | | | | | Sub 538..539 "-" +| | | | | | | Number 539..540 +| | | | | | | | Number 539..540 +| | | | | | | | | Number 539..540 "1" +| | | | Semicolon 540..541 +| | | | | Semicolon 540..541 ";" +| | | | WhiteSpace 541..542 +| | | | | WhiteSpace 541..542 +| | | | | | WhiteSpace 541..542 " " +| | | | Error 542..543 +| | | | | Expression 542..543 +| | | | | | ComponentIdentifier 542..543 +| | | | | | | Identifier 542..543 +| | | | | | | | Identifier 542..543 "i" +| | | | Error 543..572 +| | | | | Error 543..572 +| | | | | | Error 543..572 "expect RParen but got UnitInc" +| | | | Error 572..575 +| | | | | Expression 572..575 +| | | | | | UnitInc 572..575 +| | | | | | | UnitInc 572..574 +| | | | | | | | UnitInc 572..574 "++" +| | | | | | | Error 574..575 +| | | | | | | | RParen 574..575 +| | | | | | | | | RParen 574..575 ")" +| | | | Error 575..606 +| | | | | Error 575..606 +| | | | | | Error 575..606 "expect Semicolon but got LCurly" +| | Statement 606..694 +| | | Block 606..694 +| | | | LCurly 606..607 +| | | | | LCurly 606..607 "{" +| | | | EndLine 607..608 +| | | | | EndLine 607..608 +| | | | | | EndLine 607..608 "\n" +| | | | WhiteSpace 608..624 +| | | | | WhiteSpace 608..624 +| | | | | | WhiteSpace 608..624 " " +| | | | StatementList 624..693 +| | | | | Statement 624..680 +| | | | | | AssignStatement 624..679 +| | | | | | | Expression 624..632 +| | | | | | | | ComponentIdentifier 624..628 +| | | | | | | | | Identifier 624..628 +| | | | | | | | | | Identifier 624..628 "comp" +| | | | | | | | LBracket 628..629 +| | | | | | | | | LBracket 628..629 "[" +| | | | | | | | Expression 629..630 +| | | | | | | | | Identifier 629..630 +| | | | | | | | | | Identifier 629..630 +| | | | | | | | | | | Identifier 629..630 "i" +| | | | | | | | RBracket 630..631 +| | | | | | | | | RBracket 630..631 "]" +| | | | | | | | WhiteSpace 631..632 +| | | | | | | | | WhiteSpace 631..632 +| | | | | | | | | | WhiteSpace 631..632 " " +| | | | | | | Assign 632..633 +| | | | | | | | Assign 632..633 "=" +| | | | | | | WhiteSpace 633..634 +| | | | | | | | WhiteSpace 633..634 +| | | | | | | | | WhiteSpace 633..634 " " +| | | | | | | Expression 634..679 +| | | | | | | | Call 634..679 +| | | | | | | | | Identifier 634..645 +| | | | | | | | | | Identifier 634..645 +| | | | | | | | | | | Identifier 634..645 "Multiplier2" +| | | | | | | | | Tuple 645..679 +| | | | | | | | | | LParen 645..646 +| | | | | | | | | | | LParen 645..646 "(" +| | | | | | | | | | Error 646..678 +| | | | | | | | | | | Error 646..678 +| | | | | | | | | | | | Error 646..678 "expect Identifier but got RParen" +| | | | | | | | | | RParen 678..679 +| | | | | | | | | | | RParen 678..679 ")" +| | | | | | Semicolon 679..680 +| | | | | | | Semicolon 679..680 ";" +| | | | | EndLine 680..681 +| | | | | | EndLine 680..681 +| | | | | | | EndLine 680..681 "\n" +| | | | | WhiteSpace 681..693 +| | | | | | WhiteSpace 681..693 +| | | | | | | WhiteSpace 681..693 " " +| | | | RCurly 693..694 +| | | | | RCurly 693..694 "}" +| | EndLine 694..695 +| | | EndLine 694..695 +| | | | EndLine 694..695 "\n" +| | WhiteSpace 695..707 +| | | WhiteSpace 695..707 +| | | | WhiteSpace 695..707 " " +| | Statement 707..729 +| | | AssignStatement 707..728 +| | | | ComponentCall 707..718 +| | | | | ComponentIdentifier 707..711 +| | | | | | Identifier 707..711 +| | | | | | | Identifier 707..711 "comp" +| | | | | LBracket 711..712 +| | | | | | LBracket 711..712 "[" +| | | | | Expression 712..713 +| | | | | | Number 712..713 +| | | | | | | Number 712..713 +| | | | | | | | Number 712..713 "0" +| | | | | RBracket 713..714 +| | | | | | RBracket 713..714 "]" +| | | | | Dot 714..715 +| | | | | | Dot 714..715 "." +| | | | | Identifier 715..718 +| | | | | | Identifier 715..718 "in1" +| | | | WhiteSpace 718..719 +| | | | | WhiteSpace 718..719 +| | | | | | WhiteSpace 718..719 " " +| | | | RAssignConstraintSignal 719..722 +| | | | | RAssignConstraintSignal 719..722 "<==" +| | | | WhiteSpace 722..723 +| | | | | WhiteSpace 722..723 +| | | | | | WhiteSpace 722..723 " " +| | | | Expression 723..728 +| | | | | ArrayQuery 723..728 +| | | | | | Identifier 723..725 +| | | | | | | Identifier 723..725 +| | | | | | | | Identifier 723..725 "in" +| | | | | | LBracket 725..726 +| | | | | | | LBracket 725..726 "[" +| | | | | | Number 726..727 +| | | | | | | Number 726..727 +| | | | | | | | Number 726..727 "0" +| | | | | | RBracket 727..728 +| | | | | | | RBracket 727..728 "]" +| | | Semicolon 728..729 +| | | | Semicolon 728..729 ";" +| | EndLine 729..730 +| | | EndLine 729..730 +| | | | EndLine 729..730 "\n" +| | WhiteSpace 730..742 +| | | WhiteSpace 730..742 +| | | | WhiteSpace 730..742 " " +| | Statement 742..764 +| | | AssignStatement 742..763 +| | | | ComponentCall 742..753 +| | | | | ComponentIdentifier 742..746 +| | | | | | Identifier 742..746 +| | | | | | | Identifier 742..746 "comp" +| | | | | LBracket 746..747 +| | | | | | LBracket 746..747 "[" +| | | | | Expression 747..748 +| | | | | | Number 747..748 +| | | | | | | Number 747..748 +| | | | | | | | Number 747..748 "0" +| | | | | RBracket 748..749 +| | | | | | RBracket 748..749 "]" +| | | | | Dot 749..750 +| | | | | | Dot 749..750 "." +| | | | | Identifier 750..753 +| | | | | | Identifier 750..753 "in2" +| | | | WhiteSpace 753..754 +| | | | | WhiteSpace 753..754 +| | | | | | WhiteSpace 753..754 " " +| | | | RAssignConstraintSignal 754..757 +| | | | | RAssignConstraintSignal 754..757 "<==" +| | | | WhiteSpace 757..758 +| | | | | WhiteSpace 757..758 +| | | | | | WhiteSpace 757..758 " " +| | | | Expression 758..763 +| | | | | ArrayQuery 758..763 +| | | | | | Identifier 758..760 +| | | | | | | Identifier 758..760 +| | | | | | | | Identifier 758..760 "in" +| | | | | | LBracket 760..761 +| | | | | | | LBracket 760..761 "[" +| | | | | | Number 761..762 +| | | | | | | Number 761..762 +| | | | | | | | Number 761..762 "1" +| | | | | | RBracket 762..763 +| | | | | | | RBracket 762..763 "]" +| | | Semicolon 763..764 +| | | | Semicolon 763..764 ";" +| | EndLine 764..765 +| | | EndLine 764..765 +| | | | EndLine 764..765 "\n" +| | WhiteSpace 765..777 +| | | WhiteSpace 765..777 +| | | | WhiteSpace 765..777 " " +| | Statement 777..865 +| | | ForLoop 777..865 +| | | | ForKw 777..780 +| | | | | ForKw 777..780 "for" +| | | | LParen 780..781 +| | | | | LParen 780..781 "(" +| | | | VarDecl 781..790 +| | | | | VarKw 781..784 +| | | | | | VarKw 781..784 "var" +| | | | | WhiteSpace 784..785 +| | | | | | WhiteSpace 784..785 +| | | | | | | WhiteSpace 784..785 " " +| | | | | Identifier 785..786 +| | | | | | Identifier 785..786 "i" +| | | | | WhiteSpace 786..787 +| | | | | | WhiteSpace 786..787 +| | | | | | | WhiteSpace 786..787 " " +| | | | | Assign 787..788 +| | | | | | Assign 787..788 "=" +| | | | | WhiteSpace 788..789 +| | | | | | WhiteSpace 788..789 +| | | | | | | WhiteSpace 788..789 " " +| | | | | Expression 789..790 +| | | | | | Number 789..790 +| | | | | | | Number 789..790 +| | | | | | | | Number 789..790 "0" +| | | | Semicolon 790..791 +| | | | | Semicolon 790..791 ";" +| | | | WhiteSpace 791..792 +| | | | | WhiteSpace 791..792 +| | | | | | WhiteSpace 791..792 " " +| | | | Expression 792..799 +| | | | | LessThan 792..799 +| | | | | | Identifier 792..793 +| | | | | | | Identifier 792..793 +| | | | | | | | Identifier 792..793 "i" +| | | | | | WhiteSpace 793..794 +| | | | | | | WhiteSpace 793..794 +| | | | | | | | WhiteSpace 793..794 " " +| | | | | | LessThan 794..795 +| | | | | | | LessThan 794..795 "<" +| | | | | | WhiteSpace 795..796 +| | | | | | | WhiteSpace 795..796 +| | | | | | | | WhiteSpace 795..796 " " +| | | | | | Sub 796..799 +| | | | | | | Identifier 796..797 +| | | | | | | | Identifier 796..797 +| | | | | | | | | Identifier 796..797 "N" +| | | | | | | Sub 797..798 +| | | | | | | | Sub 797..798 "-" +| | | | | | | Number 798..799 +| | | | | | | | Number 798..799 +| | | | | | | | | Number 798..799 "2" +| | | | Semicolon 799..800 +| | | | | Semicolon 799..800 ";" +| | | | WhiteSpace 800..801 +| | | | | WhiteSpace 800..801 +| | | | | | WhiteSpace 800..801 " " +| | | | Error 801..802 +| | | | | Expression 801..802 +| | | | | | ComponentIdentifier 801..802 +| | | | | | | Identifier 801..802 +| | | | | | | | Identifier 801..802 "i" +| | | | Error 802..831 +| | | | | Error 802..831 +| | | | | | Error 802..831 "expect RParen but got UnitInc" +| | | | Error 831..834 +| | | | | Expression 831..834 +| | | | | | UnitInc 831..834 +| | | | | | | UnitInc 831..833 +| | | | | | | | UnitInc 831..833 "++" +| | | | | | | Error 833..834 +| | | | | | | | RParen 833..834 +| | | | | | | | | RParen 833..834 ")" +| | | | Error 834..865 +| | | | | Error 834..865 +| | | | | | Error 834..865 "expect Semicolon but got LCurly" +| | Statement 865..971 +| | | Block 865..971 +| | | | LCurly 865..866 +| | | | | LCurly 865..866 "{" +| | | | EndLine 866..867 +| | | | | EndLine 866..867 +| | | | | | EndLine 866..867 "\n" +| | | | WhiteSpace 867..883 +| | | | | WhiteSpace 867..883 +| | | | | | WhiteSpace 867..883 " " +| | | | StatementList 883..970 +| | | | | Statement 883..913 +| | | | | | AssignStatement 883..912 +| | | | | | | ComponentCall 883..896 +| | | | | | | | ComponentIdentifier 883..887 +| | | | | | | | | Identifier 883..887 +| | | | | | | | | | Identifier 883..887 "comp" +| | | | | | | | LBracket 887..888 +| | | | | | | | | LBracket 887..888 "[" +| | | | | | | | Expression 888..891 +| | | | | | | | | Add 888..891 +| | | | | | | | | | Identifier 888..889 +| | | | | | | | | | | Identifier 888..889 +| | | | | | | | | | | | Identifier 888..889 "i" +| | | | | | | | | | Add 889..890 +| | | | | | | | | | | Add 889..890 "+" +| | | | | | | | | | Number 890..891 +| | | | | | | | | | | Number 890..891 +| | | | | | | | | | | | Number 890..891 "1" +| | | | | | | | RBracket 891..892 +| | | | | | | | | RBracket 891..892 "]" +| | | | | | | | Dot 892..893 +| | | | | | | | | Dot 892..893 "." +| | | | | | | | Identifier 893..896 +| | | | | | | | | Identifier 893..896 "in1" +| | | | | | | WhiteSpace 896..897 +| | | | | | | | WhiteSpace 896..897 +| | | | | | | | | WhiteSpace 896..897 " " +| | | | | | | RAssignConstraintSignal 897..900 +| | | | | | | | RAssignConstraintSignal 897..900 "<==" +| | | | | | | WhiteSpace 900..901 +| | | | | | | | WhiteSpace 900..901 +| | | | | | | | | WhiteSpace 900..901 " " +| | | | | | | Expression 901..912 +| | | | | | | | ComponentCall 901..912 +| | | | | | | | | ArrayQuery 901..908 +| | | | | | | | | | Identifier 901..905 +| | | | | | | | | | | Identifier 901..905 +| | | | | | | | | | | | Identifier 901..905 "comp" +| | | | | | | | | | LBracket 905..906 +| | | | | | | | | | | LBracket 905..906 "[" +| | | | | | | | | | Identifier 906..907 +| | | | | | | | | | | Identifier 906..907 +| | | | | | | | | | | | Identifier 906..907 "i" +| | | | | | | | | | RBracket 907..908 +| | | | | | | | | | | RBracket 907..908 "]" +| | | | | | | | | Dot 908..909 +| | | | | | | | | | Dot 908..909 "." +| | | | | | | | | Identifier 909..912 +| | | | | | | | | | Identifier 909..912 "out" +| | | | | | Semicolon 912..913 +| | | | | | | Semicolon 912..913 ";" +| | | | | EndLine 913..914 +| | | | | | EndLine 913..914 +| | | | | | | EndLine 913..914 "\n" +| | | | | WhiteSpace 914..930 +| | | | | | WhiteSpace 914..930 +| | | | | | | WhiteSpace 914..930 " " +| | | | | Statement 930..956 +| | | | | | AssignStatement 930..955 +| | | | | | | ComponentCall 930..943 +| | | | | | | | ComponentIdentifier 930..934 +| | | | | | | | | Identifier 930..934 +| | | | | | | | | | Identifier 930..934 "comp" +| | | | | | | | LBracket 934..935 +| | | | | | | | | LBracket 934..935 "[" +| | | | | | | | Expression 935..938 +| | | | | | | | | Add 935..938 +| | | | | | | | | | Identifier 935..936 +| | | | | | | | | | | Identifier 935..936 +| | | | | | | | | | | | Identifier 935..936 "i" +| | | | | | | | | | Add 936..937 +| | | | | | | | | | | Add 936..937 "+" +| | | | | | | | | | Number 937..938 +| | | | | | | | | | | Number 937..938 +| | | | | | | | | | | | Number 937..938 "1" +| | | | | | | | RBracket 938..939 +| | | | | | | | | RBracket 938..939 "]" +| | | | | | | | Dot 939..940 +| | | | | | | | | Dot 939..940 "." +| | | | | | | | Identifier 940..943 +| | | | | | | | | Identifier 940..943 "in2" +| | | | | | | WhiteSpace 943..944 +| | | | | | | | WhiteSpace 943..944 +| | | | | | | | | WhiteSpace 943..944 " " +| | | | | | | RAssignConstraintSignal 944..947 +| | | | | | | | RAssignConstraintSignal 944..947 "<==" +| | | | | | | WhiteSpace 947..948 +| | | | | | | | WhiteSpace 947..948 +| | | | | | | | | WhiteSpace 947..948 " " +| | | | | | | Expression 948..955 +| | | | | | | | ArrayQuery 948..955 +| | | | | | | | | Identifier 948..950 +| | | | | | | | | | Identifier 948..950 +| | | | | | | | | | | Identifier 948..950 "in" +| | | | | | | | | LBracket 950..951 +| | | | | | | | | | LBracket 950..951 "[" +| | | | | | | | | Add 951..954 +| | | | | | | | | | Identifier 951..952 +| | | | | | | | | | | Identifier 951..952 +| | | | | | | | | | | | Identifier 951..952 "i" +| | | | | | | | | | Add 952..953 +| | | | | | | | | | | Add 952..953 "+" +| | | | | | | | | | Number 953..954 +| | | | | | | | | | | Number 953..954 +| | | | | | | | | | | | Number 953..954 "2" +| | | | | | | | | RBracket 954..955 +| | | | | | | | | | RBracket 954..955 "]" +| | | | | | Semicolon 955..956 +| | | | | | | Semicolon 955..956 ";" +| | | | | EndLine 956..957 +| | | | | | EndLine 956..957 +| | | | | | | EndLine 956..957 "\n" +| | | | | EndLine 957..958 +| | | | | | EndLine 957..958 +| | | | | | | EndLine 957..958 "\n" +| | | | | WhiteSpace 958..970 +| | | | | | WhiteSpace 958..970 +| | | | | | | WhiteSpace 958..970 " " +| | | | RCurly 970..971 +| | | | | RCurly 970..971 "}" +| | EndLine 971..972 +| | | EndLine 971..972 +| | | | EndLine 971..972 "\n" +| | WhiteSpace 972..984 +| | | WhiteSpace 972..984 +| | | | WhiteSpace 972..984 " " +| | Statement 984..1006 +| | | AssignStatement 984..1005 +| | | | Expression 984..988 +| | | | | ComponentIdentifier 984..987 +| | | | | | Identifier 984..987 +| | | | | | | Identifier 984..987 "out" +| | | | | WhiteSpace 987..988 +| | | | | | WhiteSpace 987..988 +| | | | | | | WhiteSpace 987..988 " " +| | | | RAssignConstraintSignal 988..991 +| | | | | RAssignConstraintSignal 988..991 "<==" +| | | | WhiteSpace 991..992 +| | | | | WhiteSpace 991..992 +| | | | | | WhiteSpace 991..992 " " +| | | | Expression 992..1005 +| | | | | ComponentCall 992..1005 +| | | | | | ArrayQuery 992..1001 +| | | | | | | Identifier 992..996 +| | | | | | | | Identifier 992..996 +| | | | | | | | | Identifier 992..996 "comp" +| | | | | | | LBracket 996..997 +| | | | | | | | LBracket 996..997 "[" +| | | | | | | Sub 997..1000 +| | | | | | | | Identifier 997..998 +| | | | | | | | | Identifier 997..998 +| | | | | | | | | | Identifier 997..998 "N" +| | | | | | | | Sub 998..999 +| | | | | | | | | Sub 998..999 "-" +| | | | | | | | Number 999..1000 +| | | | | | | | | Number 999..1000 +| | | | | | | | | | Number 999..1000 "2" +| | | | | | | RBracket 1000..1001 +| | | | | | | | RBracket 1000..1001 "]" +| | | | | | Dot 1001..1002 +| | | | | | | Dot 1001..1002 "." +| | | | | | Identifier 1002..1005 +| | | | | | | Identifier 1002..1005 "out" +| | | Semicolon 1005..1006 +| | | | Semicolon 1005..1006 ";" +| | WhiteSpace 1006..1007 +| | | WhiteSpace 1006..1007 +| | | | WhiteSpace 1006..1007 " " +| | EndLine 1007..1008 +| | | EndLine 1007..1008 +| | | | EndLine 1007..1008 "\n" +| | WhiteSpace 1008..1020 +| | | WhiteSpace 1008..1020 +| | | | WhiteSpace 1008..1020 " " +| RCurly 1020..1021 +| | RCurly 1020..1021 "}" diff --git a/crates/syntax/src/snapshots/syntax__syntax__grammar_tests____src__test_files__happy__pragma.circom.snap b/crates/syntax/src/snapshots/syntax__syntax__grammar_tests____src__test_files__happy__pragma.circom.snap new file mode 100644 index 0000000..f84ef6f --- /dev/null +++ b/crates/syntax/src/snapshots/syntax__syntax__grammar_tests____src__test_files__happy__pragma.circom.snap @@ -0,0 +1,19 @@ +--- +source: crates/syntax/src/syntax.rs +expression: "crate::view_syntax::view_ast(&syntax)" +--- + Pragma 0..20 +| Pragma 0..6 +| | Pragma 0..6 "pragma" +| WhiteSpace 6..7 +| | WhiteSpace 6..7 +| | | WhiteSpace 6..7 " " +| Circom 7..13 +| | Circom 7..13 "circom" +| WhiteSpace 13..14 +| | WhiteSpace 13..14 +| | | WhiteSpace 13..14 " " +| Version 14..19 +| | Version 14..19 "2.0.0" +| Semicolon 19..20 +| | Semicolon 19..20 ";" diff --git a/crates/syntax/src/snapshots/syntax__syntax__grammar_tests____src__test_files__happy__template.circom.snap b/crates/syntax/src/snapshots/syntax__syntax__grammar_tests____src__test_files__happy__template.circom.snap new file mode 100644 index 0000000..6d1a073 --- /dev/null +++ b/crates/syntax/src/snapshots/syntax__syntax__grammar_tests____src__test_files__happy__template.circom.snap @@ -0,0 +1,358 @@ +--- +source: crates/syntax/src/syntax.rs +expression: "crate::view_syntax::view_ast(&syntax)" +--- + TemplateDef 0..784 +| TemplateKw 0..8 +| | TemplateKw 0..8 "template" +| WhiteSpace 8..9 +| | WhiteSpace 8..9 +| | | WhiteSpace 8..9 " " +| TemplateName 9..20 +| | Identifier 9..20 +| | | Identifier 9..20 "MultiplierN" +| WhiteSpace 20..21 +| | WhiteSpace 20..21 +| | | WhiteSpace 20..21 " " +| LParen 21..22 +| | LParen 21..22 "(" +| ParameterList 22..30 +| | Identifier 22..23 +| | | Identifier 22..23 "N" +| | Comma 23..24 +| | | Comma 23..24 "," +| | WhiteSpace 24..25 +| | | WhiteSpace 24..25 +| | | | WhiteSpace 24..25 " " +| | Identifier 25..26 +| | | Identifier 25..26 "P" +| | Comma 26..27 +| | | Comma 26..27 "," +| | WhiteSpace 27..28 +| | | WhiteSpace 27..28 +| | | | WhiteSpace 27..28 " " +| | Identifier 28..30 +| | | Identifier 28..30 "QQ" +| RParen 30..31 +| | RParen 30..31 ")" +| WhiteSpace 31..32 +| | WhiteSpace 31..32 +| | | WhiteSpace 31..32 " " +| Block 32..784 +| | LCurly 32..33 +| | | LCurly 32..33 "{" +| | EndLine 33..34 +| | | EndLine 33..34 +| | | | EndLine 33..34 "\n" +| | WhiteSpace 34..46 +| | | WhiteSpace 34..46 +| | | | WhiteSpace 34..46 " " +| | CommentLine 46..86 +| | | CommentLine 46..86 +| | | | CommentLine 46..86 "//Declaration of signals and components." +| | EndLine 86..87 +| | | EndLine 86..87 +| | | | EndLine 86..87 "\n" +| | WhiteSpace 87..99 +| | | WhiteSpace 87..99 +| | | | WhiteSpace 87..99 " " +| | StatementList 99..783 +| | | InputSignalDecl 99..114 +| | | | SignalHeader 99..112 +| | | | | SignalKw 99..105 +| | | | | | SignalKw 99..105 "signal" +| | | | | WhiteSpace 105..106 +| | | | | | WhiteSpace 105..106 +| | | | | | | WhiteSpace 105..106 " " +| | | | | InputKw 106..111 +| | | | | | InputKw 106..111 "input" +| | | | | WhiteSpace 111..112 +| | | | | | WhiteSpace 111..112 +| | | | | | | WhiteSpace 111..112 " " +| | | | Identifier 112..114 +| | | | | Identifier 112..114 "in" +| | | Error 114..147 +| | | | Error 114..147 +| | | | | Error 114..147 "expect Semicolon but got LBracket" +| | | Statement 147..183 +| | | | Error 147..148 +| | | | | Expression 147..148 +| | | | | | Error 147..148 +| | | | | | | LBracket 147..148 +| | | | | | | | LBracket 147..148 "[" +| | | | Error 148..183 +| | | | | Error 148..183 +| | | | | | Error 148..183 "expect Semicolon but got Identifier" +| | | Statement 183..217 +| | | | Error 183..184 +| | | | | Expression 183..184 +| | | | | | ComponentIdentifier 183..184 +| | | | | | | Identifier 183..184 +| | | | | | | | Identifier 183..184 "N" +| | | | Error 184..217 +| | | | | Error 184..217 +| | | | | | Error 184..217 "expect Semicolon but got RBracket" +| | | Statement 217..219 +| | | | Error 217..218 +| | | | | Expression 217..218 +| | | | | | Error 217..218 +| | | | | | | RBracket 217..218 +| | | | | | | | RBracket 217..218 "]" +| | | | Semicolon 218..219 +| | | | | Semicolon 218..219 ";" +| | | EndLine 219..220 +| | | | EndLine 219..220 +| | | | | EndLine 219..220 "\n" +| | | WhiteSpace 220..232 +| | | | WhiteSpace 220..232 +| | | | | WhiteSpace 220..232 " " +| | | OutputSignalDecl 232..249 +| | | | SignalHeader 232..246 +| | | | | SignalKw 232..238 +| | | | | | SignalKw 232..238 "signal" +| | | | | WhiteSpace 238..239 +| | | | | | WhiteSpace 238..239 +| | | | | | | WhiteSpace 238..239 " " +| | | | | OutputKw 239..245 +| | | | | | OutputKw 239..245 "output" +| | | | | WhiteSpace 245..246 +| | | | | | WhiteSpace 245..246 +| | | | | | | WhiteSpace 245..246 " " +| | | | Identifier 246..249 +| | | | | Identifier 246..249 "out" +| | | Semicolon 249..250 +| | | | Semicolon 249..250 ";" +| | | EndLine 250..251 +| | | | EndLine 250..251 +| | | | | EndLine 250..251 "\n" +| | | WhiteSpace 251..263 +| | | | WhiteSpace 251..263 +| | | | | WhiteSpace 251..263 " " +| | | ComponentDecl 263..401 +| | | | ComponentKw 263..272 +| | | | | ComponentKw 263..272 "component" +| | | | WhiteSpace 272..273 +| | | | | WhiteSpace 272..273 +| | | | | | WhiteSpace 272..273 " " +| | | | ComponentIdentifier 273..277 +| | | | | Identifier 273..277 +| | | | | | Identifier 273..277 "comp" +| | | | Error 277..307 +| | | | | Error 277..307 +| | | | | | Error 277..307 "expect Assign but got LBracket" +| | | | TemplateName 307..341 +| | | | | Error 307..341 +| | | | | | Error 307..341 +| | | | | | | Error 307..341 "expect Identifier but got LBracket" +| | | | Error 341..371 +| | | | | Error 341..371 +| | | | | | Error 341..371 "expect LParen but got LBracket" +| | | | Error 371..401 +| | | | | Error 371..401 +| | | | | | Error 371..401 "expect RParen but got LBracket" +| | | Error 401..434 +| | | | Error 401..434 +| | | | | Error 401..434 "expect Semicolon but got LBracket" +| | | Statement 434..470 +| | | | Error 434..435 +| | | | | Expression 434..435 +| | | | | | Error 434..435 +| | | | | | | LBracket 434..435 +| | | | | | | | LBracket 434..435 "[" +| | | | Error 435..470 +| | | | | Error 435..470 +| | | | | | Error 435..470 "expect Semicolon but got Identifier" +| | | Statement 470..499 +| | | | Error 470..471 +| | | | | Expression 470..471 +| | | | | | ComponentIdentifier 470..471 +| | | | | | | Identifier 470..471 +| | | | | | | | Identifier 470..471 "N" +| | | | Error 471..499 +| | | | | Error 471..499 +| | | | | | Error 471..499 "expect Semicolon but got Sub" +| | | Statement 499..534 +| | | | Error 499..501 +| | | | | Expression 499..501 +| | | | | | Sub 499..501 +| | | | | | | Sub 499..500 +| | | | | | | | Sub 499..500 "-" +| | | | | | | Number 500..501 +| | | | | | | | Number 500..501 +| | | | | | | | | Number 500..501 "1" +| | | | Error 501..534 +| | | | | Error 501..534 +| | | | | | Error 501..534 "expect Semicolon but got RBracket" +| | | Statement 534..536 +| | | | Error 534..535 +| | | | | Expression 534..535 +| | | | | | Error 534..535 +| | | | | | | RBracket 534..535 +| | | | | | | | RBracket 534..535 "]" +| | | | Semicolon 535..536 +| | | | | Semicolon 535..536 ";" +| | | EndLine 536..537 +| | | | EndLine 536..537 +| | | | | EndLine 536..537 "\n" +| | | WhiteSpace 537..550 +| | | | WhiteSpace 537..550 +| | | | | WhiteSpace 537..550 " " +| | | EndLine 550..551 +| | | | EndLine 550..551 +| | | | | EndLine 550..551 "\n" +| | | WhiteSpace 551..563 +| | | | WhiteSpace 551..563 +| | | | | WhiteSpace 551..563 " " +| | | CommentLine 563..576 +| | | | CommentLine 563..576 +| | | | | CommentLine 563..576 "//Statements." +| | | EndLine 576..577 +| | | | EndLine 576..577 +| | | | | EndLine 576..577 "\n" +| | | WhiteSpace 577..589 +| | | | WhiteSpace 577..589 +| | | | | WhiteSpace 577..589 " " +| | | Statement 589..677 +| | | | ForLoop 589..677 +| | | | | ForKw 589..592 +| | | | | | ForKw 589..592 "for" +| | | | | LParen 592..593 +| | | | | | LParen 592..593 "(" +| | | | | VarDecl 593..602 +| | | | | | VarKw 593..596 +| | | | | | | VarKw 593..596 "var" +| | | | | | WhiteSpace 596..597 +| | | | | | | WhiteSpace 596..597 +| | | | | | | | WhiteSpace 596..597 " " +| | | | | | Identifier 597..598 +| | | | | | | Identifier 597..598 "i" +| | | | | | WhiteSpace 598..599 +| | | | | | | WhiteSpace 598..599 +| | | | | | | | WhiteSpace 598..599 " " +| | | | | | Assign 599..600 +| | | | | | | Assign 599..600 "=" +| | | | | | WhiteSpace 600..601 +| | | | | | | WhiteSpace 600..601 +| | | | | | | | WhiteSpace 600..601 " " +| | | | | | Expression 601..602 +| | | | | | | Number 601..602 +| | | | | | | | Number 601..602 +| | | | | | | | | Number 601..602 "0" +| | | | | Semicolon 602..603 +| | | | | | Semicolon 602..603 ";" +| | | | | WhiteSpace 603..604 +| | | | | | WhiteSpace 603..604 +| | | | | | | WhiteSpace 603..604 " " +| | | | | Expression 604..611 +| | | | | | LessThan 604..611 +| | | | | | | Identifier 604..605 +| | | | | | | | Identifier 604..605 +| | | | | | | | | Identifier 604..605 "i" +| | | | | | | WhiteSpace 605..606 +| | | | | | | | WhiteSpace 605..606 +| | | | | | | | | WhiteSpace 605..606 " " +| | | | | | | LessThan 606..607 +| | | | | | | | LessThan 606..607 "<" +| | | | | | | WhiteSpace 607..608 +| | | | | | | | WhiteSpace 607..608 +| | | | | | | | | WhiteSpace 607..608 " " +| | | | | | | Sub 608..611 +| | | | | | | | Identifier 608..609 +| | | | | | | | | Identifier 608..609 +| | | | | | | | | | Identifier 608..609 "N" +| | | | | | | | Sub 609..610 +| | | | | | | | | Sub 609..610 "-" +| | | | | | | | Number 610..611 +| | | | | | | | | Number 610..611 +| | | | | | | | | | Number 610..611 "1" +| | | | | Semicolon 611..612 +| | | | | | Semicolon 611..612 ";" +| | | | | WhiteSpace 612..613 +| | | | | | WhiteSpace 612..613 +| | | | | | | WhiteSpace 612..613 " " +| | | | | Error 613..614 +| | | | | | Expression 613..614 +| | | | | | | ComponentIdentifier 613..614 +| | | | | | | | Identifier 613..614 +| | | | | | | | | Identifier 613..614 "i" +| | | | | Error 614..643 +| | | | | | Error 614..643 +| | | | | | | Error 614..643 "expect RParen but got UnitInc" +| | | | | Error 643..646 +| | | | | | Expression 643..646 +| | | | | | | UnitInc 643..646 +| | | | | | | | UnitInc 643..645 +| | | | | | | | | UnitInc 643..645 "++" +| | | | | | | | Error 645..646 +| | | | | | | | | RParen 645..646 +| | | | | | | | | | RParen 645..646 ")" +| | | | | Error 646..677 +| | | | | | Error 646..677 +| | | | | | | Error 646..677 "expect Semicolon but got LCurly" +| | | Statement 677..765 +| | | | Block 677..765 +| | | | | LCurly 677..678 +| | | | | | LCurly 677..678 "{" +| | | | | EndLine 678..679 +| | | | | | EndLine 678..679 +| | | | | | | EndLine 678..679 "\n" +| | | | | WhiteSpace 679..695 +| | | | | | WhiteSpace 679..695 +| | | | | | | WhiteSpace 679..695 " " +| | | | | StatementList 695..764 +| | | | | | Statement 695..751 +| | | | | | | AssignStatement 695..750 +| | | | | | | | Expression 695..703 +| | | | | | | | | ComponentIdentifier 695..699 +| | | | | | | | | | Identifier 695..699 +| | | | | | | | | | | Identifier 695..699 "comp" +| | | | | | | | | LBracket 699..700 +| | | | | | | | | | LBracket 699..700 "[" +| | | | | | | | | Expression 700..701 +| | | | | | | | | | Identifier 700..701 +| | | | | | | | | | | Identifier 700..701 +| | | | | | | | | | | | Identifier 700..701 "i" +| | | | | | | | | RBracket 701..702 +| | | | | | | | | | RBracket 701..702 "]" +| | | | | | | | | WhiteSpace 702..703 +| | | | | | | | | | WhiteSpace 702..703 +| | | | | | | | | | | WhiteSpace 702..703 " " +| | | | | | | | Assign 703..704 +| | | | | | | | | Assign 703..704 "=" +| | | | | | | | WhiteSpace 704..705 +| | | | | | | | | WhiteSpace 704..705 +| | | | | | | | | | WhiteSpace 704..705 " " +| | | | | | | | Expression 705..750 +| | | | | | | | | Call 705..750 +| | | | | | | | | | Identifier 705..716 +| | | | | | | | | | | Identifier 705..716 +| | | | | | | | | | | | Identifier 705..716 "Multiplier2" +| | | | | | | | | | Tuple 716..750 +| | | | | | | | | | | LParen 716..717 +| | | | | | | | | | | | LParen 716..717 "(" +| | | | | | | | | | | Error 717..749 +| | | | | | | | | | | | Error 717..749 +| | | | | | | | | | | | | Error 717..749 "expect Identifier but got RParen" +| | | | | | | | | | | RParen 749..750 +| | | | | | | | | | | | RParen 749..750 ")" +| | | | | | | Semicolon 750..751 +| | | | | | | | Semicolon 750..751 ";" +| | | | | | EndLine 751..752 +| | | | | | | EndLine 751..752 +| | | | | | | | EndLine 751..752 "\n" +| | | | | | WhiteSpace 752..764 +| | | | | | | WhiteSpace 752..764 +| | | | | | | | WhiteSpace 752..764 " " +| | | | | RCurly 764..765 +| | | | | | RCurly 764..765 "}" +| | | EndLine 765..766 +| | | | EndLine 765..766 +| | | | | EndLine 765..766 "\n" +| | | WhiteSpace 766..782 +| | | | WhiteSpace 766..782 +| | | | | WhiteSpace 766..782 " " +| | | EndLine 782..783 +| | | | EndLine 782..783 +| | | | | EndLine 782..783 "\n" +| | RCurly 783..784 +| | | RCurly 783..784 "}" diff --git a/crates/syntax/src/snapshots/syntax__syntax__grammar_tests____src__test_files__pragma.circom.snap b/crates/syntax/src/snapshots/syntax__syntax__grammar_tests____src__test_files__pragma.circom.snap new file mode 100644 index 0000000..f84ef6f --- /dev/null +++ b/crates/syntax/src/snapshots/syntax__syntax__grammar_tests____src__test_files__pragma.circom.snap @@ -0,0 +1,19 @@ +--- +source: crates/syntax/src/syntax.rs +expression: "crate::view_syntax::view_ast(&syntax)" +--- + Pragma 0..20 +| Pragma 0..6 +| | Pragma 0..6 "pragma" +| WhiteSpace 6..7 +| | WhiteSpace 6..7 +| | | WhiteSpace 6..7 " " +| Circom 7..13 +| | Circom 7..13 "circom" +| WhiteSpace 13..14 +| | WhiteSpace 13..14 +| | | WhiteSpace 13..14 " " +| Version 14..19 +| | Version 14..19 "2.0.0" +| Semicolon 19..20 +| | Semicolon 19..20 ";" diff --git a/crates/syntax/src/snapshots/syntax__syntax__grammar_tests__block_happy_test_statements.snap b/crates/syntax/src/snapshots/syntax__syntax__grammar_tests__block_happy_test_statements.snap index 5db6859..a0e6f49 100644 --- a/crates/syntax/src/snapshots/syntax__syntax__grammar_tests__block_happy_test_statements.snap +++ b/crates/syntax/src/snapshots/syntax__syntax__grammar_tests__block_happy_test_statements.snap @@ -2,11 +2,17 @@ source: crates/syntax/src/syntax.rs expression: statements --- -- "signal input in[N];" -- "signal output out;" -- "component comp[N-1];" -- "for(var i = 0; i < N-1; i++){\n comp[i] = Multiplier2();\n }" +- "[expect Semicolon but got Identifier" +- Nexpect Semicolon but got RBracket +- "];" +- "[expect Semicolon but got Identifier" +- Nexpect Semicolon but got Sub +- "-1expect Semicolon but got RBracket" +- "];" +- for(var i = 0; i < N-1; iexpect RParen but got UnitInc++)expect Semicolon but got LCurly +- "{\n comp[i] = Multiplier2(expect Identifier but got RParen);\n }" - "comp[0].in1 <== in[0];" - "comp[0].in2 <== in[1];" -- "for(var i = 0; i < N-2; i++){\n comp[i+1].in1 <== comp[i].out;\n comp[i+1].in2 <== in[i+2];\n\n }" -- "out <== comp[N-2].out;" \ No newline at end of file +- for(var i = 0; i < N-2; iexpect RParen but got UnitInc++)expect Semicolon but got LCurly +- "{\n comp[i+1].in1 <== comp[i].out;\n comp[i+1].in2 <== in[i+2];\n\n }" +- "out <== comp[N-2].out;" diff --git a/crates/syntax/src/snapshots/syntax__syntax__grammar_tests__template_happy_test_statements.snap b/crates/syntax/src/snapshots/syntax__syntax__grammar_tests__template_happy_test_statements.snap index 74cf89f..719979d 100644 --- a/crates/syntax/src/snapshots/syntax__syntax__grammar_tests__template_happy_test_statements.snap +++ b/crates/syntax/src/snapshots/syntax__syntax__grammar_tests__template_happy_test_statements.snap @@ -2,7 +2,12 @@ source: crates/syntax/src/syntax.rs expression: statements --- -- "signal input in[N];" -- "signal output out;" -- "component comp[N-1];" -- "for(var i = 0; i < N-1; i++){\n comp[i] = Multiplier2();\n }" +- "[expect Semicolon but got Identifier" +- Nexpect Semicolon but got RBracket +- "];" +- "[expect Semicolon but got Identifier" +- Nexpect Semicolon but got Sub +- "-1expect Semicolon but got RBracket" +- "];" +- for(var i = 0; i < N-1; iexpect RParen but got UnitInc++)expect Semicolon but got LCurly +- "{\n comp[i] = Multiplier2(expect Identifier but got RParen);\n }" diff --git a/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__block.circom.snap b/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__block.circom.snap new file mode 100644 index 0000000..beaf281 --- /dev/null +++ b/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__block.circom.snap @@ -0,0 +1,670 @@ +--- +source: crates/syntax/src/syntax.rs +expression: "crate::view_syntax::view_ast(&syntax)" +--- + Block 0..1021 +| LCurly 0..1 +| | LCurly 0..1 "{" +| EndLine 1..2 +| | EndLine 1..2 +| | | EndLine 1..2 "\n" +| WhiteSpace 2..3 +| | WhiteSpace 2..3 +| | | WhiteSpace 2..3 " " +| CommentLine 3..28 +| | CommentLine 3..28 +| | | CommentLine 3..28 "//Declaration of signals." +| EndLine 28..29 +| | EndLine 28..29 +| | | EndLine 28..29 "\n" +| WhiteSpace 29..41 +| | WhiteSpace 29..41 +| | | WhiteSpace 29..41 " " +| StatementList 41..1020 +| | InputSignalDecl 41..56 +| | | SignalHeader 41..54 +| | | | SignalKw 41..47 +| | | | | SignalKw 41..47 "signal" +| | | | WhiteSpace 47..48 +| | | | | WhiteSpace 47..48 +| | | | | | WhiteSpace 47..48 " " +| | | | InputKw 48..53 +| | | | | InputKw 48..53 "input" +| | | | WhiteSpace 53..54 +| | | | | WhiteSpace 53..54 +| | | | | | WhiteSpace 53..54 " " +| | | Identifier 54..56 +| | | | Identifier 54..56 "in" +| | Error 56..89 +| | | Error 56..89 +| | | | Error 56..89 "expect Semicolon but got LBracket" +| | Statement 89..125 +| | | Error 89..90 +| | | | Expression 89..90 +| | | | | Error 89..90 +| | | | | | LBracket 89..90 +| | | | | | | LBracket 89..90 "[" +| | | Error 90..125 +| | | | Error 90..125 +| | | | | Error 90..125 "expect Semicolon but got Identifier" +| | Statement 125..159 +| | | Error 125..126 +| | | | Expression 125..126 +| | | | | ComponentIdentifier 125..126 +| | | | | | Identifier 125..126 +| | | | | | | Identifier 125..126 "N" +| | | Error 126..159 +| | | | Error 126..159 +| | | | | Error 126..159 "expect Semicolon but got RBracket" +| | Statement 159..161 +| | | Error 159..160 +| | | | Expression 159..160 +| | | | | Error 159..160 +| | | | | | RBracket 159..160 +| | | | | | | RBracket 159..160 "]" +| | | Semicolon 160..161 +| | | | Semicolon 160..161 ";" +| | EndLine 161..162 +| | | EndLine 161..162 +| | | | EndLine 161..162 "\n" +| | WhiteSpace 162..174 +| | | WhiteSpace 162..174 +| | | | WhiteSpace 162..174 " " +| | OutputSignalDecl 174..191 +| | | SignalHeader 174..188 +| | | | SignalKw 174..180 +| | | | | SignalKw 174..180 "signal" +| | | | WhiteSpace 180..181 +| | | | | WhiteSpace 180..181 +| | | | | | WhiteSpace 180..181 " " +| | | | OutputKw 181..187 +| | | | | OutputKw 181..187 "output" +| | | | WhiteSpace 187..188 +| | | | | WhiteSpace 187..188 +| | | | | | WhiteSpace 187..188 " " +| | | Identifier 188..191 +| | | | Identifier 188..191 "out" +| | Semicolon 191..192 +| | | Semicolon 191..192 ";" +| | EndLine 192..193 +| | | EndLine 192..193 +| | | | EndLine 192..193 "\n" +| | WhiteSpace 193..205 +| | | WhiteSpace 193..205 +| | | | WhiteSpace 193..205 " " +| | ComponentDecl 205..343 +| | | ComponentKw 205..214 +| | | | ComponentKw 205..214 "component" +| | | WhiteSpace 214..215 +| | | | WhiteSpace 214..215 +| | | | | WhiteSpace 214..215 " " +| | | ComponentIdentifier 215..219 +| | | | Identifier 215..219 +| | | | | Identifier 215..219 "comp" +| | | Error 219..249 +| | | | Error 219..249 +| | | | | Error 219..249 "expect Assign but got LBracket" +| | | TemplateName 249..283 +| | | | Error 249..283 +| | | | | Error 249..283 +| | | | | | Error 249..283 "expect Identifier but got LBracket" +| | | Error 283..313 +| | | | Error 283..313 +| | | | | Error 283..313 "expect LParen but got LBracket" +| | | Error 313..343 +| | | | Error 313..343 +| | | | | Error 313..343 "expect RParen but got LBracket" +| | Error 343..376 +| | | Error 343..376 +| | | | Error 343..376 "expect Semicolon but got LBracket" +| | Statement 376..412 +| | | Error 376..377 +| | | | Expression 376..377 +| | | | | Error 376..377 +| | | | | | LBracket 376..377 +| | | | | | | LBracket 376..377 "[" +| | | Error 377..412 +| | | | Error 377..412 +| | | | | Error 377..412 "expect Semicolon but got Identifier" +| | Statement 412..441 +| | | Error 412..413 +| | | | Expression 412..413 +| | | | | ComponentIdentifier 412..413 +| | | | | | Identifier 412..413 +| | | | | | | Identifier 412..413 "N" +| | | Error 413..441 +| | | | Error 413..441 +| | | | | Error 413..441 "expect Semicolon but got Sub" +| | Statement 441..476 +| | | Error 441..443 +| | | | Expression 441..443 +| | | | | Sub 441..443 +| | | | | | Sub 441..442 +| | | | | | | Sub 441..442 "-" +| | | | | | Number 442..443 +| | | | | | | Number 442..443 +| | | | | | | | Number 442..443 "1" +| | | Error 443..476 +| | | | Error 443..476 +| | | | | Error 443..476 "expect Semicolon but got RBracket" +| | Statement 476..478 +| | | Error 476..477 +| | | | Expression 476..477 +| | | | | Error 476..477 +| | | | | | RBracket 476..477 +| | | | | | | RBracket 476..477 "]" +| | | Semicolon 477..478 +| | | | Semicolon 477..478 ";" +| | EndLine 478..479 +| | | EndLine 478..479 +| | | | EndLine 478..479 "\n" +| | EndLine 479..480 +| | | EndLine 479..480 +| | | | EndLine 479..480 "\n" +| | WhiteSpace 480..492 +| | | WhiteSpace 480..492 +| | | | WhiteSpace 480..492 " " +| | CommentLine 492..505 +| | | CommentLine 492..505 +| | | | CommentLine 492..505 "//Statements." +| | EndLine 505..506 +| | | EndLine 505..506 +| | | | EndLine 505..506 "\n" +| | WhiteSpace 506..518 +| | | WhiteSpace 506..518 +| | | | WhiteSpace 506..518 " " +| | Statement 518..606 +| | | ForLoop 518..606 +| | | | ForKw 518..521 +| | | | | ForKw 518..521 "for" +| | | | LParen 521..522 +| | | | | LParen 521..522 "(" +| | | | VarDecl 522..531 +| | | | | VarKw 522..525 +| | | | | | VarKw 522..525 "var" +| | | | | WhiteSpace 525..526 +| | | | | | WhiteSpace 525..526 +| | | | | | | WhiteSpace 525..526 " " +| | | | | Identifier 526..527 +| | | | | | Identifier 526..527 "i" +| | | | | WhiteSpace 527..528 +| | | | | | WhiteSpace 527..528 +| | | | | | | WhiteSpace 527..528 " " +| | | | | Assign 528..529 +| | | | | | Assign 528..529 "=" +| | | | | WhiteSpace 529..530 +| | | | | | WhiteSpace 529..530 +| | | | | | | WhiteSpace 529..530 " " +| | | | | Expression 530..531 +| | | | | | Number 530..531 +| | | | | | | Number 530..531 +| | | | | | | | Number 530..531 "0" +| | | | Semicolon 531..532 +| | | | | Semicolon 531..532 ";" +| | | | WhiteSpace 532..533 +| | | | | WhiteSpace 532..533 +| | | | | | WhiteSpace 532..533 " " +| | | | Expression 533..540 +| | | | | LessThan 533..540 +| | | | | | Identifier 533..534 +| | | | | | | Identifier 533..534 +| | | | | | | | Identifier 533..534 "i" +| | | | | | WhiteSpace 534..535 +| | | | | | | WhiteSpace 534..535 +| | | | | | | | WhiteSpace 534..535 " " +| | | | | | LessThan 535..536 +| | | | | | | LessThan 535..536 "<" +| | | | | | WhiteSpace 536..537 +| | | | | | | WhiteSpace 536..537 +| | | | | | | | WhiteSpace 536..537 " " +| | | | | | Sub 537..540 +| | | | | | | Identifier 537..538 +| | | | | | | | Identifier 537..538 +| | | | | | | | | Identifier 537..538 "N" +| | | | | | | Sub 538..539 +| | | | | | | | Sub 538..539 "-" +| | | | | | | Number 539..540 +| | | | | | | | Number 539..540 +| | | | | | | | | Number 539..540 "1" +| | | | Semicolon 540..541 +| | | | | Semicolon 540..541 ";" +| | | | WhiteSpace 541..542 +| | | | | WhiteSpace 541..542 +| | | | | | WhiteSpace 541..542 " " +| | | | Error 542..543 +| | | | | Expression 542..543 +| | | | | | ComponentIdentifier 542..543 +| | | | | | | Identifier 542..543 +| | | | | | | | Identifier 542..543 "i" +| | | | Error 543..572 +| | | | | Error 543..572 +| | | | | | Error 543..572 "expect RParen but got UnitInc" +| | | | Error 572..575 +| | | | | Expression 572..575 +| | | | | | UnitInc 572..575 +| | | | | | | UnitInc 572..574 +| | | | | | | | UnitInc 572..574 "++" +| | | | | | | Error 574..575 +| | | | | | | | RParen 574..575 +| | | | | | | | | RParen 574..575 ")" +| | | | Error 575..606 +| | | | | Error 575..606 +| | | | | | Error 575..606 "expect Semicolon but got LCurly" +| | Statement 606..694 +| | | Block 606..694 +| | | | LCurly 606..607 +| | | | | LCurly 606..607 "{" +| | | | EndLine 607..608 +| | | | | EndLine 607..608 +| | | | | | EndLine 607..608 "\n" +| | | | WhiteSpace 608..624 +| | | | | WhiteSpace 608..624 +| | | | | | WhiteSpace 608..624 " " +| | | | StatementList 624..693 +| | | | | Statement 624..680 +| | | | | | AssignStatement 624..679 +| | | | | | | Expression 624..632 +| | | | | | | | ComponentIdentifier 624..628 +| | | | | | | | | Identifier 624..628 +| | | | | | | | | | Identifier 624..628 "comp" +| | | | | | | | LBracket 628..629 +| | | | | | | | | LBracket 628..629 "[" +| | | | | | | | Expression 629..630 +| | | | | | | | | Identifier 629..630 +| | | | | | | | | | Identifier 629..630 +| | | | | | | | | | | Identifier 629..630 "i" +| | | | | | | | RBracket 630..631 +| | | | | | | | | RBracket 630..631 "]" +| | | | | | | | WhiteSpace 631..632 +| | | | | | | | | WhiteSpace 631..632 +| | | | | | | | | | WhiteSpace 631..632 " " +| | | | | | | Assign 632..633 +| | | | | | | | Assign 632..633 "=" +| | | | | | | WhiteSpace 633..634 +| | | | | | | | WhiteSpace 633..634 +| | | | | | | | | WhiteSpace 633..634 " " +| | | | | | | Expression 634..679 +| | | | | | | | Call 634..679 +| | | | | | | | | Identifier 634..645 +| | | | | | | | | | Identifier 634..645 +| | | | | | | | | | | Identifier 634..645 "Multiplier2" +| | | | | | | | | Tuple 645..679 +| | | | | | | | | | LParen 645..646 +| | | | | | | | | | | LParen 645..646 "(" +| | | | | | | | | | Error 646..678 +| | | | | | | | | | | Error 646..678 +| | | | | | | | | | | | Error 646..678 "expect Identifier but got RParen" +| | | | | | | | | | RParen 678..679 +| | | | | | | | | | | RParen 678..679 ")" +| | | | | | Semicolon 679..680 +| | | | | | | Semicolon 679..680 ";" +| | | | | EndLine 680..681 +| | | | | | EndLine 680..681 +| | | | | | | EndLine 680..681 "\n" +| | | | | WhiteSpace 681..693 +| | | | | | WhiteSpace 681..693 +| | | | | | | WhiteSpace 681..693 " " +| | | | RCurly 693..694 +| | | | | RCurly 693..694 "}" +| | EndLine 694..695 +| | | EndLine 694..695 +| | | | EndLine 694..695 "\n" +| | WhiteSpace 695..707 +| | | WhiteSpace 695..707 +| | | | WhiteSpace 695..707 " " +| | Statement 707..729 +| | | AssignStatement 707..728 +| | | | ComponentCall 707..718 +| | | | | ComponentIdentifier 707..711 +| | | | | | Identifier 707..711 +| | | | | | | Identifier 707..711 "comp" +| | | | | LBracket 711..712 +| | | | | | LBracket 711..712 "[" +| | | | | Expression 712..713 +| | | | | | Number 712..713 +| | | | | | | Number 712..713 +| | | | | | | | Number 712..713 "0" +| | | | | RBracket 713..714 +| | | | | | RBracket 713..714 "]" +| | | | | Dot 714..715 +| | | | | | Dot 714..715 "." +| | | | | Identifier 715..718 +| | | | | | Identifier 715..718 "in1" +| | | | WhiteSpace 718..719 +| | | | | WhiteSpace 718..719 +| | | | | | WhiteSpace 718..719 " " +| | | | RAssignConstraintSignal 719..722 +| | | | | RAssignConstraintSignal 719..722 "<==" +| | | | WhiteSpace 722..723 +| | | | | WhiteSpace 722..723 +| | | | | | WhiteSpace 722..723 " " +| | | | Expression 723..728 +| | | | | ArrayQuery 723..728 +| | | | | | Identifier 723..725 +| | | | | | | Identifier 723..725 +| | | | | | | | Identifier 723..725 "in" +| | | | | | LBracket 725..726 +| | | | | | | LBracket 725..726 "[" +| | | | | | Number 726..727 +| | | | | | | Number 726..727 +| | | | | | | | Number 726..727 "0" +| | | | | | RBracket 727..728 +| | | | | | | RBracket 727..728 "]" +| | | Semicolon 728..729 +| | | | Semicolon 728..729 ";" +| | EndLine 729..730 +| | | EndLine 729..730 +| | | | EndLine 729..730 "\n" +| | WhiteSpace 730..742 +| | | WhiteSpace 730..742 +| | | | WhiteSpace 730..742 " " +| | Statement 742..764 +| | | AssignStatement 742..763 +| | | | ComponentCall 742..753 +| | | | | ComponentIdentifier 742..746 +| | | | | | Identifier 742..746 +| | | | | | | Identifier 742..746 "comp" +| | | | | LBracket 746..747 +| | | | | | LBracket 746..747 "[" +| | | | | Expression 747..748 +| | | | | | Number 747..748 +| | | | | | | Number 747..748 +| | | | | | | | Number 747..748 "0" +| | | | | RBracket 748..749 +| | | | | | RBracket 748..749 "]" +| | | | | Dot 749..750 +| | | | | | Dot 749..750 "." +| | | | | Identifier 750..753 +| | | | | | Identifier 750..753 "in2" +| | | | WhiteSpace 753..754 +| | | | | WhiteSpace 753..754 +| | | | | | WhiteSpace 753..754 " " +| | | | RAssignConstraintSignal 754..757 +| | | | | RAssignConstraintSignal 754..757 "<==" +| | | | WhiteSpace 757..758 +| | | | | WhiteSpace 757..758 +| | | | | | WhiteSpace 757..758 " " +| | | | Expression 758..763 +| | | | | ArrayQuery 758..763 +| | | | | | Identifier 758..760 +| | | | | | | Identifier 758..760 +| | | | | | | | Identifier 758..760 "in" +| | | | | | LBracket 760..761 +| | | | | | | LBracket 760..761 "[" +| | | | | | Number 761..762 +| | | | | | | Number 761..762 +| | | | | | | | Number 761..762 "1" +| | | | | | RBracket 762..763 +| | | | | | | RBracket 762..763 "]" +| | | Semicolon 763..764 +| | | | Semicolon 763..764 ";" +| | EndLine 764..765 +| | | EndLine 764..765 +| | | | EndLine 764..765 "\n" +| | WhiteSpace 765..777 +| | | WhiteSpace 765..777 +| | | | WhiteSpace 765..777 " " +| | Statement 777..865 +| | | ForLoop 777..865 +| | | | ForKw 777..780 +| | | | | ForKw 777..780 "for" +| | | | LParen 780..781 +| | | | | LParen 780..781 "(" +| | | | VarDecl 781..790 +| | | | | VarKw 781..784 +| | | | | | VarKw 781..784 "var" +| | | | | WhiteSpace 784..785 +| | | | | | WhiteSpace 784..785 +| | | | | | | WhiteSpace 784..785 " " +| | | | | Identifier 785..786 +| | | | | | Identifier 785..786 "i" +| | | | | WhiteSpace 786..787 +| | | | | | WhiteSpace 786..787 +| | | | | | | WhiteSpace 786..787 " " +| | | | | Assign 787..788 +| | | | | | Assign 787..788 "=" +| | | | | WhiteSpace 788..789 +| | | | | | WhiteSpace 788..789 +| | | | | | | WhiteSpace 788..789 " " +| | | | | Expression 789..790 +| | | | | | Number 789..790 +| | | | | | | Number 789..790 +| | | | | | | | Number 789..790 "0" +| | | | Semicolon 790..791 +| | | | | Semicolon 790..791 ";" +| | | | WhiteSpace 791..792 +| | | | | WhiteSpace 791..792 +| | | | | | WhiteSpace 791..792 " " +| | | | Expression 792..799 +| | | | | LessThan 792..799 +| | | | | | Identifier 792..793 +| | | | | | | Identifier 792..793 +| | | | | | | | Identifier 792..793 "i" +| | | | | | WhiteSpace 793..794 +| | | | | | | WhiteSpace 793..794 +| | | | | | | | WhiteSpace 793..794 " " +| | | | | | LessThan 794..795 +| | | | | | | LessThan 794..795 "<" +| | | | | | WhiteSpace 795..796 +| | | | | | | WhiteSpace 795..796 +| | | | | | | | WhiteSpace 795..796 " " +| | | | | | Sub 796..799 +| | | | | | | Identifier 796..797 +| | | | | | | | Identifier 796..797 +| | | | | | | | | Identifier 796..797 "N" +| | | | | | | Sub 797..798 +| | | | | | | | Sub 797..798 "-" +| | | | | | | Number 798..799 +| | | | | | | | Number 798..799 +| | | | | | | | | Number 798..799 "2" +| | | | Semicolon 799..800 +| | | | | Semicolon 799..800 ";" +| | | | WhiteSpace 800..801 +| | | | | WhiteSpace 800..801 +| | | | | | WhiteSpace 800..801 " " +| | | | Error 801..802 +| | | | | Expression 801..802 +| | | | | | ComponentIdentifier 801..802 +| | | | | | | Identifier 801..802 +| | | | | | | | Identifier 801..802 "i" +| | | | Error 802..831 +| | | | | Error 802..831 +| | | | | | Error 802..831 "expect RParen but got UnitInc" +| | | | Error 831..834 +| | | | | Expression 831..834 +| | | | | | UnitInc 831..834 +| | | | | | | UnitInc 831..833 +| | | | | | | | UnitInc 831..833 "++" +| | | | | | | Error 833..834 +| | | | | | | | RParen 833..834 +| | | | | | | | | RParen 833..834 ")" +| | | | Error 834..865 +| | | | | Error 834..865 +| | | | | | Error 834..865 "expect Semicolon but got LCurly" +| | Statement 865..971 +| | | Block 865..971 +| | | | LCurly 865..866 +| | | | | LCurly 865..866 "{" +| | | | EndLine 866..867 +| | | | | EndLine 866..867 +| | | | | | EndLine 866..867 "\n" +| | | | WhiteSpace 867..883 +| | | | | WhiteSpace 867..883 +| | | | | | WhiteSpace 867..883 " " +| | | | StatementList 883..970 +| | | | | Statement 883..913 +| | | | | | AssignStatement 883..912 +| | | | | | | ComponentCall 883..896 +| | | | | | | | ComponentIdentifier 883..887 +| | | | | | | | | Identifier 883..887 +| | | | | | | | | | Identifier 883..887 "comp" +| | | | | | | | LBracket 887..888 +| | | | | | | | | LBracket 887..888 "[" +| | | | | | | | Expression 888..891 +| | | | | | | | | Add 888..891 +| | | | | | | | | | Identifier 888..889 +| | | | | | | | | | | Identifier 888..889 +| | | | | | | | | | | | Identifier 888..889 "i" +| | | | | | | | | | Add 889..890 +| | | | | | | | | | | Add 889..890 "+" +| | | | | | | | | | Number 890..891 +| | | | | | | | | | | Number 890..891 +| | | | | | | | | | | | Number 890..891 "1" +| | | | | | | | RBracket 891..892 +| | | | | | | | | RBracket 891..892 "]" +| | | | | | | | Dot 892..893 +| | | | | | | | | Dot 892..893 "." +| | | | | | | | Identifier 893..896 +| | | | | | | | | Identifier 893..896 "in1" +| | | | | | | WhiteSpace 896..897 +| | | | | | | | WhiteSpace 896..897 +| | | | | | | | | WhiteSpace 896..897 " " +| | | | | | | RAssignConstraintSignal 897..900 +| | | | | | | | RAssignConstraintSignal 897..900 "<==" +| | | | | | | WhiteSpace 900..901 +| | | | | | | | WhiteSpace 900..901 +| | | | | | | | | WhiteSpace 900..901 " " +| | | | | | | Expression 901..912 +| | | | | | | | ComponentCall 901..912 +| | | | | | | | | ArrayQuery 901..908 +| | | | | | | | | | Identifier 901..905 +| | | | | | | | | | | Identifier 901..905 +| | | | | | | | | | | | Identifier 901..905 "comp" +| | | | | | | | | | LBracket 905..906 +| | | | | | | | | | | LBracket 905..906 "[" +| | | | | | | | | | Identifier 906..907 +| | | | | | | | | | | Identifier 906..907 +| | | | | | | | | | | | Identifier 906..907 "i" +| | | | | | | | | | RBracket 907..908 +| | | | | | | | | | | RBracket 907..908 "]" +| | | | | | | | | Dot 908..909 +| | | | | | | | | | Dot 908..909 "." +| | | | | | | | | Identifier 909..912 +| | | | | | | | | | Identifier 909..912 "out" +| | | | | | Semicolon 912..913 +| | | | | | | Semicolon 912..913 ";" +| | | | | EndLine 913..914 +| | | | | | EndLine 913..914 +| | | | | | | EndLine 913..914 "\n" +| | | | | WhiteSpace 914..930 +| | | | | | WhiteSpace 914..930 +| | | | | | | WhiteSpace 914..930 " " +| | | | | Statement 930..956 +| | | | | | AssignStatement 930..955 +| | | | | | | ComponentCall 930..943 +| | | | | | | | ComponentIdentifier 930..934 +| | | | | | | | | Identifier 930..934 +| | | | | | | | | | Identifier 930..934 "comp" +| | | | | | | | LBracket 934..935 +| | | | | | | | | LBracket 934..935 "[" +| | | | | | | | Expression 935..938 +| | | | | | | | | Add 935..938 +| | | | | | | | | | Identifier 935..936 +| | | | | | | | | | | Identifier 935..936 +| | | | | | | | | | | | Identifier 935..936 "i" +| | | | | | | | | | Add 936..937 +| | | | | | | | | | | Add 936..937 "+" +| | | | | | | | | | Number 937..938 +| | | | | | | | | | | Number 937..938 +| | | | | | | | | | | | Number 937..938 "1" +| | | | | | | | RBracket 938..939 +| | | | | | | | | RBracket 938..939 "]" +| | | | | | | | Dot 939..940 +| | | | | | | | | Dot 939..940 "." +| | | | | | | | Identifier 940..943 +| | | | | | | | | Identifier 940..943 "in2" +| | | | | | | WhiteSpace 943..944 +| | | | | | | | WhiteSpace 943..944 +| | | | | | | | | WhiteSpace 943..944 " " +| | | | | | | RAssignConstraintSignal 944..947 +| | | | | | | | RAssignConstraintSignal 944..947 "<==" +| | | | | | | WhiteSpace 947..948 +| | | | | | | | WhiteSpace 947..948 +| | | | | | | | | WhiteSpace 947..948 " " +| | | | | | | Expression 948..955 +| | | | | | | | ArrayQuery 948..955 +| | | | | | | | | Identifier 948..950 +| | | | | | | | | | Identifier 948..950 +| | | | | | | | | | | Identifier 948..950 "in" +| | | | | | | | | LBracket 950..951 +| | | | | | | | | | LBracket 950..951 "[" +| | | | | | | | | Add 951..954 +| | | | | | | | | | Identifier 951..952 +| | | | | | | | | | | Identifier 951..952 +| | | | | | | | | | | | Identifier 951..952 "i" +| | | | | | | | | | Add 952..953 +| | | | | | | | | | | Add 952..953 "+" +| | | | | | | | | | Number 953..954 +| | | | | | | | | | | Number 953..954 +| | | | | | | | | | | | Number 953..954 "2" +| | | | | | | | | RBracket 954..955 +| | | | | | | | | | RBracket 954..955 "]" +| | | | | | Semicolon 955..956 +| | | | | | | Semicolon 955..956 ";" +| | | | | EndLine 956..957 +| | | | | | EndLine 956..957 +| | | | | | | EndLine 956..957 "\n" +| | | | | EndLine 957..958 +| | | | | | EndLine 957..958 +| | | | | | | EndLine 957..958 "\n" +| | | | | WhiteSpace 958..970 +| | | | | | WhiteSpace 958..970 +| | | | | | | WhiteSpace 958..970 " " +| | | | RCurly 970..971 +| | | | | RCurly 970..971 "}" +| | EndLine 971..972 +| | | EndLine 971..972 +| | | | EndLine 971..972 "\n" +| | WhiteSpace 972..984 +| | | WhiteSpace 972..984 +| | | | WhiteSpace 972..984 " " +| | Statement 984..1006 +| | | AssignStatement 984..1005 +| | | | Expression 984..988 +| | | | | ComponentIdentifier 984..987 +| | | | | | Identifier 984..987 +| | | | | | | Identifier 984..987 "out" +| | | | | WhiteSpace 987..988 +| | | | | | WhiteSpace 987..988 +| | | | | | | WhiteSpace 987..988 " " +| | | | RAssignConstraintSignal 988..991 +| | | | | RAssignConstraintSignal 988..991 "<==" +| | | | WhiteSpace 991..992 +| | | | | WhiteSpace 991..992 +| | | | | | WhiteSpace 991..992 " " +| | | | Expression 992..1005 +| | | | | ComponentCall 992..1005 +| | | | | | ArrayQuery 992..1001 +| | | | | | | Identifier 992..996 +| | | | | | | | Identifier 992..996 +| | | | | | | | | Identifier 992..996 "comp" +| | | | | | | LBracket 996..997 +| | | | | | | | LBracket 996..997 "[" +| | | | | | | Sub 997..1000 +| | | | | | | | Identifier 997..998 +| | | | | | | | | Identifier 997..998 +| | | | | | | | | | Identifier 997..998 "N" +| | | | | | | | Sub 998..999 +| | | | | | | | | Sub 998..999 "-" +| | | | | | | | Number 999..1000 +| | | | | | | | | Number 999..1000 +| | | | | | | | | | Number 999..1000 "2" +| | | | | | | RBracket 1000..1001 +| | | | | | | | RBracket 1000..1001 "]" +| | | | | | Dot 1001..1002 +| | | | | | | Dot 1001..1002 "." +| | | | | | Identifier 1002..1005 +| | | | | | | Identifier 1002..1005 "out" +| | | Semicolon 1005..1006 +| | | | Semicolon 1005..1006 ";" +| | WhiteSpace 1006..1007 +| | | WhiteSpace 1006..1007 +| | | | WhiteSpace 1006..1007 " " +| | EndLine 1007..1008 +| | | EndLine 1007..1008 +| | | | EndLine 1007..1008 "\n" +| | WhiteSpace 1008..1020 +| | | WhiteSpace 1008..1020 +| | | | WhiteSpace 1008..1020 " " +| RCurly 1020..1021 +| | RCurly 1020..1021 "}" diff --git a/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__block_comment.circom.snap b/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__block_comment.circom.snap new file mode 100644 index 0000000..2932d5d --- /dev/null +++ b/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__block_comment.circom.snap @@ -0,0 +1,29 @@ +--- +source: crates/syntax/src/syntax.rs +expression: "crate::view_syntax::view_ast(&syntax)" +--- + CircomProgram 0..42 +| EndLine 0..1 +| | EndLine 0..1 +| | | EndLine 0..1 "\n" +| BlockComment 1..21 +| | BlockComment 1..21 +| | | BlockComment 1..21 "/*\ncomment\nblocks\n*/" +| EndLine 21..22 +| | EndLine 21..22 +| | | EndLine 21..22 "\n" +| Pragma 22..42 +| | Pragma 22..28 +| | | Pragma 22..28 "pragma" +| | WhiteSpace 28..29 +| | | WhiteSpace 28..29 +| | | | WhiteSpace 28..29 " " +| | Circom 29..35 +| | | Circom 29..35 "circom" +| | WhiteSpace 35..36 +| | | WhiteSpace 35..36 +| | | | WhiteSpace 35..36 " " +| | Version 36..41 +| | | Version 36..41 "2.0.0" +| | Semicolon 41..42 +| | | Semicolon 41..42 ";" diff --git a/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__full_circom_program.circom.snap b/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__full_circom_program.circom.snap new file mode 100644 index 0000000..2886dde --- /dev/null +++ b/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__full_circom_program.circom.snap @@ -0,0 +1,1417 @@ +--- +source: crates/syntax/src/syntax.rs +expression: "crate::view_syntax::view_ast(&syntax)" +--- + CircomProgram 0..3637 +| BlockComment 0..747 +| | BlockComment 0..747 +| | | BlockComment 0..747 "/*\n Copyright 2018 0KIMS association.\n\n This file is part of circom (Zero Knowledge Circuit Compiler).\n\n circom is a free software: you can redistribute it and/or modify it\n under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n circom is distributed in the hope that it will be useful, but WITHOUT\n ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public\n License for more details.\n\n You should have received a copy of the GNU General Public License\n along with circom. If not, see .\n*/" +| EndLine 747..748 +| | EndLine 747..748 +| | | EndLine 747..748 "\n" +| BlockComment 748..1434 +| | BlockComment 748..1434 +| | | BlockComment 748..1434 "/*\n\nBinary Sum\n==========\n\nThis component creates a binary sum componet of ops operands and n bits each operand.\n\ne is Number of carries: Depends on the number of operands in the input.\n\nMain Constraint:\n in[0][0] * 2^0 + in[0][1] * 2^1 + ..... + in[0][n-1] * 2^(n-1) +\n + in[1][0] * 2^0 + in[1][1] * 2^1 + ..... + in[1][n-1] * 2^(n-1) +\n + ..\n + in[ops-1][0] * 2^0 + in[ops-1][1] * 2^1 + ..... + in[ops-1][n-1] * 2^(n-1) +\n ===\n out[0] * 2^0 + out[1] * 2^1 + + out[n+e-1] *2(n+e-1)\n\nTo waranty binary outputs:\n\n out[0] * (out[0] - 1) === 0\n out[1] * (out[0] - 1) === 0\n .\n .\n .\n out[n+e-1] * (out[n+e-1] - 1) == 0\n\n */" +| EndLine 1434..1435 +| | EndLine 1434..1435 +| | | EndLine 1434..1435 "\n" +| EndLine 1435..1436 +| | EndLine 1435..1436 +| | | EndLine 1435..1436 "\n" +| EndLine 1436..1437 +| | EndLine 1436..1437 +| | | EndLine 1436..1437 "\n" +| BlockComment 1437..1531 +| | BlockComment 1437..1531 +| | | BlockComment 1437..1531 "/*\n This function calculates the number of extra bits in the output to do the full sum.\n */" +| EndLine 1531..1532 +| | EndLine 1531..1532 +| | | EndLine 1531..1532 "\n" +| WhiteSpace 1532..1533 +| | WhiteSpace 1532..1533 +| | | WhiteSpace 1532..1533 " " +| Pragma 1533..1553 +| | Pragma 1533..1539 +| | | Pragma 1533..1539 "pragma" +| | WhiteSpace 1539..1540 +| | | WhiteSpace 1539..1540 +| | | | WhiteSpace 1539..1540 " " +| | Circom 1540..1546 +| | | Circom 1540..1546 "circom" +| | WhiteSpace 1546..1547 +| | | WhiteSpace 1546..1547 +| | | | WhiteSpace 1546..1547 " " +| | Version 1547..1552 +| | | Version 1547..1552 "2.0.0" +| | Semicolon 1552..1553 +| | | Semicolon 1552..1553 ";" +| EndLine 1553..1554 +| | EndLine 1553..1554 +| | | EndLine 1553..1554 "\n" +| EndLine 1554..1555 +| | EndLine 1554..1555 +| | | EndLine 1554..1555 "\n" +| FunctionDef 1555..1807 +| | FunctionKw 1555..1563 +| | | FunctionKw 1555..1563 "function" +| | WhiteSpace 1563..1564 +| | | WhiteSpace 1563..1564 +| | | | WhiteSpace 1563..1564 " " +| | FunctionName 1564..1569 +| | | Identifier 1564..1569 +| | | | Identifier 1564..1569 "nbits" +| | LParen 1569..1570 +| | | LParen 1569..1570 "(" +| | ParameterList 1570..1571 +| | | Identifier 1570..1571 +| | | | Identifier 1570..1571 "a" +| | RParen 1571..1572 +| | | RParen 1571..1572 ")" +| | WhiteSpace 1572..1573 +| | | WhiteSpace 1572..1573 +| | | | WhiteSpace 1572..1573 " " +| | Block 1573..1807 +| | | LCurly 1573..1574 +| | | | LCurly 1573..1574 "{" +| | | EndLine 1574..1575 +| | | | EndLine 1574..1575 +| | | | | EndLine 1574..1575 "\n" +| | | WhiteSpace 1575..1579 +| | | | WhiteSpace 1575..1579 +| | | | | WhiteSpace 1575..1579 " " +| | | StatementList 1579..1806 +| | | | VarDecl 1579..1588 +| | | | | VarKw 1579..1582 +| | | | | | VarKw 1579..1582 "var" +| | | | | WhiteSpace 1582..1583 +| | | | | | WhiteSpace 1582..1583 +| | | | | | | WhiteSpace 1582..1583 " " +| | | | | Identifier 1583..1584 +| | | | | | Identifier 1583..1584 "n" +| | | | | WhiteSpace 1584..1585 +| | | | | | WhiteSpace 1584..1585 +| | | | | | | WhiteSpace 1584..1585 " " +| | | | | Assign 1585..1586 +| | | | | | Assign 1585..1586 "=" +| | | | | WhiteSpace 1586..1587 +| | | | | | WhiteSpace 1586..1587 +| | | | | | | WhiteSpace 1586..1587 " " +| | | | | Expression 1587..1588 +| | | | | | Number 1587..1588 +| | | | | | | Number 1587..1588 +| | | | | | | | Number 1587..1588 "1" +| | | | Semicolon 1588..1589 +| | | | | Semicolon 1588..1589 ";" +| | | | EndLine 1589..1590 +| | | | | EndLine 1589..1590 +| | | | | | EndLine 1589..1590 "\n" +| | | | WhiteSpace 1590..1594 +| | | | | WhiteSpace 1590..1594 +| | | | | | WhiteSpace 1590..1594 " " +| | | | VarDecl 1594..1603 +| | | | | VarKw 1594..1597 +| | | | | | VarKw 1594..1597 "var" +| | | | | WhiteSpace 1597..1598 +| | | | | | WhiteSpace 1597..1598 +| | | | | | | WhiteSpace 1597..1598 " " +| | | | | Identifier 1598..1599 +| | | | | | Identifier 1598..1599 "r" +| | | | | WhiteSpace 1599..1600 +| | | | | | WhiteSpace 1599..1600 +| | | | | | | WhiteSpace 1599..1600 " " +| | | | | Assign 1600..1601 +| | | | | | Assign 1600..1601 "=" +| | | | | WhiteSpace 1601..1602 +| | | | | | WhiteSpace 1601..1602 +| | | | | | | WhiteSpace 1601..1602 " " +| | | | | Expression 1602..1603 +| | | | | | Number 1602..1603 +| | | | | | | Number 1602..1603 +| | | | | | | | Number 1602..1603 "0" +| | | | Semicolon 1603..1604 +| | | | | Semicolon 1603..1604 ";" +| | | | EndLine 1604..1605 +| | | | | EndLine 1604..1605 +| | | | | | EndLine 1604..1605 "\n" +| | | | WhiteSpace 1605..1609 +| | | | | WhiteSpace 1605..1609 +| | | | | | WhiteSpace 1605..1609 " " +| | | | Statement 1609..1791 +| | | | | WhileKw 1609..1614 +| | | | | | WhileKw 1609..1614 "while" +| | | | | WhiteSpace 1614..1615 +| | | | | | WhiteSpace 1614..1615 +| | | | | | | WhiteSpace 1614..1615 " " +| | | | | LParen 1615..1616 +| | | | | | LParen 1615..1616 "(" +| | | | | Expression 1616..1621 +| | | | | | LessThan 1616..1621 +| | | | | | | Sub 1616..1619 +| | | | | | | | Identifier 1616..1617 +| | | | | | | | | Identifier 1616..1617 +| | | | | | | | | | Identifier 1616..1617 "n" +| | | | | | | | Sub 1617..1618 +| | | | | | | | | Sub 1617..1618 "-" +| | | | | | | | Number 1618..1619 +| | | | | | | | | Number 1618..1619 +| | | | | | | | | | Number 1618..1619 "1" +| | | | | | | LessThan 1619..1620 +| | | | | | | | LessThan 1619..1620 "<" +| | | | | | | Identifier 1620..1621 +| | | | | | | | Identifier 1620..1621 +| | | | | | | | | Identifier 1620..1621 "a" +| | | | | RParen 1621..1622 +| | | | | | RParen 1621..1622 ")" +| | | | | WhiteSpace 1622..1623 +| | | | | | WhiteSpace 1622..1623 +| | | | | | | WhiteSpace 1622..1623 " " +| | | | | Statement 1623..1791 +| | | | | | Block 1623..1791 +| | | | | | | LCurly 1623..1624 +| | | | | | | | LCurly 1623..1624 "{" +| | | | | | | EndLine 1624..1625 +| | | | | | | | EndLine 1624..1625 +| | | | | | | | | EndLine 1624..1625 "\n" +| | | | | | | WhiteSpace 1625..1633 +| | | | | | | | WhiteSpace 1625..1633 +| | | | | | | | | WhiteSpace 1625..1633 " " +| | | | | | | StatementList 1633..1790 +| | | | | | | | Statement 1633..1666 +| | | | | | | | | Error 1633..1634 +| | | | | | | | | | Expression 1633..1634 +| | | | | | | | | | | ComponentIdentifier 1633..1634 +| | | | | | | | | | | | Identifier 1633..1634 +| | | | | | | | | | | | | Identifier 1633..1634 "r" +| | | | | | | | | Error 1634..1666 +| | | | | | | | | | Error 1634..1666 +| | | | | | | | | | | Error 1634..1666 "expect Semicolon but got UnitInc" +| | | | | | | | Statement 1666..1713 +| | | | | | | | | Error 1666..1678 +| | | | | | | | | | Expression 1666..1678 +| | | | | | | | | | | UnitInc 1666..1669 +| | | | | | | | | | | | UnitInc 1666..1668 +| | | | | | | | | | | | | UnitInc 1666..1668 "++" +| | | | | | | | | | | | Error 1668..1669 +| | | | | | | | | | | | | Semicolon 1668..1669 +| | | | | | | | | | | | | | Semicolon 1668..1669 ";" +| | | | | | | | | | | EndLine 1669..1670 +| | | | | | | | | | | | EndLine 1669..1670 +| | | | | | | | | | | | | EndLine 1669..1670 "\n" +| | | | | | | | | | | WhiteSpace 1670..1678 +| | | | | | | | | | | | WhiteSpace 1670..1678 +| | | | | | | | | | | | | WhiteSpace 1670..1678 " " +| | | | | | | | | Error 1678..1713 +| | | | | | | | | | Error 1678..1713 +| | | | | | | | | | | Error 1678..1713 "expect Semicolon but got Identifier" +| | | | | | | | Statement 1713..1749 +| | | | | | | | | Error 1713..1715 +| | | | | | | | | | Expression 1713..1715 +| | | | | | | | | | | ComponentIdentifier 1713..1714 +| | | | | | | | | | | | Identifier 1713..1714 +| | | | | | | | | | | | | Identifier 1713..1714 "n" +| | | | | | | | | | | WhiteSpace 1714..1715 +| | | | | | | | | | | | WhiteSpace 1714..1715 +| | | | | | | | | | | | | WhiteSpace 1714..1715 " " +| | | | | | | | | Error 1715..1749 +| | | | | | | | | | Error 1715..1749 +| | | | | | | | | | | Error 1715..1749 "expect Semicolon but got MulAssign" +| | | | | | | | Statement 1749..1783 +| | | | | | | | | Error 1749..1752 +| | | | | | | | | | Expression 1749..1751 +| | | | | | | | | | | Error 1749..1751 +| | | | | | | | | | | | MulAssign 1749..1751 +| | | | | | | | | | | | | MulAssign 1749..1751 "*=" +| | | | | | | | | | WhiteSpace 1751..1752 +| | | | | | | | | | | WhiteSpace 1751..1752 +| | | | | | | | | | | | WhiteSpace 1751..1752 " " +| | | | | | | | | Error 1752..1783 +| | | | | | | | | | Error 1752..1783 +| | | | | | | | | | | Error 1752..1783 "expect Semicolon but got Number" +| | | | | | | | Statement 1783..1785 +| | | | | | | | | Error 1783..1784 +| | | | | | | | | | Expression 1783..1784 +| | | | | | | | | | | Number 1783..1784 +| | | | | | | | | | | | Number 1783..1784 +| | | | | | | | | | | | | Number 1783..1784 "2" +| | | | | | | | | Semicolon 1784..1785 +| | | | | | | | | | Semicolon 1784..1785 ";" +| | | | | | | | EndLine 1785..1786 +| | | | | | | | | EndLine 1785..1786 +| | | | | | | | | | EndLine 1785..1786 "\n" +| | | | | | | | WhiteSpace 1786..1790 +| | | | | | | | | WhiteSpace 1786..1790 +| | | | | | | | | | WhiteSpace 1786..1790 " " +| | | | | | | RCurly 1790..1791 +| | | | | | | | RCurly 1790..1791 "}" +| | | | EndLine 1791..1792 +| | | | | EndLine 1791..1792 +| | | | | | EndLine 1791..1792 "\n" +| | | | WhiteSpace 1792..1796 +| | | | | WhiteSpace 1792..1796 +| | | | | | WhiteSpace 1792..1796 " " +| | | | Statement 1796..1805 +| | | | | ReturnKw 1796..1804 +| | | | | | ReturnKw 1796..1802 +| | | | | | | ReturnKw 1796..1802 "return" +| | | | | | WhiteSpace 1802..1803 +| | | | | | | WhiteSpace 1802..1803 +| | | | | | | | WhiteSpace 1802..1803 " " +| | | | | | Expression 1803..1804 +| | | | | | | Identifier 1803..1804 +| | | | | | | | Identifier 1803..1804 +| | | | | | | | | Identifier 1803..1804 "r" +| | | | | Semicolon 1804..1805 +| | | | | | Semicolon 1804..1805 ";" +| | | | EndLine 1805..1806 +| | | | | EndLine 1805..1806 +| | | | | | EndLine 1805..1806 "\n" +| | | RCurly 1806..1807 +| | | | RCurly 1806..1807 "}" +| EndLine 1807..1808 +| | EndLine 1807..1808 +| | | EndLine 1807..1808 "\n" +| EndLine 1808..1809 +| | EndLine 1808..1809 +| | | EndLine 1808..1809 "\n" +| EndLine 1809..1810 +| | EndLine 1809..1810 +| | | EndLine 1809..1810 "\n" +| TemplateDef 1810..3637 +| | TemplateKw 1810..1818 +| | | TemplateKw 1810..1818 "template" +| | WhiteSpace 1818..1819 +| | | WhiteSpace 1818..1819 +| | | | WhiteSpace 1818..1819 " " +| | TemplateName 1819..1825 +| | | Identifier 1819..1825 +| | | | Identifier 1819..1825 "BinSum" +| | LParen 1825..1826 +| | | LParen 1825..1826 "(" +| | ParameterList 1826..1832 +| | | Identifier 1826..1827 +| | | | Identifier 1826..1827 "n" +| | | Comma 1827..1828 +| | | | Comma 1827..1828 "," +| | | WhiteSpace 1828..1829 +| | | | WhiteSpace 1828..1829 +| | | | | WhiteSpace 1828..1829 " " +| | | Identifier 1829..1832 +| | | | Identifier 1829..1832 "ops" +| | RParen 1832..1833 +| | | RParen 1832..1833 ")" +| | WhiteSpace 1833..1834 +| | | WhiteSpace 1833..1834 +| | | | WhiteSpace 1833..1834 " " +| | Block 1834..3637 +| | | LCurly 1834..1835 +| | | | LCurly 1834..1835 "{" +| | | EndLine 1835..1836 +| | | | EndLine 1835..1836 +| | | | | EndLine 1835..1836 "\n" +| | | WhiteSpace 1836..1840 +| | | | WhiteSpace 1836..1840 +| | | | | WhiteSpace 1836..1840 " " +| | | StatementList 1840..3612 +| | | | VarDecl 1840..1950 +| | | | | VarKw 1840..1843 +| | | | | | VarKw 1840..1843 "var" +| | | | | WhiteSpace 1843..1844 +| | | | | | WhiteSpace 1843..1844 +| | | | | | | WhiteSpace 1843..1844 " " +| | | | | Identifier 1844..1848 +| | | | | | Identifier 1844..1848 "nout" +| | | | | WhiteSpace 1848..1849 +| | | | | | WhiteSpace 1848..1849 +| | | | | | | WhiteSpace 1848..1849 " " +| | | | | Assign 1849..1850 +| | | | | | Assign 1849..1850 "=" +| | | | | WhiteSpace 1850..1851 +| | | | | | WhiteSpace 1850..1851 +| | | | | | | WhiteSpace 1850..1851 " " +| | | | | Expression 1851..1950 +| | | | | | ArrayQuery 1851..1950 +| | | | | | | Call 1851..1917 +| | | | | | | | Identifier 1851..1856 +| | | | | | | | | Identifier 1851..1856 +| | | | | | | | | | Identifier 1851..1856 "nbits" +| | | | | | | | Tuple 1856..1917 +| | | | | | | | | LParen 1856..1857 +| | | | | | | | | | LParen 1856..1857 "(" +| | | | | | | | | Error 1857..1889 +| | | | | | | | | | Error 1857..1889 +| | | | | | | | | | | Error 1857..1889 "expect Identifier but got LParen" +| | | | | | | | | Error 1889..1917 +| | | | | | | | | | Error 1889..1917 +| | | | | | | | | | | Error 1889..1917 "expect RParen but got LParen" +| | | | | | | LParen 1917..1918 +| | | | | | | | LParen 1917..1918 "(" +| | | | | | | Error 1918..1950 +| | | | | | | | Error 1918..1950 +| | | | | | | | | Error 1918..1950 "expect Identifier but got Number" +| | | | Error 1950..1981 +| | | | | Error 1950..1981 +| | | | | | Error 1950..1981 "expect Semicolon but got Number" +| | | | Statement 1981..2019 +| | | | | Error 1981..1988 +| | | | | | Expression 1981..1988 +| | | | | | | Sub 1981..1988 +| | | | | | | | Power 1981..1986 +| | | | | | | | | Number 1981..1982 +| | | | | | | | | | Number 1981..1982 +| | | | | | | | | | | Number 1981..1982 "2" +| | | | | | | | | Power 1982..1984 +| | | | | | | | | | Power 1982..1984 "**" +| | | | | | | | | Identifier 1984..1985 +| | | | | | | | | | Identifier 1984..1985 +| | | | | | | | | | | Identifier 1984..1985 "n" +| | | | | | | | | WhiteSpace 1985..1986 +| | | | | | | | | | WhiteSpace 1985..1986 +| | | | | | | | | | | WhiteSpace 1985..1986 " " +| | | | | | | | Sub 1986..1987 +| | | | | | | | | Sub 1986..1987 "-" +| | | | | | | | Number 1987..1988 +| | | | | | | | | Number 1987..1988 +| | | | | | | | | | Number 1987..1988 "1" +| | | | | Error 1988..2019 +| | | | | | Error 1988..2019 +| | | | | | | Error 1988..2019 "expect Semicolon but got RParen" +| | | | Statement 2019..2048 +| | | | | Error 2019..2020 +| | | | | | Expression 2019..2020 +| | | | | | | Error 2019..2020 +| | | | | | | | RParen 2019..2020 +| | | | | | | | | RParen 2019..2020 ")" +| | | | | Error 2020..2048 +| | | | | | Error 2020..2048 +| | | | | | | Error 2020..2048 "expect Semicolon but got Mul" +| | | | Statement 2048..2084 +| | | | | Error 2048..2049 +| | | | | | Expression 2048..2049 +| | | | | | | Error 2048..2049 +| | | | | | | | Mul 2048..2049 +| | | | | | | | | Mul 2048..2049 "*" +| | | | | Error 2049..2084 +| | | | | | Error 2049..2084 +| | | | | | | Error 2049..2084 "expect Semicolon but got Identifier" +| | | | Statement 2084..2118 +| | | | | Error 2084..2087 +| | | | | | Expression 2084..2087 +| | | | | | | ComponentIdentifier 2084..2087 +| | | | | | | | Identifier 2084..2087 +| | | | | | | | | Identifier 2084..2087 "ops" +| | | | | Error 2087..2118 +| | | | | | Error 2087..2118 +| | | | | | | Error 2087..2118 "expect Semicolon but got RParen" +| | | | Statement 2118..2120 +| | | | | Error 2118..2119 +| | | | | | Expression 2118..2119 +| | | | | | | Error 2118..2119 +| | | | | | | | RParen 2118..2119 +| | | | | | | | | RParen 2118..2119 ")" +| | | | | Semicolon 2119..2120 +| | | | | | Semicolon 2119..2120 ";" +| | | | EndLine 2120..2121 +| | | | | EndLine 2120..2121 +| | | | | | EndLine 2120..2121 "\n" +| | | | WhiteSpace 2121..2125 +| | | | | WhiteSpace 2121..2125 +| | | | | | WhiteSpace 2121..2125 " " +| | | | InputSignalDecl 2125..2140 +| | | | | SignalHeader 2125..2138 +| | | | | | SignalKw 2125..2131 +| | | | | | | SignalKw 2125..2131 "signal" +| | | | | | WhiteSpace 2131..2132 +| | | | | | | WhiteSpace 2131..2132 +| | | | | | | | WhiteSpace 2131..2132 " " +| | | | | | InputKw 2132..2137 +| | | | | | | InputKw 2132..2137 "input" +| | | | | | WhiteSpace 2137..2138 +| | | | | | | WhiteSpace 2137..2138 +| | | | | | | | WhiteSpace 2137..2138 " " +| | | | | Identifier 2138..2140 +| | | | | | Identifier 2138..2140 "in" +| | | | Error 2140..2173 +| | | | | Error 2140..2173 +| | | | | | Error 2140..2173 "expect Semicolon but got LBracket" +| | | | Statement 2173..2209 +| | | | | Error 2173..2174 +| | | | | | Expression 2173..2174 +| | | | | | | Error 2173..2174 +| | | | | | | | LBracket 2173..2174 +| | | | | | | | | LBracket 2173..2174 "[" +| | | | | Error 2174..2209 +| | | | | | Error 2174..2209 +| | | | | | | Error 2174..2209 "expect Semicolon but got Identifier" +| | | | Statement 2209..2245 +| | | | | Error 2209..2212 +| | | | | | Expression 2209..2212 +| | | | | | | ComponentIdentifier 2209..2212 +| | | | | | | | Identifier 2209..2212 +| | | | | | | | | Identifier 2209..2212 "ops" +| | | | | Error 2212..2245 +| | | | | | Error 2212..2245 +| | | | | | | Error 2212..2245 "expect Semicolon but got RBracket" +| | | | Statement 2245..2279 +| | | | | Error 2245..2246 +| | | | | | Expression 2245..2246 +| | | | | | | Error 2245..2246 +| | | | | | | | RBracket 2245..2246 +| | | | | | | | | RBracket 2245..2246 "]" +| | | | | Error 2246..2279 +| | | | | | Error 2246..2279 +| | | | | | | Error 2246..2279 "expect Semicolon but got LBracket" +| | | | Statement 2279..2315 +| | | | | Error 2279..2280 +| | | | | | Expression 2279..2280 +| | | | | | | Error 2279..2280 +| | | | | | | | LBracket 2279..2280 +| | | | | | | | | LBracket 2279..2280 "[" +| | | | | Error 2280..2315 +| | | | | | Error 2280..2315 +| | | | | | | Error 2280..2315 "expect Semicolon but got Identifier" +| | | | Statement 2315..2349 +| | | | | Error 2315..2316 +| | | | | | Expression 2315..2316 +| | | | | | | ComponentIdentifier 2315..2316 +| | | | | | | | Identifier 2315..2316 +| | | | | | | | | Identifier 2315..2316 "n" +| | | | | Error 2316..2349 +| | | | | | Error 2316..2349 +| | | | | | | Error 2316..2349 "expect Semicolon but got RBracket" +| | | | Statement 2349..2351 +| | | | | Error 2349..2350 +| | | | | | Expression 2349..2350 +| | | | | | | Error 2349..2350 +| | | | | | | | RBracket 2349..2350 +| | | | | | | | | RBracket 2349..2350 "]" +| | | | | Semicolon 2350..2351 +| | | | | | Semicolon 2350..2351 ";" +| | | | EndLine 2351..2352 +| | | | | EndLine 2351..2352 +| | | | | | EndLine 2351..2352 "\n" +| | | | WhiteSpace 2352..2356 +| | | | | WhiteSpace 2352..2356 +| | | | | | WhiteSpace 2352..2356 " " +| | | | OutputSignalDecl 2356..2373 +| | | | | SignalHeader 2356..2370 +| | | | | | SignalKw 2356..2362 +| | | | | | | SignalKw 2356..2362 "signal" +| | | | | | WhiteSpace 2362..2363 +| | | | | | | WhiteSpace 2362..2363 +| | | | | | | | WhiteSpace 2362..2363 " " +| | | | | | OutputKw 2363..2369 +| | | | | | | OutputKw 2363..2369 "output" +| | | | | | WhiteSpace 2369..2370 +| | | | | | | WhiteSpace 2369..2370 +| | | | | | | | WhiteSpace 2369..2370 " " +| | | | | Identifier 2370..2373 +| | | | | | Identifier 2370..2373 "out" +| | | | Error 2373..2406 +| | | | | Error 2373..2406 +| | | | | | Error 2373..2406 "expect Semicolon but got LBracket" +| | | | Statement 2406..2442 +| | | | | Error 2406..2407 +| | | | | | Expression 2406..2407 +| | | | | | | Error 2406..2407 +| | | | | | | | LBracket 2406..2407 +| | | | | | | | | LBracket 2406..2407 "[" +| | | | | Error 2407..2442 +| | | | | | Error 2407..2442 +| | | | | | | Error 2407..2442 "expect Semicolon but got Identifier" +| | | | Statement 2442..2479 +| | | | | Error 2442..2446 +| | | | | | Expression 2442..2446 +| | | | | | | ComponentIdentifier 2442..2446 +| | | | | | | | Identifier 2442..2446 +| | | | | | | | | Identifier 2442..2446 "nout" +| | | | | Error 2446..2479 +| | | | | | Error 2446..2479 +| | | | | | | Error 2446..2479 "expect Semicolon but got RBracket" +| | | | Statement 2479..2481 +| | | | | Error 2479..2480 +| | | | | | Expression 2479..2480 +| | | | | | | Error 2479..2480 +| | | | | | | | RBracket 2479..2480 +| | | | | | | | | RBracket 2479..2480 "]" +| | | | | Semicolon 2480..2481 +| | | | | | Semicolon 2480..2481 ";" +| | | | EndLine 2481..2482 +| | | | | EndLine 2481..2482 +| | | | | | EndLine 2481..2482 "\n" +| | | | EndLine 2482..2483 +| | | | | EndLine 2482..2483 +| | | | | | EndLine 2482..2483 "\n" +| | | | WhiteSpace 2483..2487 +| | | | | WhiteSpace 2483..2487 +| | | | | | WhiteSpace 2483..2487 " " +| | | | VarDecl 2487..2498 +| | | | | VarKw 2487..2490 +| | | | | | VarKw 2487..2490 "var" +| | | | | WhiteSpace 2490..2491 +| | | | | | WhiteSpace 2490..2491 +| | | | | | | WhiteSpace 2490..2491 " " +| | | | | Identifier 2491..2494 +| | | | | | Identifier 2491..2494 "lin" +| | | | | WhiteSpace 2494..2495 +| | | | | | WhiteSpace 2494..2495 +| | | | | | | WhiteSpace 2494..2495 " " +| | | | | Assign 2495..2496 +| | | | | | Assign 2495..2496 "=" +| | | | | WhiteSpace 2496..2497 +| | | | | | WhiteSpace 2496..2497 +| | | | | | | WhiteSpace 2496..2497 " " +| | | | | Expression 2497..2498 +| | | | | | Number 2497..2498 +| | | | | | | Number 2497..2498 +| | | | | | | | Number 2497..2498 "0" +| | | | Semicolon 2498..2499 +| | | | | Semicolon 2498..2499 ";" +| | | | EndLine 2499..2500 +| | | | | EndLine 2499..2500 +| | | | | | EndLine 2499..2500 "\n" +| | | | WhiteSpace 2500..2504 +| | | | | WhiteSpace 2500..2504 +| | | | | | WhiteSpace 2500..2504 " " +| | | | VarDecl 2504..2516 +| | | | | VarKw 2504..2507 +| | | | | | VarKw 2504..2507 "var" +| | | | | WhiteSpace 2507..2508 +| | | | | | WhiteSpace 2507..2508 +| | | | | | | WhiteSpace 2507..2508 " " +| | | | | Identifier 2508..2512 +| | | | | | Identifier 2508..2512 "lout" +| | | | | WhiteSpace 2512..2513 +| | | | | | WhiteSpace 2512..2513 +| | | | | | | WhiteSpace 2512..2513 " " +| | | | | Assign 2513..2514 +| | | | | | Assign 2513..2514 "=" +| | | | | WhiteSpace 2514..2515 +| | | | | | WhiteSpace 2514..2515 +| | | | | | | WhiteSpace 2514..2515 " " +| | | | | Expression 2515..2516 +| | | | | | Number 2515..2516 +| | | | | | | Number 2515..2516 +| | | | | | | | Number 2515..2516 "0" +| | | | Semicolon 2516..2517 +| | | | | Semicolon 2516..2517 ";" +| | | | EndLine 2517..2518 +| | | | | EndLine 2517..2518 +| | | | | | EndLine 2517..2518 "\n" +| | | | EndLine 2518..2519 +| | | | | EndLine 2518..2519 +| | | | | | EndLine 2518..2519 "\n" +| | | | WhiteSpace 2519..2523 +| | | | | WhiteSpace 2519..2523 +| | | | | | WhiteSpace 2519..2523 " " +| | | | VarDecl 2523..2528 +| | | | | VarKw 2523..2526 +| | | | | | VarKw 2523..2526 "var" +| | | | | WhiteSpace 2526..2527 +| | | | | | WhiteSpace 2526..2527 +| | | | | | | WhiteSpace 2526..2527 " " +| | | | | Identifier 2527..2528 +| | | | | | Identifier 2527..2528 "k" +| | | | Semicolon 2528..2529 +| | | | | Semicolon 2528..2529 ";" +| | | | EndLine 2529..2530 +| | | | | EndLine 2529..2530 +| | | | | | EndLine 2529..2530 "\n" +| | | | WhiteSpace 2530..2534 +| | | | | WhiteSpace 2530..2534 +| | | | | | WhiteSpace 2530..2534 " " +| | | | VarDecl 2534..2539 +| | | | | VarKw 2534..2537 +| | | | | | VarKw 2534..2537 "var" +| | | | | WhiteSpace 2537..2538 +| | | | | | WhiteSpace 2537..2538 +| | | | | | | WhiteSpace 2537..2538 " " +| | | | | Identifier 2538..2539 +| | | | | | Identifier 2538..2539 "j" +| | | | Semicolon 2539..2540 +| | | | | Semicolon 2539..2540 ";" +| | | | EndLine 2540..2541 +| | | | | EndLine 2540..2541 +| | | | | | EndLine 2540..2541 "\n" +| | | | EndLine 2541..2542 +| | | | | EndLine 2541..2542 +| | | | | | EndLine 2541..2542 "\n" +| | | | WhiteSpace 2542..2546 +| | | | | WhiteSpace 2542..2546 +| | | | | | WhiteSpace 2542..2546 " " +| | | | VarDecl 2546..2552 +| | | | | VarKw 2546..2549 +| | | | | | VarKw 2546..2549 "var" +| | | | | WhiteSpace 2549..2550 +| | | | | | WhiteSpace 2549..2550 +| | | | | | | WhiteSpace 2549..2550 " " +| | | | | Identifier 2550..2552 +| | | | | | Identifier 2550..2552 "e2" +| | | | Semicolon 2552..2553 +| | | | | Semicolon 2552..2553 ";" +| | | | EndLine 2553..2554 +| | | | | EndLine 2553..2554 +| | | | | | EndLine 2553..2554 "\n" +| | | | EndLine 2554..2555 +| | | | | EndLine 2554..2555 +| | | | | | EndLine 2554..2555 "\n" +| | | | WhiteSpace 2555..2559 +| | | | | WhiteSpace 2555..2559 +| | | | | | WhiteSpace 2555..2559 " " +| | | | Statement 2559..2566 +| | | | | AssignStatement 2559..2565 +| | | | | | Expression 2559..2562 +| | | | | | | ComponentIdentifier 2559..2561 +| | | | | | | | Identifier 2559..2561 +| | | | | | | | | Identifier 2559..2561 "e2" +| | | | | | | WhiteSpace 2561..2562 +| | | | | | | | WhiteSpace 2561..2562 +| | | | | | | | | WhiteSpace 2561..2562 " " +| | | | | | Assign 2562..2563 +| | | | | | | Assign 2562..2563 "=" +| | | | | | WhiteSpace 2563..2564 +| | | | | | | WhiteSpace 2563..2564 +| | | | | | | | WhiteSpace 2563..2564 " " +| | | | | | Expression 2564..2565 +| | | | | | | Number 2564..2565 +| | | | | | | | Number 2564..2565 +| | | | | | | | | Number 2564..2565 "1" +| | | | | Semicolon 2565..2566 +| | | | | | Semicolon 2565..2566 ";" +| | | | EndLine 2566..2567 +| | | | | EndLine 2566..2567 +| | | | | | EndLine 2566..2567 "\n" +| | | | WhiteSpace 2567..2571 +| | | | | WhiteSpace 2567..2571 +| | | | | | WhiteSpace 2567..2571 " " +| | | | Statement 2571..2651 +| | | | | ForLoop 2571..2651 +| | | | | | ForKw 2571..2574 +| | | | | | | ForKw 2571..2574 "for" +| | | | | | WhiteSpace 2574..2575 +| | | | | | | WhiteSpace 2574..2575 +| | | | | | | | WhiteSpace 2574..2575 " " +| | | | | | LParen 2575..2576 +| | | | | | | LParen 2575..2576 "(" +| | | | | | AssignStatement 2576..2579 +| | | | | | | Expression 2576..2577 +| | | | | | | | ComponentIdentifier 2576..2577 +| | | | | | | | | Identifier 2576..2577 +| | | | | | | | | | Identifier 2576..2577 "k" +| | | | | | | Assign 2577..2578 +| | | | | | | | Assign 2577..2578 "=" +| | | | | | | Expression 2578..2579 +| | | | | | | | Number 2578..2579 +| | | | | | | | | Number 2578..2579 +| | | | | | | | | | Number 2578..2579 "0" +| | | | | | Semicolon 2579..2580 +| | | | | | | Semicolon 2579..2580 ";" +| | | | | | WhiteSpace 2580..2581 +| | | | | | | WhiteSpace 2580..2581 +| | | | | | | | WhiteSpace 2580..2581 " " +| | | | | | Expression 2581..2584 +| | | | | | | LessThan 2581..2584 +| | | | | | | | Identifier 2581..2582 +| | | | | | | | | Identifier 2581..2582 +| | | | | | | | | | Identifier 2581..2582 "k" +| | | | | | | | LessThan 2582..2583 +| | | | | | | | | LessThan 2582..2583 "<" +| | | | | | | | Identifier 2583..2584 +| | | | | | | | | Identifier 2583..2584 +| | | | | | | | | | Identifier 2583..2584 "n" +| | | | | | Semicolon 2584..2585 +| | | | | | | Semicolon 2584..2585 ";" +| | | | | | WhiteSpace 2585..2586 +| | | | | | | WhiteSpace 2585..2586 +| | | | | | | | WhiteSpace 2585..2586 " " +| | | | | | Error 2586..2587 +| | | | | | | Expression 2586..2587 +| | | | | | | | ComponentIdentifier 2586..2587 +| | | | | | | | | Identifier 2586..2587 +| | | | | | | | | | Identifier 2586..2587 "k" +| | | | | | Error 2587..2616 +| | | | | | | Error 2587..2616 +| | | | | | | | Error 2587..2616 "expect RParen but got UnitInc" +| | | | | | Error 2616..2620 +| | | | | | | Expression 2616..2620 +| | | | | | | | UnitInc 2616..2619 +| | | | | | | | | UnitInc 2616..2618 +| | | | | | | | | | UnitInc 2616..2618 "++" +| | | | | | | | | Error 2618..2619 +| | | | | | | | | | RParen 2618..2619 +| | | | | | | | | | | RParen 2618..2619 ")" +| | | | | | | | WhiteSpace 2619..2620 +| | | | | | | | | WhiteSpace 2619..2620 +| | | | | | | | | | WhiteSpace 2619..2620 " " +| | | | | | Error 2620..2651 +| | | | | | | Error 2620..2651 +| | | | | | | | Error 2620..2651 "expect Semicolon but got LCurly" +| | | | Statement 2651..3611 +| | | | | Block 2651..3611 +| | | | | | LCurly 2651..2652 +| | | | | | | LCurly 2651..2652 "{" +| | | | | | EndLine 2652..2653 +| | | | | | | EndLine 2652..2653 +| | | | | | | | EndLine 2652..2653 "\n" +| | | | | | WhiteSpace 2653..2661 +| | | | | | | WhiteSpace 2653..2661 +| | | | | | | | WhiteSpace 2653..2661 " " +| | | | | | StatementList 2661..3610 +| | | | | | | Statement 2661..2743 +| | | | | | | | ForLoop 2661..2743 +| | | | | | | | | ForKw 2661..2664 +| | | | | | | | | | ForKw 2661..2664 "for" +| | | | | | | | | WhiteSpace 2664..2665 +| | | | | | | | | | WhiteSpace 2664..2665 +| | | | | | | | | | | WhiteSpace 2664..2665 " " +| | | | | | | | | LParen 2665..2666 +| | | | | | | | | | LParen 2665..2666 "(" +| | | | | | | | | AssignStatement 2666..2669 +| | | | | | | | | | Expression 2666..2667 +| | | | | | | | | | | ComponentIdentifier 2666..2667 +| | | | | | | | | | | | Identifier 2666..2667 +| | | | | | | | | | | | | Identifier 2666..2667 "j" +| | | | | | | | | | Assign 2667..2668 +| | | | | | | | | | | Assign 2667..2668 "=" +| | | | | | | | | | Expression 2668..2669 +| | | | | | | | | | | Number 2668..2669 +| | | | | | | | | | | | Number 2668..2669 +| | | | | | | | | | | | | Number 2668..2669 "0" +| | | | | | | | | Semicolon 2669..2670 +| | | | | | | | | | Semicolon 2669..2670 ";" +| | | | | | | | | WhiteSpace 2670..2671 +| | | | | | | | | | WhiteSpace 2670..2671 +| | | | | | | | | | | WhiteSpace 2670..2671 " " +| | | | | | | | | Expression 2671..2676 +| | | | | | | | | | LessThan 2671..2676 +| | | | | | | | | | | Identifier 2671..2672 +| | | | | | | | | | | | Identifier 2671..2672 +| | | | | | | | | | | | | Identifier 2671..2672 "j" +| | | | | | | | | | | LessThan 2672..2673 +| | | | | | | | | | | | LessThan 2672..2673 "<" +| | | | | | | | | | | Identifier 2673..2676 +| | | | | | | | | | | | Identifier 2673..2676 +| | | | | | | | | | | | | Identifier 2673..2676 "ops" +| | | | | | | | | Semicolon 2676..2677 +| | | | | | | | | | Semicolon 2676..2677 ";" +| | | | | | | | | WhiteSpace 2677..2678 +| | | | | | | | | | WhiteSpace 2677..2678 +| | | | | | | | | | | WhiteSpace 2677..2678 " " +| | | | | | | | | Error 2678..2679 +| | | | | | | | | | Expression 2678..2679 +| | | | | | | | | | | ComponentIdentifier 2678..2679 +| | | | | | | | | | | | Identifier 2678..2679 +| | | | | | | | | | | | | Identifier 2678..2679 "j" +| | | | | | | | | Error 2679..2708 +| | | | | | | | | | Error 2679..2708 +| | | | | | | | | | | Error 2679..2708 "expect RParen but got UnitInc" +| | | | | | | | | Error 2708..2712 +| | | | | | | | | | Expression 2708..2712 +| | | | | | | | | | | UnitInc 2708..2711 +| | | | | | | | | | | | UnitInc 2708..2710 +| | | | | | | | | | | | | UnitInc 2708..2710 "++" +| | | | | | | | | | | | Error 2710..2711 +| | | | | | | | | | | | | RParen 2710..2711 +| | | | | | | | | | | | | | RParen 2710..2711 ")" +| | | | | | | | | | | WhiteSpace 2711..2712 +| | | | | | | | | | | | WhiteSpace 2711..2712 +| | | | | | | | | | | | | WhiteSpace 2711..2712 " " +| | | | | | | | | Error 2712..2743 +| | | | | | | | | | Error 2712..2743 +| | | | | | | | | | | Error 2712..2743 "expect Semicolon but got LCurly" +| | | | | | | Statement 2743..3021 +| | | | | | | | Block 2743..3021 +| | | | | | | | | LCurly 2743..2744 +| | | | | | | | | | LCurly 2743..2744 "{" +| | | | | | | | | EndLine 2744..2745 +| | | | | | | | | | EndLine 2744..2745 +| | | | | | | | | | | EndLine 2744..2745 "\n" +| | | | | | | | | WhiteSpace 2745..2757 +| | | | | | | | | | WhiteSpace 2745..2757 +| | | | | | | | | | | WhiteSpace 2745..2757 " " +| | | | | | | | | StatementList 2757..3020 +| | | | | | | | | | Statement 2757..2795 +| | | | | | | | | | | Error 2757..2761 +| | | | | | | | | | | | Expression 2757..2761 +| | | | | | | | | | | | | ComponentIdentifier 2757..2760 +| | | | | | | | | | | | | | Identifier 2757..2760 +| | | | | | | | | | | | | | | Identifier 2757..2760 "lin" +| | | | | | | | | | | | | WhiteSpace 2760..2761 +| | | | | | | | | | | | | | WhiteSpace 2760..2761 +| | | | | | | | | | | | | | | WhiteSpace 2760..2761 " " +| | | | | | | | | | | Error 2761..2795 +| | | | | | | | | | | | Error 2761..2795 +| | | | | | | | | | | | | Error 2761..2795 "expect Semicolon but got AddAssign" +| | | | | | | | | | Statement 2795..2833 +| | | | | | | | | | | Error 2795..2798 +| | | | | | | | | | | | Expression 2795..2797 +| | | | | | | | | | | | | Error 2795..2797 +| | | | | | | | | | | | | | AddAssign 2795..2797 +| | | | | | | | | | | | | | | AddAssign 2795..2797 "+=" +| | | | | | | | | | | | WhiteSpace 2797..2798 +| | | | | | | | | | | | | WhiteSpace 2797..2798 +| | | | | | | | | | | | | | WhiteSpace 2797..2798 " " +| | | | | | | | | | | Error 2798..2833 +| | | | | | | | | | | | Error 2798..2833 +| | | | | | | | | | | | | Error 2798..2833 "expect Semicolon but got Identifier" +| | | | | | | | | | Statement 2833..2871 +| | | | | | | | | | | Error 2833..2838 +| | | | | | | | | | | | Expression 2833..2838 +| | | | | | | | | | | | | ComponentIdentifier 2833..2835 +| | | | | | | | | | | | | | Identifier 2833..2835 +| | | | | | | | | | | | | | | Identifier 2833..2835 "in" +| | | | | | | | | | | | | LBracket 2835..2836 +| | | | | | | | | | | | | | LBracket 2835..2836 "[" +| | | | | | | | | | | | | Expression 2836..2837 +| | | | | | | | | | | | | | Identifier 2836..2837 +| | | | | | | | | | | | | | | Identifier 2836..2837 +| | | | | | | | | | | | | | | | Identifier 2836..2837 "j" +| | | | | | | | | | | | | RBracket 2837..2838 +| | | | | | | | | | | | | | RBracket 2837..2838 "]" +| | | | | | | | | | | Error 2838..2871 +| | | | | | | | | | | | Error 2838..2871 +| | | | | | | | | | | | | Error 2838..2871 "expect Semicolon but got LBracket" +| | | | | | | | | | Statement 2871..2907 +| | | | | | | | | | | Error 2871..2872 +| | | | | | | | | | | | Expression 2871..2872 +| | | | | | | | | | | | | Error 2871..2872 +| | | | | | | | | | | | | | LBracket 2871..2872 +| | | | | | | | | | | | | | | LBracket 2871..2872 "[" +| | | | | | | | | | | Error 2872..2907 +| | | | | | | | | | | | Error 2872..2907 +| | | | | | | | | | | | | Error 2872..2907 "expect Semicolon but got Identifier" +| | | | | | | | | | Statement 2907..2941 +| | | | | | | | | | | Error 2907..2908 +| | | | | | | | | | | | Expression 2907..2908 +| | | | | | | | | | | | | ComponentIdentifier 2907..2908 +| | | | | | | | | | | | | | Identifier 2907..2908 +| | | | | | | | | | | | | | | Identifier 2907..2908 "k" +| | | | | | | | | | | Error 2908..2941 +| | | | | | | | | | | | Error 2908..2941 +| | | | | | | | | | | | | Error 2908..2941 "expect Semicolon but got RBracket" +| | | | | | | | | | Statement 2941..2971 +| | | | | | | | | | | Error 2941..2943 +| | | | | | | | | | | | Expression 2941..2942 +| | | | | | | | | | | | | Error 2941..2942 +| | | | | | | | | | | | | | RBracket 2941..2942 +| | | | | | | | | | | | | | | RBracket 2941..2942 "]" +| | | | | | | | | | | | WhiteSpace 2942..2943 +| | | | | | | | | | | | | WhiteSpace 2942..2943 +| | | | | | | | | | | | | | WhiteSpace 2942..2943 " " +| | | | | | | | | | | Error 2943..2971 +| | | | | | | | | | | | Error 2943..2971 +| | | | | | | | | | | | | Error 2943..2971 "expect Semicolon but got Mul" +| | | | | | | | | | Statement 2971..3008 +| | | | | | | | | | | Error 2971..2973 +| | | | | | | | | | | | Expression 2971..2972 +| | | | | | | | | | | | | Error 2971..2972 +| | | | | | | | | | | | | | Mul 2971..2972 +| | | | | | | | | | | | | | | Mul 2971..2972 "*" +| | | | | | | | | | | | WhiteSpace 2972..2973 +| | | | | | | | | | | | | WhiteSpace 2972..2973 +| | | | | | | | | | | | | | WhiteSpace 2972..2973 " " +| | | | | | | | | | | Error 2973..3008 +| | | | | | | | | | | | Error 2973..3008 +| | | | | | | | | | | | | Error 2973..3008 "expect Semicolon but got Identifier" +| | | | | | | | | | Statement 3008..3011 +| | | | | | | | | | | Error 3008..3010 +| | | | | | | | | | | | Expression 3008..3010 +| | | | | | | | | | | | | ComponentIdentifier 3008..3010 +| | | | | | | | | | | | | | Identifier 3008..3010 +| | | | | | | | | | | | | | | Identifier 3008..3010 "e2" +| | | | | | | | | | | Semicolon 3010..3011 +| | | | | | | | | | | | Semicolon 3010..3011 ";" +| | | | | | | | | | EndLine 3011..3012 +| | | | | | | | | | | EndLine 3011..3012 +| | | | | | | | | | | | EndLine 3011..3012 "\n" +| | | | | | | | | | WhiteSpace 3012..3020 +| | | | | | | | | | | WhiteSpace 3012..3020 +| | | | | | | | | | | | WhiteSpace 3012..3020 " " +| | | | | | | | | RCurly 3020..3021 +| | | | | | | | | | RCurly 3020..3021 "}" +| | | | | | | EndLine 3021..3022 +| | | | | | | | EndLine 3021..3022 +| | | | | | | | | EndLine 3021..3022 "\n" +| | | | | | | WhiteSpace 3022..3030 +| | | | | | | | WhiteSpace 3022..3030 +| | | | | | | | | WhiteSpace 3022..3030 " " +| | | | | | | Statement 3030..3043 +| | | | | | | | AssignStatement 3030..3042 +| | | | | | | | | Expression 3030..3033 +| | | | | | | | | | ComponentIdentifier 3030..3032 +| | | | | | | | | | | Identifier 3030..3032 +| | | | | | | | | | | | Identifier 3030..3032 "e2" +| | | | | | | | | | WhiteSpace 3032..3033 +| | | | | | | | | | | WhiteSpace 3032..3033 +| | | | | | | | | | | | WhiteSpace 3032..3033 " " +| | | | | | | | | Assign 3033..3034 +| | | | | | | | | | Assign 3033..3034 "=" +| | | | | | | | | WhiteSpace 3034..3035 +| | | | | | | | | | WhiteSpace 3034..3035 +| | | | | | | | | | | WhiteSpace 3034..3035 " " +| | | | | | | | | Expression 3035..3042 +| | | | | | | | | | Add 3035..3042 +| | | | | | | | | | | Identifier 3035..3037 +| | | | | | | | | | | | Identifier 3035..3037 +| | | | | | | | | | | | | Identifier 3035..3037 "e2" +| | | | | | | | | | | WhiteSpace 3037..3038 +| | | | | | | | | | | | WhiteSpace 3037..3038 +| | | | | | | | | | | | | WhiteSpace 3037..3038 " " +| | | | | | | | | | | Add 3038..3039 +| | | | | | | | | | | | Add 3038..3039 "+" +| | | | | | | | | | | WhiteSpace 3039..3040 +| | | | | | | | | | | | WhiteSpace 3039..3040 +| | | | | | | | | | | | | WhiteSpace 3039..3040 " " +| | | | | | | | | | | Identifier 3040..3042 +| | | | | | | | | | | | Identifier 3040..3042 +| | | | | | | | | | | | | Identifier 3040..3042 "e2" +| | | | | | | | Semicolon 3042..3043 +| | | | | | | | | Semicolon 3042..3043 ";" +| | | | | | | EndLine 3043..3044 +| | | | | | | | EndLine 3043..3044 +| | | | | | | | | EndLine 3043..3044 "\n" +| | | | | | | WhiteSpace 3044..3048 +| | | | | | | | WhiteSpace 3044..3048 +| | | | | | | | | WhiteSpace 3044..3048 " " +| | | | | | | EndLine 3048..3049 +| | | | | | | | EndLine 3048..3049 +| | | | | | | | | EndLine 3048..3049 "\n" +| | | | | | | WhiteSpace 3049..3057 +| | | | | | | | WhiteSpace 3049..3057 +| | | | | | | | | WhiteSpace 3049..3057 " " +| | | | | | | Statement 3057..3064 +| | | | | | | | AssignStatement 3057..3063 +| | | | | | | | | Expression 3057..3060 +| | | | | | | | | | ComponentIdentifier 3057..3059 +| | | | | | | | | | | Identifier 3057..3059 +| | | | | | | | | | | | Identifier 3057..3059 "e2" +| | | | | | | | | | WhiteSpace 3059..3060 +| | | | | | | | | | | WhiteSpace 3059..3060 +| | | | | | | | | | | | WhiteSpace 3059..3060 " " +| | | | | | | | | Assign 3060..3061 +| | | | | | | | | | Assign 3060..3061 "=" +| | | | | | | | | WhiteSpace 3061..3062 +| | | | | | | | | | WhiteSpace 3061..3062 +| | | | | | | | | | | WhiteSpace 3061..3062 " " +| | | | | | | | | Expression 3062..3063 +| | | | | | | | | | Number 3062..3063 +| | | | | | | | | | | Number 3062..3063 +| | | | | | | | | | | | Number 3062..3063 "1" +| | | | | | | | Semicolon 3063..3064 +| | | | | | | | | Semicolon 3063..3064 ";" +| | | | | | | EndLine 3064..3065 +| | | | | | | | EndLine 3064..3065 +| | | | | | | | | EndLine 3064..3065 "\n" +| | | | | | | WhiteSpace 3065..3073 +| | | | | | | | WhiteSpace 3065..3073 +| | | | | | | | | WhiteSpace 3065..3073 " " +| | | | | | | Statement 3073..3156 +| | | | | | | | ForLoop 3073..3156 +| | | | | | | | | ForKw 3073..3076 +| | | | | | | | | | ForKw 3073..3076 "for" +| | | | | | | | | WhiteSpace 3076..3077 +| | | | | | | | | | WhiteSpace 3076..3077 +| | | | | | | | | | | WhiteSpace 3076..3077 " " +| | | | | | | | | LParen 3077..3078 +| | | | | | | | | | LParen 3077..3078 "(" +| | | | | | | | | AssignStatement 3078..3081 +| | | | | | | | | | Expression 3078..3079 +| | | | | | | | | | | ComponentIdentifier 3078..3079 +| | | | | | | | | | | | Identifier 3078..3079 +| | | | | | | | | | | | | Identifier 3078..3079 "k" +| | | | | | | | | | Assign 3079..3080 +| | | | | | | | | | | Assign 3079..3080 "=" +| | | | | | | | | | Expression 3080..3081 +| | | | | | | | | | | Number 3080..3081 +| | | | | | | | | | | | Number 3080..3081 +| | | | | | | | | | | | | Number 3080..3081 "0" +| | | | | | | | | Semicolon 3081..3082 +| | | | | | | | | | Semicolon 3081..3082 ";" +| | | | | | | | | WhiteSpace 3082..3083 +| | | | | | | | | | WhiteSpace 3082..3083 +| | | | | | | | | | | WhiteSpace 3082..3083 " " +| | | | | | | | | Expression 3083..3089 +| | | | | | | | | | LessThan 3083..3089 +| | | | | | | | | | | Identifier 3083..3084 +| | | | | | | | | | | | Identifier 3083..3084 +| | | | | | | | | | | | | Identifier 3083..3084 "k" +| | | | | | | | | | | LessThan 3084..3085 +| | | | | | | | | | | | LessThan 3084..3085 "<" +| | | | | | | | | | | Identifier 3085..3089 +| | | | | | | | | | | | Identifier 3085..3089 +| | | | | | | | | | | | | Identifier 3085..3089 "nout" +| | | | | | | | | Semicolon 3089..3090 +| | | | | | | | | | Semicolon 3089..3090 ";" +| | | | | | | | | WhiteSpace 3090..3091 +| | | | | | | | | | WhiteSpace 3090..3091 +| | | | | | | | | | | WhiteSpace 3090..3091 " " +| | | | | | | | | Error 3091..3092 +| | | | | | | | | | Expression 3091..3092 +| | | | | | | | | | | ComponentIdentifier 3091..3092 +| | | | | | | | | | | | Identifier 3091..3092 +| | | | | | | | | | | | | Identifier 3091..3092 "k" +| | | | | | | | | Error 3092..3121 +| | | | | | | | | | Error 3092..3121 +| | | | | | | | | | | Error 3092..3121 "expect RParen but got UnitInc" +| | | | | | | | | Error 3121..3125 +| | | | | | | | | | Expression 3121..3125 +| | | | | | | | | | | UnitInc 3121..3124 +| | | | | | | | | | | | UnitInc 3121..3123 +| | | | | | | | | | | | | UnitInc 3121..3123 "++" +| | | | | | | | | | | | Error 3123..3124 +| | | | | | | | | | | | | RParen 3123..3124 +| | | | | | | | | | | | | | RParen 3123..3124 ")" +| | | | | | | | | | | WhiteSpace 3124..3125 +| | | | | | | | | | | | WhiteSpace 3124..3125 +| | | | | | | | | | | | | WhiteSpace 3124..3125 " " +| | | | | | | | | Error 3125..3156 +| | | | | | | | | | Error 3125..3156 +| | | | | | | | | | | Error 3125..3156 "expect Semicolon but got LCurly" +| | | | | | | Statement 3156..3546 +| | | | | | | | Block 3156..3546 +| | | | | | | | | LCurly 3156..3157 +| | | | | | | | | | LCurly 3156..3157 "{" +| | | | | | | | | EndLine 3157..3158 +| | | | | | | | | | EndLine 3157..3158 +| | | | | | | | | | | EndLine 3157..3158 "\n" +| | | | | | | | | WhiteSpace 3158..3170 +| | | | | | | | | | WhiteSpace 3158..3170 +| | | | | | | | | | | WhiteSpace 3158..3170 " " +| | | | | | | | | StatementList 3170..3545 +| | | | | | | | | | Statement 3170..3196 +| | | | | | | | | | | AssignStatement 3170..3195 +| | | | | | | | | | | | Expression 3170..3177 +| | | | | | | | | | | | | ComponentIdentifier 3170..3173 +| | | | | | | | | | | | | | Identifier 3170..3173 +| | | | | | | | | | | | | | | Identifier 3170..3173 "out" +| | | | | | | | | | | | | LBracket 3173..3174 +| | | | | | | | | | | | | | LBracket 3173..3174 "[" +| | | | | | | | | | | | | Expression 3174..3175 +| | | | | | | | | | | | | | Identifier 3174..3175 +| | | | | | | | | | | | | | | Identifier 3174..3175 +| | | | | | | | | | | | | | | | Identifier 3174..3175 "k" +| | | | | | | | | | | | | RBracket 3175..3176 +| | | | | | | | | | | | | | RBracket 3175..3176 "]" +| | | | | | | | | | | | | WhiteSpace 3176..3177 +| | | | | | | | | | | | | | WhiteSpace 3176..3177 +| | | | | | | | | | | | | | | WhiteSpace 3176..3177 " " +| | | | | | | | | | | | RAssignSignal 3177..3180 +| | | | | | | | | | | | | RAssignSignal 3177..3180 "<--" +| | | | | | | | | | | | WhiteSpace 3180..3181 +| | | | | | | | | | | | | WhiteSpace 3180..3181 +| | | | | | | | | | | | | | WhiteSpace 3180..3181 " " +| | | | | | | | | | | | Expression 3181..3195 +| | | | | | | | | | | | | BitAnd 3181..3195 +| | | | | | | | | | | | | | Tuple 3181..3191 +| | | | | | | | | | | | | | | LParen 3181..3182 +| | | | | | | | | | | | | | | | LParen 3181..3182 "(" +| | | | | | | | | | | | | | | ShiftR 3182..3190 +| | | | | | | | | | | | | | | | Identifier 3182..3185 +| | | | | | | | | | | | | | | | | Identifier 3182..3185 +| | | | | | | | | | | | | | | | | | Identifier 3182..3185 "lin" +| | | | | | | | | | | | | | | | WhiteSpace 3185..3186 +| | | | | | | | | | | | | | | | | WhiteSpace 3185..3186 +| | | | | | | | | | | | | | | | | | WhiteSpace 3185..3186 " " +| | | | | | | | | | | | | | | | ShiftR 3186..3188 +| | | | | | | | | | | | | | | | | ShiftR 3186..3188 ">>" +| | | | | | | | | | | | | | | | WhiteSpace 3188..3189 +| | | | | | | | | | | | | | | | | WhiteSpace 3188..3189 +| | | | | | | | | | | | | | | | | | WhiteSpace 3188..3189 " " +| | | | | | | | | | | | | | | | Identifier 3189..3190 +| | | | | | | | | | | | | | | | | Identifier 3189..3190 +| | | | | | | | | | | | | | | | | | Identifier 3189..3190 "k" +| | | | | | | | | | | | | | | RParen 3190..3191 +| | | | | | | | | | | | | | | | RParen 3190..3191 ")" +| | | | | | | | | | | | | | WhiteSpace 3191..3192 +| | | | | | | | | | | | | | | WhiteSpace 3191..3192 +| | | | | | | | | | | | | | | | WhiteSpace 3191..3192 " " +| | | | | | | | | | | | | | BitAnd 3192..3193 +| | | | | | | | | | | | | | | BitAnd 3192..3193 "&" +| | | | | | | | | | | | | | WhiteSpace 3193..3194 +| | | | | | | | | | | | | | | WhiteSpace 3193..3194 +| | | | | | | | | | | | | | | | WhiteSpace 3193..3194 " " +| | | | | | | | | | | | | | Number 3194..3195 +| | | | | | | | | | | | | | | Number 3194..3195 +| | | | | | | | | | | | | | | | Number 3194..3195 "1" +| | | | | | | | | | | Semicolon 3195..3196 +| | | | | | | | | | | | Semicolon 3195..3196 ";" +| | | | | | | | | | EndLine 3196..3197 +| | | | | | | | | | | EndLine 3196..3197 +| | | | | | | | | | | | EndLine 3196..3197 "\n" +| | | | | | | | | | WhiteSpace 3197..3201 +| | | | | | | | | | | WhiteSpace 3197..3201 +| | | | | | | | | | | | WhiteSpace 3197..3201 " " +| | | | | | | | | | EndLine 3201..3202 +| | | | | | | | | | | EndLine 3201..3202 +| | | | | | | | | | | | EndLine 3201..3202 "\n" +| | | | | | | | | | WhiteSpace 3202..3214 +| | | | | | | | | | | WhiteSpace 3202..3214 +| | | | | | | | | | | | WhiteSpace 3202..3214 " " +| | | | | | | | | | CommentLine 3214..3237 +| | | | | | | | | | | CommentLine 3214..3237 +| | | | | | | | | | | | CommentLine 3214..3237 "// Ensure out is binary" +| | | | | | | | | | EndLine 3237..3238 +| | | | | | | | | | | EndLine 3237..3238 +| | | | | | | | | | | | EndLine 3237..3238 "\n" +| | | | | | | | | | WhiteSpace 3238..3250 +| | | | | | | | | | | WhiteSpace 3238..3250 +| | | | | | | | | | | | WhiteSpace 3238..3250 " " +| | | | | | | | | | Statement 3250..3285 +| | | | | | | | | | | Error 3250..3257 +| | | | | | | | | | | | Expression 3250..3257 +| | | | | | | | | | | | | ComponentIdentifier 3250..3253 +| | | | | | | | | | | | | | Identifier 3250..3253 +| | | | | | | | | | | | | | | Identifier 3250..3253 "out" +| | | | | | | | | | | | | LBracket 3253..3254 +| | | | | | | | | | | | | | LBracket 3253..3254 "[" +| | | | | | | | | | | | | Expression 3254..3255 +| | | | | | | | | | | | | | Identifier 3254..3255 +| | | | | | | | | | | | | | | Identifier 3254..3255 +| | | | | | | | | | | | | | | | Identifier 3254..3255 "k" +| | | | | | | | | | | | | RBracket 3255..3256 +| | | | | | | | | | | | | | RBracket 3255..3256 "]" +| | | | | | | | | | | | | WhiteSpace 3256..3257 +| | | | | | | | | | | | | | WhiteSpace 3256..3257 +| | | | | | | | | | | | | | | WhiteSpace 3256..3257 " " +| | | | | | | | | | | Error 3257..3285 +| | | | | | | | | | | | Error 3257..3285 +| | | | | | | | | | | | | Error 3257..3285 "expect Semicolon but got Mul" +| | | | | | | | | | Statement 3285..3318 +| | | | | | | | | | | Error 3285..3287 +| | | | | | | | | | | | Expression 3285..3286 +| | | | | | | | | | | | | Error 3285..3286 +| | | | | | | | | | | | | | Mul 3285..3286 +| | | | | | | | | | | | | | | Mul 3285..3286 "*" +| | | | | | | | | | | | WhiteSpace 3286..3287 +| | | | | | | | | | | | | WhiteSpace 3286..3287 +| | | | | | | | | | | | | | WhiteSpace 3286..3287 " " +| | | | | | | | | | | Error 3287..3318 +| | | | | | | | | | | | Error 3287..3318 +| | | | | | | | | | | | | Error 3287..3318 "expect Semicolon but got LParen" +| | | | | | | | | | Statement 3318..3337 +| | | | | | | | | | | AssignStatement 3318..3336 +| | | | | | | | | | | | Expression 3318..3331 +| | | | | | | | | | | | | Tuple 3318..3330 +| | | | | | | | | | | | | | LParen 3318..3319 +| | | | | | | | | | | | | | | LParen 3318..3319 "(" +| | | | | | | | | | | | | | Sub 3319..3329 +| | | | | | | | | | | | | | | ArrayQuery 3319..3325 +| | | | | | | | | | | | | | | | Identifier 3319..3322 +| | | | | | | | | | | | | | | | | Identifier 3319..3322 +| | | | | | | | | | | | | | | | | | Identifier 3319..3322 "out" +| | | | | | | | | | | | | | | | LBracket 3322..3323 +| | | | | | | | | | | | | | | | | LBracket 3322..3323 "[" +| | | | | | | | | | | | | | | | Identifier 3323..3324 +| | | | | | | | | | | | | | | | | Identifier 3323..3324 +| | | | | | | | | | | | | | | | | | Identifier 3323..3324 "k" +| | | | | | | | | | | | | | | | RBracket 3324..3325 +| | | | | | | | | | | | | | | | | RBracket 3324..3325 "]" +| | | | | | | | | | | | | | | WhiteSpace 3325..3326 +| | | | | | | | | | | | | | | | WhiteSpace 3325..3326 +| | | | | | | | | | | | | | | | | WhiteSpace 3325..3326 " " +| | | | | | | | | | | | | | | Sub 3326..3327 +| | | | | | | | | | | | | | | | Sub 3326..3327 "-" +| | | | | | | | | | | | | | | WhiteSpace 3327..3328 +| | | | | | | | | | | | | | | | WhiteSpace 3327..3328 +| | | | | | | | | | | | | | | | | WhiteSpace 3327..3328 " " +| | | | | | | | | | | | | | | Number 3328..3329 +| | | | | | | | | | | | | | | | Number 3328..3329 +| | | | | | | | | | | | | | | | | Number 3328..3329 "1" +| | | | | | | | | | | | | | RParen 3329..3330 +| | | | | | | | | | | | | | | RParen 3329..3330 ")" +| | | | | | | | | | | | | WhiteSpace 3330..3331 +| | | | | | | | | | | | | | WhiteSpace 3330..3331 +| | | | | | | | | | | | | | | WhiteSpace 3330..3331 " " +| | | | | | | | | | | | EqualSignal 3331..3334 +| | | | | | | | | | | | | EqualSignal 3331..3334 "===" +| | | | | | | | | | | | WhiteSpace 3334..3335 +| | | | | | | | | | | | | WhiteSpace 3334..3335 +| | | | | | | | | | | | | | WhiteSpace 3334..3335 " " +| | | | | | | | | | | | Expression 3335..3336 +| | | | | | | | | | | | | Number 3335..3336 +| | | | | | | | | | | | | | Number 3335..3336 +| | | | | | | | | | | | | | | Number 3335..3336 "0" +| | | | | | | | | | | Semicolon 3336..3337 +| | | | | | | | | | | | Semicolon 3336..3337 ";" +| | | | | | | | | | EndLine 3337..3338 +| | | | | | | | | | | EndLine 3337..3338 +| | | | | | | | | | | | EndLine 3337..3338 "\n" +| | | | | | | | | | WhiteSpace 3338..3342 +| | | | | | | | | | | WhiteSpace 3338..3342 +| | | | | | | | | | | | WhiteSpace 3338..3342 " " +| | | | | | | | | | EndLine 3342..3343 +| | | | | | | | | | | EndLine 3342..3343 +| | | | | | | | | | | | EndLine 3342..3343 "\n" +| | | | | | | | | | WhiteSpace 3343..3355 +| | | | | | | | | | | WhiteSpace 3343..3355 +| | | | | | | | | | | | WhiteSpace 3343..3355 " " +| | | | | | | | | | Statement 3355..3394 +| | | | | | | | | | | Error 3355..3360 +| | | | | | | | | | | | Expression 3355..3360 +| | | | | | | | | | | | | ComponentIdentifier 3355..3359 +| | | | | | | | | | | | | | Identifier 3355..3359 +| | | | | | | | | | | | | | | Identifier 3355..3359 "lout" +| | | | | | | | | | | | | WhiteSpace 3359..3360 +| | | | | | | | | | | | | | WhiteSpace 3359..3360 +| | | | | | | | | | | | | | | WhiteSpace 3359..3360 " " +| | | | | | | | | | | Error 3360..3394 +| | | | | | | | | | | | Error 3360..3394 +| | | | | | | | | | | | | Error 3360..3394 "expect Semicolon but got AddAssign" +| | | | | | | | | | Statement 3394..3432 +| | | | | | | | | | | Error 3394..3397 +| | | | | | | | | | | | Expression 3394..3396 +| | | | | | | | | | | | | Error 3394..3396 +| | | | | | | | | | | | | | AddAssign 3394..3396 +| | | | | | | | | | | | | | | AddAssign 3394..3396 "+=" +| | | | | | | | | | | | WhiteSpace 3396..3397 +| | | | | | | | | | | | | WhiteSpace 3396..3397 +| | | | | | | | | | | | | | WhiteSpace 3396..3397 " " +| | | | | | | | | | | Error 3397..3432 +| | | | | | | | | | | | Error 3397..3432 +| | | | | | | | | | | | | Error 3397..3432 "expect Semicolon but got Identifier" +| | | | | | | | | | Statement 3432..3467 +| | | | | | | | | | | Error 3432..3439 +| | | | | | | | | | | | Expression 3432..3439 +| | | | | | | | | | | | | ComponentIdentifier 3432..3435 +| | | | | | | | | | | | | | Identifier 3432..3435 +| | | | | | | | | | | | | | | Identifier 3432..3435 "out" +| | | | | | | | | | | | | LBracket 3435..3436 +| | | | | | | | | | | | | | LBracket 3435..3436 "[" +| | | | | | | | | | | | | Expression 3436..3437 +| | | | | | | | | | | | | | Identifier 3436..3437 +| | | | | | | | | | | | | | | Identifier 3436..3437 +| | | | | | | | | | | | | | | | Identifier 3436..3437 "k" +| | | | | | | | | | | | | RBracket 3437..3438 +| | | | | | | | | | | | | | RBracket 3437..3438 "]" +| | | | | | | | | | | | | WhiteSpace 3438..3439 +| | | | | | | | | | | | | | WhiteSpace 3438..3439 +| | | | | | | | | | | | | | | WhiteSpace 3438..3439 " " +| | | | | | | | | | | Error 3439..3467 +| | | | | | | | | | | | Error 3439..3467 +| | | | | | | | | | | | | Error 3439..3467 "expect Semicolon but got Mul" +| | | | | | | | | | Statement 3467..3504 +| | | | | | | | | | | Error 3467..3469 +| | | | | | | | | | | | Expression 3467..3468 +| | | | | | | | | | | | | Error 3467..3468 +| | | | | | | | | | | | | | Mul 3467..3468 +| | | | | | | | | | | | | | | Mul 3467..3468 "*" +| | | | | | | | | | | | WhiteSpace 3468..3469 +| | | | | | | | | | | | | WhiteSpace 3468..3469 +| | | | | | | | | | | | | | WhiteSpace 3468..3469 " " +| | | | | | | | | | | Error 3469..3504 +| | | | | | | | | | | | Error 3469..3504 +| | | | | | | | | | | | | Error 3469..3504 "expect Semicolon but got Identifier" +| | | | | | | | | | Statement 3504..3507 +| | | | | | | | | | | Error 3504..3506 +| | | | | | | | | | | | Expression 3504..3506 +| | | | | | | | | | | | | ComponentIdentifier 3504..3506 +| | | | | | | | | | | | | | Identifier 3504..3506 +| | | | | | | | | | | | | | | Identifier 3504..3506 "e2" +| | | | | | | | | | | Semicolon 3506..3507 +| | | | | | | | | | | | Semicolon 3506..3507 ";" +| | | | | | | | | | EndLine 3507..3508 +| | | | | | | | | | | EndLine 3507..3508 +| | | | | | | | | | | | EndLine 3507..3508 "\n" +| | | | | | | | | | WhiteSpace 3508..3512 +| | | | | | | | | | | WhiteSpace 3508..3512 +| | | | | | | | | | | | WhiteSpace 3508..3512 " " +| | | | | | | | | | EndLine 3512..3513 +| | | | | | | | | | | EndLine 3512..3513 +| | | | | | | | | | | | EndLine 3512..3513 "\n" +| | | | | | | | | | WhiteSpace 3513..3525 +| | | | | | | | | | | WhiteSpace 3513..3525 +| | | | | | | | | | | | WhiteSpace 3513..3525 " " +| | | | | | | | | | Statement 3525..3536 +| | | | | | | | | | | AssignStatement 3525..3535 +| | | | | | | | | | | | Expression 3525..3528 +| | | | | | | | | | | | | ComponentIdentifier 3525..3527 +| | | | | | | | | | | | | | Identifier 3525..3527 +| | | | | | | | | | | | | | | Identifier 3525..3527 "e2" +| | | | | | | | | | | | | WhiteSpace 3527..3528 +| | | | | | | | | | | | | | WhiteSpace 3527..3528 +| | | | | | | | | | | | | | | WhiteSpace 3527..3528 " " +| | | | | | | | | | | | Assign 3528..3529 +| | | | | | | | | | | | | Assign 3528..3529 "=" +| | | | | | | | | | | | WhiteSpace 3529..3530 +| | | | | | | | | | | | | WhiteSpace 3529..3530 +| | | | | | | | | | | | | | WhiteSpace 3529..3530 " " +| | | | | | | | | | | | Expression 3530..3535 +| | | | | | | | | | | | | Add 3530..3535 +| | | | | | | | | | | | | | Identifier 3530..3532 +| | | | | | | | | | | | | | | Identifier 3530..3532 +| | | | | | | | | | | | | | | | Identifier 3530..3532 "e2" +| | | | | | | | | | | | | | Add 3532..3533 +| | | | | | | | | | | | | | | Add 3532..3533 "+" +| | | | | | | | | | | | | | Identifier 3533..3535 +| | | | | | | | | | | | | | | Identifier 3533..3535 +| | | | | | | | | | | | | | | | Identifier 3533..3535 "e2" +| | | | | | | | | | | Semicolon 3535..3536 +| | | | | | | | | | | | Semicolon 3535..3536 ";" +| | | | | | | | | | EndLine 3536..3537 +| | | | | | | | | | | EndLine 3536..3537 +| | | | | | | | | | | | EndLine 3536..3537 "\n" +| | | | | | | | | | WhiteSpace 3537..3545 +| | | | | | | | | | | WhiteSpace 3537..3545 +| | | | | | | | | | | | WhiteSpace 3537..3545 " " +| | | | | | | | | RCurly 3545..3546 +| | | | | | | | | | RCurly 3545..3546 "}" +| | | | | | | EndLine 3546..3547 +| | | | | | | | EndLine 3546..3547 +| | | | | | | | | EndLine 3546..3547 "\n" +| | | | | | | WhiteSpace 3547..3551 +| | | | | | | | WhiteSpace 3547..3551 +| | | | | | | | | WhiteSpace 3547..3551 " " +| | | | | | | EndLine 3551..3552 +| | | | | | | | EndLine 3551..3552 +| | | | | | | | | EndLine 3551..3552 "\n" +| | | | | | | WhiteSpace 3552..3560 +| | | | | | | | WhiteSpace 3552..3560 +| | | | | | | | | WhiteSpace 3552..3560 " " +| | | | | | | CommentLine 3560..3578 +| | | | | | | | CommentLine 3560..3578 +| | | | | | | | | CommentLine 3560..3578 "// Ensure the sum;" +| | | | | | | EndLine 3578..3579 +| | | | | | | | EndLine 3578..3579 +| | | | | | | | | EndLine 3578..3579 "\n" +| | | | | | | WhiteSpace 3579..3583 +| | | | | | | | WhiteSpace 3579..3583 +| | | | | | | | | WhiteSpace 3579..3583 " " +| | | | | | | EndLine 3583..3584 +| | | | | | | | EndLine 3583..3584 +| | | | | | | | | EndLine 3583..3584 "\n" +| | | | | | | WhiteSpace 3584..3592 +| | | | | | | | WhiteSpace 3584..3592 +| | | | | | | | | WhiteSpace 3584..3592 " " +| | | | | | | Statement 3592..3605 +| | | | | | | | AssignStatement 3592..3604 +| | | | | | | | | Expression 3592..3596 +| | | | | | | | | | ComponentIdentifier 3592..3595 +| | | | | | | | | | | Identifier 3592..3595 +| | | | | | | | | | | | Identifier 3592..3595 "lin" +| | | | | | | | | | WhiteSpace 3595..3596 +| | | | | | | | | | | WhiteSpace 3595..3596 +| | | | | | | | | | | | WhiteSpace 3595..3596 " " +| | | | | | | | | EqualSignal 3596..3599 +| | | | | | | | | | EqualSignal 3596..3599 "===" +| | | | | | | | | WhiteSpace 3599..3600 +| | | | | | | | | | WhiteSpace 3599..3600 +| | | | | | | | | | | WhiteSpace 3599..3600 " " +| | | | | | | | | Expression 3600..3604 +| | | | | | | | | | Identifier 3600..3604 +| | | | | | | | | | | Identifier 3600..3604 +| | | | | | | | | | | | Identifier 3600..3604 "lout" +| | | | | | | | Semicolon 3604..3605 +| | | | | | | | | Semicolon 3604..3605 ";" +| | | | | | | EndLine 3605..3606 +| | | | | | | | EndLine 3605..3606 +| | | | | | | | | EndLine 3605..3606 "\n" +| | | | | | | WhiteSpace 3606..3610 +| | | | | | | | WhiteSpace 3606..3610 +| | | | | | | | | WhiteSpace 3606..3610 " " +| | | | | | RCurly 3610..3611 +| | | | | | | RCurly 3610..3611 "}" +| | | | EndLine 3611..3612 +| | | | | EndLine 3611..3612 +| | | | | | EndLine 3611..3612 "\n" +| | | Error 3612..3637 +| | | | Error 3612..3637 +| | | | | Error 3612..3637 "expect RCurly but got EOF" diff --git a/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__line_comment.circom.snap b/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__line_comment.circom.snap new file mode 100644 index 0000000..cb78791 --- /dev/null +++ b/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__line_comment.circom.snap @@ -0,0 +1,38 @@ +--- +source: crates/syntax/src/syntax.rs +expression: "crate::view_syntax::view_ast(&syntax)" +--- + CircomProgram 0..41 +| EndLine 0..1 +| | EndLine 0..1 +| | | EndLine 0..1 "\n" +| CommentLine 1..14 +| | CommentLine 1..14 +| | | CommentLine 1..14 "// comment :>" +| EndLine 14..15 +| | EndLine 14..15 +| | | EndLine 14..15 "\n" +| EndLine 15..16 +| | EndLine 15..16 +| | | EndLine 15..16 "\n" +| WhiteSpace 16..20 +| | WhiteSpace 16..20 +| | | WhiteSpace 16..20 " " +| Pragma 20..40 +| | Pragma 20..26 +| | | Pragma 20..26 "pragma" +| | WhiteSpace 26..27 +| | | WhiteSpace 26..27 +| | | | WhiteSpace 26..27 " " +| | Circom 27..33 +| | | Circom 27..33 "circom" +| | WhiteSpace 33..34 +| | | WhiteSpace 33..34 +| | | | WhiteSpace 33..34 " " +| | Version 34..39 +| | | Version 34..39 "2.0.0" +| | Semicolon 39..40 +| | | Semicolon 39..40 ";" +| EndLine 40..41 +| | EndLine 40..41 +| | | EndLine 40..41 "\n" diff --git a/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__pragma.circom.snap b/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__pragma.circom.snap new file mode 100644 index 0000000..f84ef6f --- /dev/null +++ b/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__pragma.circom.snap @@ -0,0 +1,19 @@ +--- +source: crates/syntax/src/syntax.rs +expression: "crate::view_syntax::view_ast(&syntax)" +--- + Pragma 0..20 +| Pragma 0..6 +| | Pragma 0..6 "pragma" +| WhiteSpace 6..7 +| | WhiteSpace 6..7 +| | | WhiteSpace 6..7 " " +| Circom 7..13 +| | Circom 7..13 "circom" +| WhiteSpace 13..14 +| | WhiteSpace 13..14 +| | | WhiteSpace 13..14 " " +| Version 14..19 +| | Version 14..19 "2.0.0" +| Semicolon 19..20 +| | Semicolon 19..20 ";" diff --git a/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__template.circom.snap b/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__template.circom.snap new file mode 100644 index 0000000..6d1a073 --- /dev/null +++ b/crates/syntax/src/snapshots/syntax__syntax__tests____src__test_files__happy__template.circom.snap @@ -0,0 +1,358 @@ +--- +source: crates/syntax/src/syntax.rs +expression: "crate::view_syntax::view_ast(&syntax)" +--- + TemplateDef 0..784 +| TemplateKw 0..8 +| | TemplateKw 0..8 "template" +| WhiteSpace 8..9 +| | WhiteSpace 8..9 +| | | WhiteSpace 8..9 " " +| TemplateName 9..20 +| | Identifier 9..20 +| | | Identifier 9..20 "MultiplierN" +| WhiteSpace 20..21 +| | WhiteSpace 20..21 +| | | WhiteSpace 20..21 " " +| LParen 21..22 +| | LParen 21..22 "(" +| ParameterList 22..30 +| | Identifier 22..23 +| | | Identifier 22..23 "N" +| | Comma 23..24 +| | | Comma 23..24 "," +| | WhiteSpace 24..25 +| | | WhiteSpace 24..25 +| | | | WhiteSpace 24..25 " " +| | Identifier 25..26 +| | | Identifier 25..26 "P" +| | Comma 26..27 +| | | Comma 26..27 "," +| | WhiteSpace 27..28 +| | | WhiteSpace 27..28 +| | | | WhiteSpace 27..28 " " +| | Identifier 28..30 +| | | Identifier 28..30 "QQ" +| RParen 30..31 +| | RParen 30..31 ")" +| WhiteSpace 31..32 +| | WhiteSpace 31..32 +| | | WhiteSpace 31..32 " " +| Block 32..784 +| | LCurly 32..33 +| | | LCurly 32..33 "{" +| | EndLine 33..34 +| | | EndLine 33..34 +| | | | EndLine 33..34 "\n" +| | WhiteSpace 34..46 +| | | WhiteSpace 34..46 +| | | | WhiteSpace 34..46 " " +| | CommentLine 46..86 +| | | CommentLine 46..86 +| | | | CommentLine 46..86 "//Declaration of signals and components." +| | EndLine 86..87 +| | | EndLine 86..87 +| | | | EndLine 86..87 "\n" +| | WhiteSpace 87..99 +| | | WhiteSpace 87..99 +| | | | WhiteSpace 87..99 " " +| | StatementList 99..783 +| | | InputSignalDecl 99..114 +| | | | SignalHeader 99..112 +| | | | | SignalKw 99..105 +| | | | | | SignalKw 99..105 "signal" +| | | | | WhiteSpace 105..106 +| | | | | | WhiteSpace 105..106 +| | | | | | | WhiteSpace 105..106 " " +| | | | | InputKw 106..111 +| | | | | | InputKw 106..111 "input" +| | | | | WhiteSpace 111..112 +| | | | | | WhiteSpace 111..112 +| | | | | | | WhiteSpace 111..112 " " +| | | | Identifier 112..114 +| | | | | Identifier 112..114 "in" +| | | Error 114..147 +| | | | Error 114..147 +| | | | | Error 114..147 "expect Semicolon but got LBracket" +| | | Statement 147..183 +| | | | Error 147..148 +| | | | | Expression 147..148 +| | | | | | Error 147..148 +| | | | | | | LBracket 147..148 +| | | | | | | | LBracket 147..148 "[" +| | | | Error 148..183 +| | | | | Error 148..183 +| | | | | | Error 148..183 "expect Semicolon but got Identifier" +| | | Statement 183..217 +| | | | Error 183..184 +| | | | | Expression 183..184 +| | | | | | ComponentIdentifier 183..184 +| | | | | | | Identifier 183..184 +| | | | | | | | Identifier 183..184 "N" +| | | | Error 184..217 +| | | | | Error 184..217 +| | | | | | Error 184..217 "expect Semicolon but got RBracket" +| | | Statement 217..219 +| | | | Error 217..218 +| | | | | Expression 217..218 +| | | | | | Error 217..218 +| | | | | | | RBracket 217..218 +| | | | | | | | RBracket 217..218 "]" +| | | | Semicolon 218..219 +| | | | | Semicolon 218..219 ";" +| | | EndLine 219..220 +| | | | EndLine 219..220 +| | | | | EndLine 219..220 "\n" +| | | WhiteSpace 220..232 +| | | | WhiteSpace 220..232 +| | | | | WhiteSpace 220..232 " " +| | | OutputSignalDecl 232..249 +| | | | SignalHeader 232..246 +| | | | | SignalKw 232..238 +| | | | | | SignalKw 232..238 "signal" +| | | | | WhiteSpace 238..239 +| | | | | | WhiteSpace 238..239 +| | | | | | | WhiteSpace 238..239 " " +| | | | | OutputKw 239..245 +| | | | | | OutputKw 239..245 "output" +| | | | | WhiteSpace 245..246 +| | | | | | WhiteSpace 245..246 +| | | | | | | WhiteSpace 245..246 " " +| | | | Identifier 246..249 +| | | | | Identifier 246..249 "out" +| | | Semicolon 249..250 +| | | | Semicolon 249..250 ";" +| | | EndLine 250..251 +| | | | EndLine 250..251 +| | | | | EndLine 250..251 "\n" +| | | WhiteSpace 251..263 +| | | | WhiteSpace 251..263 +| | | | | WhiteSpace 251..263 " " +| | | ComponentDecl 263..401 +| | | | ComponentKw 263..272 +| | | | | ComponentKw 263..272 "component" +| | | | WhiteSpace 272..273 +| | | | | WhiteSpace 272..273 +| | | | | | WhiteSpace 272..273 " " +| | | | ComponentIdentifier 273..277 +| | | | | Identifier 273..277 +| | | | | | Identifier 273..277 "comp" +| | | | Error 277..307 +| | | | | Error 277..307 +| | | | | | Error 277..307 "expect Assign but got LBracket" +| | | | TemplateName 307..341 +| | | | | Error 307..341 +| | | | | | Error 307..341 +| | | | | | | Error 307..341 "expect Identifier but got LBracket" +| | | | Error 341..371 +| | | | | Error 341..371 +| | | | | | Error 341..371 "expect LParen but got LBracket" +| | | | Error 371..401 +| | | | | Error 371..401 +| | | | | | Error 371..401 "expect RParen but got LBracket" +| | | Error 401..434 +| | | | Error 401..434 +| | | | | Error 401..434 "expect Semicolon but got LBracket" +| | | Statement 434..470 +| | | | Error 434..435 +| | | | | Expression 434..435 +| | | | | | Error 434..435 +| | | | | | | LBracket 434..435 +| | | | | | | | LBracket 434..435 "[" +| | | | Error 435..470 +| | | | | Error 435..470 +| | | | | | Error 435..470 "expect Semicolon but got Identifier" +| | | Statement 470..499 +| | | | Error 470..471 +| | | | | Expression 470..471 +| | | | | | ComponentIdentifier 470..471 +| | | | | | | Identifier 470..471 +| | | | | | | | Identifier 470..471 "N" +| | | | Error 471..499 +| | | | | Error 471..499 +| | | | | | Error 471..499 "expect Semicolon but got Sub" +| | | Statement 499..534 +| | | | Error 499..501 +| | | | | Expression 499..501 +| | | | | | Sub 499..501 +| | | | | | | Sub 499..500 +| | | | | | | | Sub 499..500 "-" +| | | | | | | Number 500..501 +| | | | | | | | Number 500..501 +| | | | | | | | | Number 500..501 "1" +| | | | Error 501..534 +| | | | | Error 501..534 +| | | | | | Error 501..534 "expect Semicolon but got RBracket" +| | | Statement 534..536 +| | | | Error 534..535 +| | | | | Expression 534..535 +| | | | | | Error 534..535 +| | | | | | | RBracket 534..535 +| | | | | | | | RBracket 534..535 "]" +| | | | Semicolon 535..536 +| | | | | Semicolon 535..536 ";" +| | | EndLine 536..537 +| | | | EndLine 536..537 +| | | | | EndLine 536..537 "\n" +| | | WhiteSpace 537..550 +| | | | WhiteSpace 537..550 +| | | | | WhiteSpace 537..550 " " +| | | EndLine 550..551 +| | | | EndLine 550..551 +| | | | | EndLine 550..551 "\n" +| | | WhiteSpace 551..563 +| | | | WhiteSpace 551..563 +| | | | | WhiteSpace 551..563 " " +| | | CommentLine 563..576 +| | | | CommentLine 563..576 +| | | | | CommentLine 563..576 "//Statements." +| | | EndLine 576..577 +| | | | EndLine 576..577 +| | | | | EndLine 576..577 "\n" +| | | WhiteSpace 577..589 +| | | | WhiteSpace 577..589 +| | | | | WhiteSpace 577..589 " " +| | | Statement 589..677 +| | | | ForLoop 589..677 +| | | | | ForKw 589..592 +| | | | | | ForKw 589..592 "for" +| | | | | LParen 592..593 +| | | | | | LParen 592..593 "(" +| | | | | VarDecl 593..602 +| | | | | | VarKw 593..596 +| | | | | | | VarKw 593..596 "var" +| | | | | | WhiteSpace 596..597 +| | | | | | | WhiteSpace 596..597 +| | | | | | | | WhiteSpace 596..597 " " +| | | | | | Identifier 597..598 +| | | | | | | Identifier 597..598 "i" +| | | | | | WhiteSpace 598..599 +| | | | | | | WhiteSpace 598..599 +| | | | | | | | WhiteSpace 598..599 " " +| | | | | | Assign 599..600 +| | | | | | | Assign 599..600 "=" +| | | | | | WhiteSpace 600..601 +| | | | | | | WhiteSpace 600..601 +| | | | | | | | WhiteSpace 600..601 " " +| | | | | | Expression 601..602 +| | | | | | | Number 601..602 +| | | | | | | | Number 601..602 +| | | | | | | | | Number 601..602 "0" +| | | | | Semicolon 602..603 +| | | | | | Semicolon 602..603 ";" +| | | | | WhiteSpace 603..604 +| | | | | | WhiteSpace 603..604 +| | | | | | | WhiteSpace 603..604 " " +| | | | | Expression 604..611 +| | | | | | LessThan 604..611 +| | | | | | | Identifier 604..605 +| | | | | | | | Identifier 604..605 +| | | | | | | | | Identifier 604..605 "i" +| | | | | | | WhiteSpace 605..606 +| | | | | | | | WhiteSpace 605..606 +| | | | | | | | | WhiteSpace 605..606 " " +| | | | | | | LessThan 606..607 +| | | | | | | | LessThan 606..607 "<" +| | | | | | | WhiteSpace 607..608 +| | | | | | | | WhiteSpace 607..608 +| | | | | | | | | WhiteSpace 607..608 " " +| | | | | | | Sub 608..611 +| | | | | | | | Identifier 608..609 +| | | | | | | | | Identifier 608..609 +| | | | | | | | | | Identifier 608..609 "N" +| | | | | | | | Sub 609..610 +| | | | | | | | | Sub 609..610 "-" +| | | | | | | | Number 610..611 +| | | | | | | | | Number 610..611 +| | | | | | | | | | Number 610..611 "1" +| | | | | Semicolon 611..612 +| | | | | | Semicolon 611..612 ";" +| | | | | WhiteSpace 612..613 +| | | | | | WhiteSpace 612..613 +| | | | | | | WhiteSpace 612..613 " " +| | | | | Error 613..614 +| | | | | | Expression 613..614 +| | | | | | | ComponentIdentifier 613..614 +| | | | | | | | Identifier 613..614 +| | | | | | | | | Identifier 613..614 "i" +| | | | | Error 614..643 +| | | | | | Error 614..643 +| | | | | | | Error 614..643 "expect RParen but got UnitInc" +| | | | | Error 643..646 +| | | | | | Expression 643..646 +| | | | | | | UnitInc 643..646 +| | | | | | | | UnitInc 643..645 +| | | | | | | | | UnitInc 643..645 "++" +| | | | | | | | Error 645..646 +| | | | | | | | | RParen 645..646 +| | | | | | | | | | RParen 645..646 ")" +| | | | | Error 646..677 +| | | | | | Error 646..677 +| | | | | | | Error 646..677 "expect Semicolon but got LCurly" +| | | Statement 677..765 +| | | | Block 677..765 +| | | | | LCurly 677..678 +| | | | | | LCurly 677..678 "{" +| | | | | EndLine 678..679 +| | | | | | EndLine 678..679 +| | | | | | | EndLine 678..679 "\n" +| | | | | WhiteSpace 679..695 +| | | | | | WhiteSpace 679..695 +| | | | | | | WhiteSpace 679..695 " " +| | | | | StatementList 695..764 +| | | | | | Statement 695..751 +| | | | | | | AssignStatement 695..750 +| | | | | | | | Expression 695..703 +| | | | | | | | | ComponentIdentifier 695..699 +| | | | | | | | | | Identifier 695..699 +| | | | | | | | | | | Identifier 695..699 "comp" +| | | | | | | | | LBracket 699..700 +| | | | | | | | | | LBracket 699..700 "[" +| | | | | | | | | Expression 700..701 +| | | | | | | | | | Identifier 700..701 +| | | | | | | | | | | Identifier 700..701 +| | | | | | | | | | | | Identifier 700..701 "i" +| | | | | | | | | RBracket 701..702 +| | | | | | | | | | RBracket 701..702 "]" +| | | | | | | | | WhiteSpace 702..703 +| | | | | | | | | | WhiteSpace 702..703 +| | | | | | | | | | | WhiteSpace 702..703 " " +| | | | | | | | Assign 703..704 +| | | | | | | | | Assign 703..704 "=" +| | | | | | | | WhiteSpace 704..705 +| | | | | | | | | WhiteSpace 704..705 +| | | | | | | | | | WhiteSpace 704..705 " " +| | | | | | | | Expression 705..750 +| | | | | | | | | Call 705..750 +| | | | | | | | | | Identifier 705..716 +| | | | | | | | | | | Identifier 705..716 +| | | | | | | | | | | | Identifier 705..716 "Multiplier2" +| | | | | | | | | | Tuple 716..750 +| | | | | | | | | | | LParen 716..717 +| | | | | | | | | | | | LParen 716..717 "(" +| | | | | | | | | | | Error 717..749 +| | | | | | | | | | | | Error 717..749 +| | | | | | | | | | | | | Error 717..749 "expect Identifier but got RParen" +| | | | | | | | | | | RParen 749..750 +| | | | | | | | | | | | RParen 749..750 ")" +| | | | | | | Semicolon 750..751 +| | | | | | | | Semicolon 750..751 ";" +| | | | | | EndLine 751..752 +| | | | | | | EndLine 751..752 +| | | | | | | | EndLine 751..752 "\n" +| | | | | | WhiteSpace 752..764 +| | | | | | | WhiteSpace 752..764 +| | | | | | | | WhiteSpace 752..764 " " +| | | | | RCurly 764..765 +| | | | | | RCurly 764..765 "}" +| | | EndLine 765..766 +| | | | EndLine 765..766 +| | | | | EndLine 765..766 "\n" +| | | WhiteSpace 766..782 +| | | | WhiteSpace 766..782 +| | | | | WhiteSpace 766..782 " " +| | | EndLine 782..783 +| | | | EndLine 782..783 +| | | | | EndLine 782..783 "\n" +| | RCurly 783..784 +| | | RCurly 783..784 "}" diff --git a/crates/syntax/src/syntax.rs b/crates/syntax/src/syntax.rs index ded3cc3..08acdf5 100644 --- a/crates/syntax/src/syntax.rs +++ b/crates/syntax/src/syntax.rs @@ -1,9 +1,15 @@ +use parser::grammar::entry::Scope; use parser::input::Input; use parser::output::{Child, Output}; use parser::parser::Parser; use parser::token_kind::TokenKind; use rowan::{GreenNode, GreenNodeBuilder}; +pub use rowan::{ + api::Preorder, Direction, NodeOrToken, SyntaxText, TextRange, TextSize, TokenAtOffset, + WalkEvent, +}; + use crate::syntax_node::SyntaxNode; pub struct SyntaxTreeBuilder<'a> { @@ -65,355 +71,60 @@ impl<'a> SyntaxTreeBuilder<'a> { } } -#[cfg(test)] -mod tests { - use std::hash::{DefaultHasher, Hash, Hasher}; - - use rowan::ast::AstNode; - - use crate::{abstract_syntax_tree::AstCircomProgram, test_programs}; - - use super::SyntaxTreeBuilder; - - fn ast_from_source(source: &str) -> AstCircomProgram { - let syntax = SyntaxTreeBuilder::syntax_tree(source); - AstCircomProgram::cast(syntax).unwrap() - } - - fn children_from_ast(ast: &AstCircomProgram) -> Vec { - let children = ast - .syntax() - .first_child() - .unwrap() - .siblings(rowan::Direction::Next) - .into_iter() - .map(|child| child.text().to_string()) - .collect(); - - children - } - - fn pragma_string_from_ast(ast: &AstCircomProgram) -> String { - ast.pragma().unwrap().syntax().text().to_string() - } - - fn pragma_version_from_ast(ast: &AstCircomProgram) -> String { - ast.pragma() - .unwrap() - .version() - .unwrap() - .syntax() - .text() - .to_string() - } - - fn template_names_from_ast(ast: &AstCircomProgram) -> Vec { - let templates = ast - .template_list() - .iter() - .map(|template| template.name().unwrap().syntax().text().to_string()) - .collect(); - - templates - } - - fn function_names_from_ast(ast: &AstCircomProgram) -> Vec { - let functions = ast - .function_list() - .iter() - .map(|function| { - function - .function_name() - .unwrap() - .syntax() - .text() - .to_string() - }) - .collect(); - - functions - } - - #[test] - fn syntax_test_1() { - let ast = ast_from_source(test_programs::PARSER_TEST_1); - - // check_ast_children - let children = children_from_ast(&ast); - insta::assert_yaml_snapshot!("syntax_test_1_children", children); - - // check pragma - let pragma = pragma_string_from_ast(&ast); - insta::assert_yaml_snapshot!(pragma, @"pragma circom 2.0.0;"); - - // check ast hash - let mut hasher = DefaultHasher::default(); - ast.syntax().hash(&mut hasher); - let _ast_hash = hasher.finish(); - - // check template hash - let mut h1 = DefaultHasher::default(); - let mut h2 = DefaultHasher::default(); - - let template = ast.template_list(); - - template[0].syntax().hash(&mut h1); - template[1].syntax().hash(&mut h2); - - assert_ne!( - h1.finish(), - h2.finish(), - "Templates with same syntax should have different hashes!" - ); - - // check template syntax (text & green node) - assert_eq!( - template[0].syntax().text(), - template[1].syntax().text(), - "The syntax (as text) of template 1 and 2 must be the same!" - ); - assert_eq!( - template[0].syntax().green(), - template[1].syntax().green(), - "The syntax (as green node) of template 1 and 2 must be the same!!" - ); - } - - #[test] - fn syntax_test_2() { - let ast = ast_from_source(test_programs::PARSER_TEST_2); - - let pragma = pragma_string_from_ast(&ast); - insta::assert_yaml_snapshot!(pragma, @"pragma circom 2.0.0;"); - - let function_names = function_names_from_ast(&ast); - insta::assert_yaml_snapshot!("syntax_test_2_functions", function_names); - - let template_names = template_names_from_ast(&ast); - insta::assert_yaml_snapshot!("syntax_test_2_templates", template_names); - } - - #[test] - fn syntax_test_3() { - let ast = ast_from_source(test_programs::PARSER_TEST_3); - let pragma = pragma_string_from_ast(&ast); - insta::assert_yaml_snapshot!(pragma, @"pragma circom 2.0.0;"); - - let pragma_version = pragma_version_from_ast(&ast); - insta::assert_yaml_snapshot!(pragma_version, @"2.0.0"); - } - - #[test] - fn syntax_test_4() { - let ast = ast_from_source(test_programs::PARSER_TEST_4); - let pragma = pragma_string_from_ast(&ast); - insta::assert_yaml_snapshot!(pragma, @"pragma circom 2.0.0;"); - - let pragma_version = pragma_version_from_ast(&ast); - insta::assert_yaml_snapshot!(pragma_version, @"2.0.0"); - } - - #[test] - fn syntax_test_5() { - let ast = ast_from_source(test_programs::PARSER_TEST_5); - let pragma = ast.pragma().is_none(); - insta::assert_yaml_snapshot!(pragma, @"true"); +pub fn syntax_node_from_source(source: &str, scope: Scope) -> SyntaxNode { + let input = Input::new(&source); + let output = Parser::parsing_with_scope(&input, scope); - let template_names = template_names_from_ast(&ast); - insta::assert_yaml_snapshot!("syntax_test_5_templates", template_names); - } + // output is a tree whose node is index of token, no content of token + // convert output into green node + let mut builder = SyntaxTreeBuilder::new(&input); + builder.build(output); + let green = builder.finish(); - #[test] - fn syntax_test_6() { - let ast = ast_from_source(test_programs::PARSER_TEST_6); - let pragma = ast.pragma().is_none(); - insta::assert_yaml_snapshot!(pragma, @"true"); + // then cast green node into syntax node + let syntax = SyntaxNode::new_root(green); - let template_names = template_names_from_ast(&ast); - insta::assert_yaml_snapshot!("syntax_test_6_templates", template_names); - } + syntax } #[cfg(test)] -mod grammar_tests { - - use crate::{ - abstract_syntax_tree::{AstBlock, AstOutputSignalDecl, AstPragma, AstTemplateDef}, - syntax::SyntaxTreeBuilder, - syntax_node::CircomLanguage, - }; - use parser::{grammar::entry::Scope, input::Input, parser::Parser}; - use rowan::{ast::AstNode, SyntaxNode}; - - fn syntax_node_from_source(source: &str, scope: Scope) -> SyntaxNode { - let input = Input::new(&source); - let output = Parser::parsing_with_scope(&input, scope); - - // output is a tree whose node is index of token, no content of token - // convert output into green node - let mut builder = SyntaxTreeBuilder::new(&input); - builder.build(output); - let green = builder.finish(); - - // then cast green node into syntax node - let syntax = SyntaxNode::new_root(green); - - syntax - } +mod tests { + use crate::test_syntax; + use parser::grammar::entry::Scope; #[test] fn pragma_happy_test() { - // parse source (string) into output tree - let version = r#"2.0.1"#; - let source = format!(r#"pragma circom {};"#, version); - - let syntax = syntax_node_from_source(&source, Scope::Pragma); - - // cast syntax node into ast node to retrieve more information - let pragma = AstPragma::cast(syntax).expect("Can not cast syntax node into ast pragma"); - - // finally, assert with expect value - let pragma_versison_kind = pragma.version().unwrap().syntax().kind(); - insta::assert_yaml_snapshot!(pragma_versison_kind, @"Version"); - - let pragma_versison_text = pragma.version().unwrap().syntax().text().to_string(); - insta::assert_yaml_snapshot!(pragma_versison_text, @"2.0.1"); + test_syntax!("/src/test_files/happy/pragma.circom", Scope::Pragma); } #[test] fn template_happy_test() { // SOURCE & EXPECTED RESULT - const SOURCE: &str = r#"template MultiplierN (N, P, QQ) { - //Declaration of signals and components. - signal input in[N]; - signal output out; - component comp[N-1]; - - //Statements. - for(var i = 0; i < N-1; i++){ - comp[i] = Multiplier2(); - } - - // ... some more code (see below) - - }"#; - - let syntax = syntax_node_from_source(&SOURCE, Scope::Template); - - // cast syntax node into ast node to retrieve more information - let template = - AstTemplateDef::cast(syntax).expect("Can not cast syntax node into ast template"); - - // finally, assert with expect value - - // name - let name = template - .name() - .expect("Can not extract template name") - .syntax() - .text() - .to_string(); - insta::assert_yaml_snapshot!(name, @"MultiplierN"); - - // parameter list - let first_param = template - .parameter_list() - .expect("Can not detect parameter list") - .syntax() - .first_child() - .unwrap() - .text() - .to_string(); - insta::assert_yaml_snapshot!(first_param, @"N"); - - let last_param = template - .parameter_list() - .expect("Can not detect parameter list") - .syntax() - .last_child() - .unwrap() - .text() - .to_string(); - insta::assert_yaml_snapshot!(last_param, @"QQ"); - - // statements - let statements = template.statements().unwrap(); - let output_signal = statements.find_children::(); - println!("{:?}", output_signal); - - let statements: Vec = statements - .statement_list() - .into_iter() - .map(|statement| statement.syntax().text().to_string()) - .collect(); - insta::assert_yaml_snapshot!("template_happy_test_statements", statements); - - // input signal - let input_signal = template - .find_input_signal("in") - .unwrap() - .syntax() - .text() - .to_string(); - insta::assert_yaml_snapshot!(input_signal, @"signal input in[N];"); - - // output signal - let output_signal = template - .find_output_signal("out") - .unwrap() - .syntax() - .text() - .to_string(); - insta::assert_yaml_snapshot!(output_signal, @"signal output out;"); - - // internal signal - let internal_signal = template.find_internal_signal("in").is_none(); - insta::assert_yaml_snapshot!(internal_signal, @"true"); - - // component - let component = template - .find_component("comp") - .unwrap() - .syntax() - .text() - .to_string(); - insta::assert_yaml_snapshot!(component, @"component comp[N-1];"); + test_syntax!("/src/test_files/happy/template.circom", Scope::Template); } #[test] fn block_happy_test() { - // SOURCE & EXPECTED RESULT - let source = r#"{ - //Declaration of signals. - signal input in[N]; - signal output out; - component comp[N-1]; - - //Statements. - for(var i = 0; i < N-1; i++){ - comp[i] = Multiplier2(); - } - comp[0].in1 <== in[0]; - comp[0].in2 <== in[1]; - for(var i = 0; i < N-2; i++){ - comp[i+1].in1 <== comp[i].out; - comp[i+1].in2 <== in[i+2]; - - } - out <== comp[N-2].out; - }"#; - - let syntax = syntax_node_from_source(&source, Scope::Block); + test_syntax!("/src/test_files/happy/block.circom", Scope::Block); + } - // cast syntax node into ast node to retrieve more information - let block = AstBlock::cast(syntax).expect("Can not cast syntax node into ast block"); + #[test] + fn comment_happy_test() { + test_syntax!( + "/src/test_files/happy/block_comment.circom", + Scope::CircomProgram + ); + test_syntax!( + "/src/test_files/happy/line_comment.circom", + Scope::CircomProgram + ); + } - // finally, assert with expect statements - let statements = block.statement_list().unwrap().statement_list(); - let statements: Vec = statements - .into_iter() - .map(|statement| statement.syntax().text().to_string()) - .collect(); - insta::assert_yaml_snapshot!("block_happy_test_statements", statements); + #[test] + fn full_circom_program() { + test_syntax!( + "/src/test_files/happy/full_circom_program.circom", + Scope::CircomProgram + ); } } diff --git a/crates/syntax/src/test_files/happy/block.circom b/crates/syntax/src/test_files/happy/block.circom new file mode 100644 index 0000000..fdfa1a7 --- /dev/null +++ b/crates/syntax/src/test_files/happy/block.circom @@ -0,0 +1,19 @@ +{ + //Declaration of signals. + signal input in[N]; + signal output out; + component comp[N-1]; + + //Statements. + for(var i = 0; i < N-1; i++){ + comp[i] = Multiplier2(); + } + comp[0].in1 <== in[0]; + comp[0].in2 <== in[1]; + for(var i = 0; i < N-2; i++){ + comp[i+1].in1 <== comp[i].out; + comp[i+1].in2 <== in[i+2]; + + } + out <== comp[N-2].out; + } \ No newline at end of file diff --git a/crates/syntax/src/test_files/happy/block_comment.circom b/crates/syntax/src/test_files/happy/block_comment.circom new file mode 100644 index 0000000..603f889 --- /dev/null +++ b/crates/syntax/src/test_files/happy/block_comment.circom @@ -0,0 +1,6 @@ + +/* +comment +blocks +*/ +pragma circom 2.0.0; \ No newline at end of file diff --git a/crates/syntax/src/test_files/happy/empty_template.circom b/crates/syntax/src/test_files/happy/empty_template.circom new file mode 100644 index 0000000..e69de29 diff --git a/crates/syntax/src/test_programs.rs b/crates/syntax/src/test_files/happy/full_circom_program.circom similarity index 81% rename from crates/syntax/src/test_programs.rs rename to crates/syntax/src/test_files/happy/full_circom_program.circom index 655222f..d2a7757 100644 --- a/crates/syntax/src/test_programs.rs +++ b/crates/syntax/src/test_files/happy/full_circom_program.circom @@ -1,11 +1,4 @@ -pub const PARSER_TEST_1: &str = r#"pragma circom 2.0.0; - - - template Multiplier2 () {} - template Multiplier2 () {} - "#; - -pub const PARSER_TEST_2: &str = r#"/* +/* Copyright 2018 0KIMS association. This file is part of circom (Zero Knowledge Circuit Compiler). @@ -104,31 +97,3 @@ template BinSum(n, ops) { lin === lout; } - "#; - -pub const PARSER_TEST_3: &str = r#" - -// comment :> - - pragma circom 2.0.0; - - "#; - -pub const PARSER_TEST_4: &str = r#" - -/* -comment -blocks -*/ -pragma circom 2.0.0; - "#; - -pub const PARSER_TEST_5: &str = r#" -// no pragma here - template Multiplier2 () {} - "#; - -pub const PARSER_TEST_6: &str = r#" -/* T _ T */ - template Multiplier2 () {} - "#; diff --git a/crates/syntax/src/test_files/happy/line_comment.circom b/crates/syntax/src/test_files/happy/line_comment.circom new file mode 100644 index 0000000..d293753 --- /dev/null +++ b/crates/syntax/src/test_files/happy/line_comment.circom @@ -0,0 +1,4 @@ + +// comment :> + + pragma circom 2.0.0; diff --git a/crates/syntax/src/test_files/happy/no_pragma.circom b/crates/syntax/src/test_files/happy/no_pragma.circom new file mode 100644 index 0000000..678dd3d --- /dev/null +++ b/crates/syntax/src/test_files/happy/no_pragma.circom @@ -0,0 +1,2 @@ +// no pragma here + template Multiplier2 () {} \ No newline at end of file diff --git a/crates/syntax/src/test_files/happy/pragma.circom b/crates/syntax/src/test_files/happy/pragma.circom new file mode 100644 index 0000000..8a5d3da --- /dev/null +++ b/crates/syntax/src/test_files/happy/pragma.circom @@ -0,0 +1 @@ +pragma circom 2.0.0; diff --git a/crates/syntax/src/test_files/happy/template.circom b/crates/syntax/src/test_files/happy/template.circom new file mode 100644 index 0000000..ad25810 --- /dev/null +++ b/crates/syntax/src/test_files/happy/template.circom @@ -0,0 +1,13 @@ +template MultiplierN (N, P, QQ) { + //Declaration of signals and components. + signal input in[N]; + signal output out; + component comp[N-1]; + + //Statements. + for(var i = 0; i < N-1; i++){ + comp[i] = Multiplier2(); + } + +} + \ No newline at end of file diff --git a/crates/syntax/src/utils.rs b/crates/syntax/src/utils.rs index e69de29..76de9f3 100644 --- a/crates/syntax/src/utils.rs +++ b/crates/syntax/src/utils.rs @@ -0,0 +1,10 @@ +#[macro_export] +macro_rules! test_syntax { + ($file_path:expr, $scope: expr) => { + let crate_path = std::env::var("CARGO_MANIFEST_DIR").unwrap(); + let full_path = format!("{}{}", crate_path, $file_path); + let source = std::fs::read_to_string(full_path).expect("Should not failed"); + let syntax = crate::syntax::syntax_node_from_source(&source, $scope); + insta::assert_snapshot!($file_path, crate::view_syntax::view_ast(&syntax)); + }; +} diff --git a/crates/syntax/src/view_syntax.rs b/crates/syntax/src/view_syntax.rs new file mode 100644 index 0000000..35edfb6 --- /dev/null +++ b/crates/syntax/src/view_syntax.rs @@ -0,0 +1,52 @@ +use crate::syntax_node::{SyntaxNode, SyntaxToken}; + +pub use rowan::{ + api::Preorder, Direction, GreenNode, NodeOrToken, SyntaxText, TextRange, TextSize, + TokenAtOffset, WalkEvent, +}; + +fn level_str(level: u32) -> String { + let mut ans = String::from(""); + + for _i in 0..level { + ans.push_str("| "); + } + ans +} + +pub(crate) fn view_ast(node: &SyntaxNode) -> String { + let mut level = 0; + let mut result = String::new(); + for event in node.preorder_with_tokens() { + match event { + WalkEvent::Enter(it) => { + match it { + NodeOrToken::Node(node) => { + result.push_str(&format!( + "{} {:?} {:?}", + level_str(level), + node.kind(), + node.text_range() + )); + } + NodeOrToken::Token(token) => { + result.push_str(&format!( + "{} {:?} {:?} {:?}", + level_str(level), + token.kind(), + token.text_range(), + token.text() + )); + } + } + result.push('\n'); + level = level + 1; + } + + WalkEvent::Leave(_it) => { + level = level - 1; + } + } + } + return result; +}