├── .github └── workflows │ └── run-tests.yml ├── .gitignore ├── LICENSE ├── Makesurefile ├── README.md ├── build.gradle ├── doc ├── parser_quirks.md └── variables_resolution.md ├── gen_std.awk ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── makesure ├── materials └── opengroup_grammar.txt ├── screenshot1.png ├── settings.gradle ├── src ├── main │ ├── java │ │ └── intellij_awk │ │ │ ├── Awk.bnf │ │ │ ├── Awk.flex │ │ │ ├── AwkBraceMatcher.java │ │ │ ├── AwkChooseByNameContributorFunctions.java │ │ │ ├── AwkChooseByNameContributorGlobalVars.java │ │ │ ├── AwkCodeStyleSettings.java │ │ │ ├── AwkCodeStyleSettingsProvider.java │ │ │ ├── AwkCodeStyleSettingsProviderLanguage.java │ │ │ ├── AwkColorSettingsPage.java │ │ │ ├── AwkCommenter.java │ │ │ ├── AwkCompletionContributorBase.java │ │ │ ├── AwkCompletionContributorFunctions.java │ │ │ ├── AwkCompletionContributorKeywords.java │ │ │ ├── AwkCompletionContributorStrings.java │ │ │ ├── AwkCompletionContributorVariables.java │ │ │ ├── AwkDocumentationProvider.java │ │ │ ├── AwkEnterAfterUnmatchedBraceHandler.java │ │ │ ├── AwkFileType.java │ │ │ ├── AwkFindUsagesProvider.java │ │ │ ├── AwkFormattingBlock.java │ │ │ ├── AwkFormattingModelBuilder.java │ │ │ ├── AwkFunctions.java │ │ │ ├── AwkIcons.java │ │ │ ├── AwkInspectionDeclareLocalVariable.java │ │ │ ├── AwkInspectionDuplicateFunction.java │ │ │ ├── AwkInspectionDuplicateFunctionParam.java │ │ │ ├── AwkInspectionEnforceGlobalVariableNaming.java │ │ │ ├── AwkInspectionUnnecessarySemicolon.java │ │ │ ├── AwkInspectionUnresolvedFunction.java │ │ │ ├── AwkInspectionUnresolvedInclude.java │ │ │ ├── AwkInspectionUnusedFunction.java │ │ │ ├── AwkInspectionUnusedFunctionParam.java │ │ │ ├── AwkInspectionUnusedGlobalVariable.java │ │ │ ├── AwkInspectionUtil.java │ │ │ ├── AwkLanguage.java │ │ │ ├── AwkLexerAdapter.java │ │ │ ├── AwkParameterInfoHandler.java │ │ │ ├── AwkParserDefinition.java │ │ │ ├── AwkQuoteHandler.java │ │ │ ├── AwkRefactoringSupportProvider.java │ │ │ ├── AwkReferenceFunction.java │ │ │ ├── AwkReferenceIncludePath.java │ │ │ ├── AwkReferenceVariable.java │ │ │ ├── AwkStructureViewElement.java │ │ │ ├── AwkStructureViewFactory.java │ │ │ ├── AwkStructureViewModel.java │ │ │ ├── AwkSyntaxHighlighter.java │ │ │ ├── AwkSyntaxHighlighterFactory.java │ │ │ ├── AwkUtil.java │ │ │ ├── AwkVariables.java │ │ │ ├── Util.java │ │ │ └── psi │ │ │ ├── AwkBeginEndMixin.java │ │ │ ├── AwkElementFactory.java │ │ │ ├── AwkElementType.java │ │ │ ├── AwkFile.java │ │ │ ├── AwkFunctionCallNameMixin.java │ │ │ ├── AwkFunctionNameMixin.java │ │ │ ├── AwkFunctionNameStub.java │ │ │ ├── AwkFunctionNameStubElementType.java │ │ │ ├── AwkFunctionNameStubImpl.java │ │ │ ├── AwkIncludePathMixin.java │ │ │ ├── AwkNamedElement.java │ │ │ ├── AwkNamedElementImpl.java │ │ │ ├── AwkNamedStubBasedPsiElementBase.java │ │ │ ├── AwkStringMixin.java │ │ │ ├── AwkTokenType.java │ │ │ ├── AwkUserVarNameDeclaration.java │ │ │ ├── AwkUserVarNameMixin.java │ │ │ ├── AwkUserVarNameStub.java │ │ │ ├── AwkUserVarNameStubElementType.java │ │ │ └── AwkUserVarNameStubImpl.java │ └── resources │ │ ├── META-INF │ │ ├── plugin.xml │ │ └── pluginIcon.svg │ │ ├── icons │ │ ├── a-16.png │ │ ├── a.png │ │ ├── play.png │ │ └── stop.png │ │ ├── inspectionDescriptions │ │ ├── AwkInspectionDeclareLocalVariable.html │ │ ├── AwkInspectionDuplicateFunction.html │ │ ├── AwkInspectionDuplicateFunctionParam.html │ │ ├── AwkInspectionEnforceGlobalVariableNaming.html │ │ ├── AwkInspectionUnnecessarySemicolon.html │ │ ├── AwkInspectionUnresolvedFunction.html │ │ ├── AwkInspectionUnresolvedInclude.html │ │ ├── AwkInspectionUnusedFunction.html │ │ ├── AwkInspectionUnusedFunctionParam.html │ │ └── AwkInspectionUnusedGlobalVariable.html │ │ └── std.awk └── test │ ├── java │ └── intellij_awk │ │ ├── AwkAutoFormatTests.java │ │ ├── AwkAutoIndentTests.java │ │ ├── AwkBracesAndQuoteAutoCloseTests.java │ │ ├── AwkCompletionTests.java │ │ ├── AwkDocumentationProviderTests.java │ │ ├── AwkEnsurePinsTests.java │ │ ├── AwkFindUsagesTests.java │ │ ├── AwkIncludesTests.java │ │ ├── AwkInspectionTests.java │ │ ├── AwkLexerTests.java │ │ ├── AwkMixinLogicTests.java │ │ ├── AwkParameterInfoHandlerTests.java │ │ ├── AwkParserPerformanceTests.java │ │ ├── AwkParserTests.java │ │ ├── AwkParserTestsAwkBook.java │ │ ├── AwkParserTestsGawk.java │ │ ├── AwkParserTestsGawk1.java │ │ ├── AwkRenameTests.java │ │ ├── AwkShebangTests.java │ │ ├── ExternalFileConfigurer.java │ │ ├── ParsingTestCaseBase.java │ │ ├── UtilTests.java │ │ └── psi │ │ └── AwkStringMixinTests.java │ └── testData │ ├── auto_format │ ├── commaInArrIndex.awk │ ├── commaInArrIndexAfter.awk │ ├── commaInFuncCall.awk │ ├── commaInFuncCallAfter.awk │ ├── commaInFuncParamsNoChange.awk │ ├── commaInFuncParamsNoChangeAfter.awk │ ├── commaInIfIn.awk │ ├── commaInIfInAfter.awk │ ├── file1.awk │ ├── file10.awk │ ├── file10After.awk │ ├── file11.awk │ ├── file11After.awk │ ├── file12.awk │ ├── file12After.awk │ ├── file13_0.awk │ ├── file13_0After.awk │ ├── file13_1.awk │ ├── file13_1After.awk │ ├── file13_2.awk │ ├── file13_2After.awk │ ├── file1After.awk │ ├── file2_0.awk │ ├── file2_0After.awk │ ├── file2_1.awk │ ├── file2_1After.awk │ ├── file3.awk │ ├── file3After.awk │ ├── file4_0.awk │ ├── file4_0After.awk │ ├── file4_1.awk │ ├── file4_1After.awk │ ├── file5.awk │ ├── file5After.awk │ ├── file6.awk │ ├── file6After.awk │ ├── file7.awk │ ├── file7After.awk │ ├── file8.awk │ ├── file8After.awk │ ├── file9.awk │ ├── file9After.awk │ ├── gawk_switch1.awk │ ├── gawk_switch1After.awk │ ├── gawk_switch2.awk │ ├── gawk_switch2After.awk │ ├── issue100.awk │ ├── issue100After.awk │ ├── issue224For.awk │ └── issue224ForAfter.awk │ ├── auto_indent │ ├── file1.awk │ ├── file10.awk │ ├── file10After.awk │ ├── file11.awk │ ├── file11After.awk │ ├── file12_0.awk │ ├── file12_0After.awk │ ├── file12_1.awk │ ├── file12_1After.awk │ ├── file13.awk │ ├── file13After.awk │ ├── file1After.awk │ ├── file2.awk │ ├── file2After.awk │ ├── file3.awk │ ├── file3After.awk │ ├── file4.awk │ ├── file4After.awk │ ├── file5.awk │ ├── file5After.awk │ ├── file6.awk │ ├── file6After.awk │ ├── file7.awk │ ├── file7After.awk │ ├── file8.awk │ ├── file8After.awk │ ├── file8_1.awk │ ├── file8_1After.awk │ ├── file9.awk │ ├── file9After.awk │ ├── gawk_switch1.awk │ ├── gawk_switch1After.awk │ ├── gawk_switch2.awk │ ├── gawk_switch2After.awk │ ├── gawk_switch3.awk │ ├── gawk_switch3After.awk │ ├── gawk_switch4.awk │ ├── gawk_switch4After.awk │ ├── gawk_switch5.awk │ ├── gawk_switch5After.awk │ ├── gawk_switch6.awk │ └── gawk_switch6After.awk │ ├── includes │ ├── a.awk │ ├── b.awk │ ├── c.awk │ ├── d.awk │ ├── x │ │ ├── x1.awk │ │ ├── x2.awk │ │ └── x3.awk │ └── y │ │ ├── y1.awk │ │ ├── y2.awk │ │ └── y3.awk │ ├── inspection │ ├── declareLocal1_0.awk │ ├── declareLocal1_0After.awk │ ├── declareLocal1_1.awk │ ├── declareLocal2_0.awk │ ├── declareLocal2_0After.awk │ ├── declareLocal2_1.awk │ ├── declareLocal2_1After.awk │ ├── declareLocal2_2.awk │ ├── declareLocal2_2After.awk │ ├── declareLocal2_3.awk │ ├── declareLocal2_3After.awk │ ├── declareLocal2_4.awk │ ├── declareLocal2_4After.awk │ ├── declareLocalNoProblem1.awk │ ├── declareLocalNoProblem2.awk │ ├── dupFunctions1.awk │ ├── dupFunctions2.awk │ ├── dupFunctionsNotReportedUnused.awk │ ├── dupFunctionsRegression180.awk │ ├── duplicateFunctionParam1.awk │ ├── duplicateFunctionParam2.awk │ ├── enforceGlobalVarNaming1.awk │ ├── enforceGlobalVarNaming1After.awk │ ├── enforceGlobalVarNaming2.awk │ ├── enforceGlobalVarNaming2After.awk │ ├── enforceGlobalVarNaming3.awk │ ├── enforceGlobalVarNaming3After.awk │ ├── funcRefToPreventUnusedFunc1.awk │ ├── funcRefToPreventUnusedFunc1_1.awk │ ├── funcRefToPreventUnusedFunc1_1After.awk │ ├── funcRefToPreventUnusedFunc2.awk │ ├── funcRefToPreventUnusedFunc2_1.awk │ ├── funcRefToPreventUnusedFunc2_1After.awk │ ├── funcRefToPreventUnusedFunc3.awk │ ├── funcRefToPreventUnusedFunc3_1.awk │ ├── funcRefToPreventUnusedFunc3_1After.awk │ ├── funcRefToPreventUnusedFunc4.awk │ ├── funcRefToPreventUnusedFunc4_1.awk │ ├── funcRefToPreventUnusedFunc4_1After.awk │ ├── unnecessarySemicolon1.awk │ ├── unnecessarySemicolon1After.awk │ ├── unnecessarySemicolon2.awk │ ├── unnecessarySemicolon2After.awk │ ├── unnecessarySemicolon3.awk │ ├── unnecessarySemicolon3After.awk │ ├── unnecessarySemicolonNecessary1.awk │ ├── unnecessarySemicolonNecessary2.awk │ ├── unnecessarySemicolonNecessary3.awk │ ├── unnecessarySemicolonNecessary4.awk │ ├── unresolvedFunctionCall1.awk │ ├── unresolvedFunctionCall1After.awk │ ├── unresolvedFunctionCall2.awk │ ├── unresolvedFunctionCall3.awk │ ├── unresolvedFunctionCall4.awk │ ├── unresolvedFunctionCall4After.awk │ ├── unresolvedInclude1.awk │ ├── unresolvedIncludeNoProblem1.awk │ ├── unresolvedIncludeNoProblem2.awk │ ├── unusedFunction1.awk │ ├── unusedFunction1After.awk │ ├── unusedFunction2Recursive.awk │ ├── unusedFunction2RecursiveAfter.awk │ ├── unusedFunctionParam1.awk │ ├── unusedFunctionParam1After.awk │ ├── unusedFunctionParam2_0.awk │ ├── unusedFunctionParam2_0After.awk │ ├── unusedFunctionParam2_1.awk │ ├── unusedFunctionParam2_1After.awk │ ├── unusedFunctionParam3_0.awk │ ├── unusedFunctionParam3_0After.awk │ ├── unusedFunctionParam3_1.awk │ ├── unusedFunctionParam3_1After.awk │ ├── unusedFunctionParam4.awk │ ├── unusedFunctionParam4After.awk │ ├── unusedFunctionParam5.awk │ ├── unusedFunctionParam5After.awk │ ├── unusedFunctionParam6_0.awk │ ├── unusedFunctionParam6_0After.awk │ ├── unusedFunctionParam6_1.awk │ ├── unusedFunctionParam6_1After.awk │ ├── unusedFunctionParam7_0.awk │ ├── unusedFunctionParam7_0After.awk │ ├── unusedFunctionParam7_1.awk │ ├── unusedFunctionParam7_1After.awk │ ├── unusedFunctionParam7_2.awk │ ├── unusedFunctionParam7_2After.awk │ ├── unusedFunctionParam7_3.awk │ ├── unusedFunctionParam7_3After.awk │ ├── unusedFunctionParam7_4.awk │ ├── unusedFunctionParam7_4After.awk │ ├── unusedFunctionParamNoProblem1.awk │ ├── unusedGlobalVar1_0.awk │ ├── unusedGlobalVar1_0After.awk │ ├── unusedGlobalVar1_1.awk │ ├── unusedGlobalVar1_1After.awk │ ├── unusedGlobalVar2_0.awk │ ├── unusedGlobalVar2_0After.awk │ ├── unusedGlobalVar2_1.awk │ ├── unusedGlobalVar2_1After.awk │ ├── unusedGlobalVar2_2.awk │ ├── unusedGlobalVar2_2After.awk │ ├── unusedGlobalVar3.awk │ ├── unusedGlobalVar3After.awk │ ├── unusedGlobalVar4.awk │ ├── unusedGlobalVar4After.awk │ ├── unusedGlobalVarNoProblem1.awk │ ├── unusedGlobalVarNoProblem2.awk │ ├── unusedGlobalVarNoProblem3.awk │ ├── unusedGlobalVarNoProblem4.awk │ ├── unusedGlobalVarNoProblem5.awk │ ├── unusedGlobalVarNoProblem6.awk │ ├── usedFunctionInFileOutsideProject.awk │ └── usedVarInFileOutsideProject.awk │ ├── lexer │ ├── ActionlessBegin.awk │ ├── ActionlessBegin.txt │ ├── ActionlessEnd.awk │ ├── ActionlessEnd.txt │ ├── At.awk │ ├── At.txt │ ├── BadChar.awk │ ├── BadChar.txt │ ├── Builtins.awk │ ├── Builtins.txt │ ├── EreAmbiguity1.awk │ ├── EreAmbiguity1.txt │ ├── ForWhileEtc.awk │ ├── ForWhileEtc.txt │ ├── FunctionBegin.awk │ ├── FunctionBegin.txt │ ├── FunctionEnd.awk │ ├── FunctionEnd.txt │ ├── If1.awk │ ├── If1.txt │ ├── If2.awk │ ├── If2.txt │ ├── Numbers.awk │ └── Numbers.txt │ ├── parser │ ├── BuiltInFuncSpace.awk │ ├── BuiltInFuncSpace.txt │ ├── DeleteArr.awk │ ├── Empty.awk │ ├── FuncName.awk │ ├── GronParser.awk │ ├── Issue63_1.awk │ ├── Issue63_2.awk │ ├── Issue63_3.awk │ ├── JsonCompile.awk │ ├── JsonGenAsm.awk │ ├── JsonGron.awk │ ├── JsonParser.awk │ ├── JsonStructure.awk │ ├── Makesure.awk │ ├── MultilineStr.awk │ ├── Print1.awk │ ├── Print2.awk │ ├── Print3.awk │ ├── Print4.awk │ ├── Print4.txt │ ├── Print5.awk │ ├── Print5.txt │ ├── PrintGetline.awk │ ├── PrintWithParenProblem.awk │ ├── Semi0.awk │ ├── Semi1.awk │ ├── Semi2Err.awk │ ├── Semi3.awk │ ├── Ungron.awk │ ├── UnterminatedElse1.awk │ ├── UserFuncSpace.awk │ ├── UserFuncSpace.txt │ ├── awk_book.sh │ ├── awk_book.txt │ ├── awk_book │ │ ├── test0.awk │ │ ├── test1.awk │ │ ├── test10.awk │ │ ├── test100.awk │ │ ├── test101.awk │ │ ├── test102.awk │ │ ├── test103.awk │ │ ├── test104.awk │ │ ├── test105.awk │ │ ├── test106.awk │ │ ├── test107.awk │ │ ├── test108.awk │ │ ├── test109.awk │ │ ├── test11.awk │ │ ├── test110.awk │ │ ├── test111.awk │ │ ├── test112.awk │ │ ├── test113.awk │ │ ├── test114.awk │ │ ├── test115.awk │ │ ├── test116.awk │ │ ├── test117.awk │ │ ├── test118.awk │ │ ├── test119.awk │ │ ├── test12.awk │ │ ├── test120.awk │ │ ├── test121.awk │ │ ├── test122.awk │ │ ├── test123.awk │ │ ├── test124.awk │ │ ├── test125.awk │ │ ├── test126.awk │ │ ├── test127.awk │ │ ├── test128.awk │ │ ├── test129.awk │ │ ├── test13.awk │ │ ├── test130.awk │ │ ├── test131.awk │ │ ├── test132.awk │ │ ├── test133.awk │ │ ├── test134.awk │ │ ├── test135.awk │ │ ├── test136.awk │ │ ├── test137.awk │ │ ├── test138.awk │ │ ├── test139.awk │ │ ├── test14.awk │ │ ├── test140.awk │ │ ├── test141.awk │ │ ├── test142.awk │ │ ├── test143.awk │ │ ├── test144.awk │ │ ├── test145.awk │ │ ├── test146.awk │ │ ├── test147.awk │ │ ├── test148.awk │ │ ├── test149.awk │ │ ├── test15.awk │ │ ├── test150.awk │ │ ├── test151.awk │ │ ├── test152.awk │ │ ├── test153.awk │ │ ├── test154.awk │ │ ├── test155.awk │ │ ├── test156.awk │ │ ├── test157.awk │ │ ├── test158.awk │ │ ├── test159.awk │ │ ├── test16.awk │ │ ├── test160.awk │ │ ├── test161.awk │ │ ├── test162.awk │ │ ├── test163.awk │ │ ├── test164.awk │ │ ├── test165.awk │ │ ├── test166.awk │ │ ├── test167.awk │ │ ├── test168.awk │ │ ├── test169.awk │ │ ├── test17.awk │ │ ├── test170.awk │ │ ├── test171.awk │ │ ├── test172.awk │ │ ├── test173.awk │ │ ├── test174.awk │ │ ├── test175.awk │ │ ├── test176.awk │ │ ├── test177.awk │ │ ├── test178.awk │ │ ├── test179.awk │ │ ├── test18.awk │ │ ├── test180.awk │ │ ├── test181.awk │ │ ├── test182.awk │ │ ├── test183.awk │ │ ├── test184.awk │ │ ├── test185.awk │ │ ├── test186.awk │ │ ├── test187.awk │ │ ├── test188.awk │ │ ├── test189.awk │ │ ├── test19.awk │ │ ├── test190.awk │ │ ├── test191.awk │ │ ├── test192.awk │ │ ├── test193.awk │ │ ├── test194.awk │ │ ├── test195.awk │ │ ├── test196.awk │ │ ├── test197.awk │ │ ├── test198.awk │ │ ├── test199.awk │ │ ├── test2.awk │ │ ├── test20.awk │ │ ├── test21.awk │ │ ├── test22.awk │ │ ├── test23.awk │ │ ├── test24.awk │ │ ├── test25.awk │ │ ├── test26.awk │ │ ├── test27.awk │ │ ├── test28.awk │ │ ├── test29.awk │ │ ├── test3.awk │ │ ├── test30.awk │ │ ├── test31.awk │ │ ├── test32.awk │ │ ├── test33.awk │ │ ├── test34.awk │ │ ├── test35.awk │ │ ├── test36.awk │ │ ├── test37.awk │ │ ├── test38.awk │ │ ├── test39.awk │ │ ├── test4.awk │ │ ├── test40.awk │ │ ├── test41.awk │ │ ├── test42.awk │ │ ├── test43.awk │ │ ├── test44.awk │ │ ├── test45.awk │ │ ├── test46.awk │ │ ├── test47.awk │ │ ├── test48.awk │ │ ├── test49.awk │ │ ├── test5.awk │ │ ├── test50.awk │ │ ├── test51.awk │ │ ├── test52.awk │ │ ├── test53.awk │ │ ├── test54.awk │ │ ├── test55.awk │ │ ├── test56.awk │ │ ├── test57.awk │ │ ├── test58.awk │ │ ├── test59.awk │ │ ├── test6.awk │ │ ├── test60.awk │ │ ├── test61.awk │ │ ├── test62.awk │ │ ├── test63.awk │ │ ├── test64.awk │ │ ├── test65.awk │ │ ├── test66.awk │ │ ├── test67.awk │ │ ├── test68.awk │ │ ├── test69.awk │ │ ├── test7.awk │ │ ├── test70.awk │ │ ├── test71.awk │ │ ├── test72.awk │ │ ├── test73.awk │ │ ├── test74.awk │ │ ├── test75.awk │ │ ├── test76.awk │ │ ├── test77.awk │ │ ├── test78.awk │ │ ├── test79.awk │ │ ├── test8.awk │ │ ├── test80.awk │ │ ├── test81.awk │ │ ├── test82.awk │ │ ├── test83.awk │ │ ├── test84.awk │ │ ├── test85.awk │ │ ├── test86.awk │ │ ├── test87.awk │ │ ├── test88.awk │ │ ├── test89.awk │ │ ├── test9.awk │ │ ├── test90.awk │ │ ├── test91.awk │ │ ├── test92.awk │ │ ├── test93.awk │ │ ├── test94.awk │ │ ├── test95.awk │ │ ├── test96.awk │ │ ├── test97.awk │ │ ├── test98.awk │ │ └── test99.awk │ ├── gawk │ │ ├── _gawk_version.txt │ │ ├── aadelete1.awk │ │ ├── aadelete2.awk │ │ ├── aarray1.awk │ │ ├── aasort.awk │ │ ├── aasorti.awk │ │ ├── addcomma.awk │ │ ├── anchgsub.awk │ │ ├── anchor.awk │ │ ├── apiterm.awk │ │ ├── argarray.awk │ │ ├── argtest.awk │ │ ├── arrayind1.awk │ │ ├── arrayind2.awk │ │ ├── arrayind3.awk │ │ ├── arrayparm.awk │ │ ├── arrayprm2.awk │ │ ├── arrayprm3.awk │ │ ├── arrayref.awk │ │ ├── arraysort.awk │ │ ├── arraysort2.awk │ │ ├── arraytype.awk │ │ ├── arrdbg.awk │ │ ├── arrymem1.awk │ │ ├── arryref2.awk │ │ ├── arryref3.awk │ │ ├── arryref4.awk │ │ ├── arryref5.awk │ │ ├── arynasty.awk │ │ ├── arynocls.awk │ │ ├── aryprm1.awk │ │ ├── aryprm2.awk │ │ ├── aryprm3.awk │ │ ├── aryprm4.awk │ │ ├── aryprm5.awk │ │ ├── aryprm6.awk │ │ ├── aryprm7.awk │ │ ├── aryprm8.awk │ │ ├── aryprm9.awk │ │ ├── arysubnm.awk │ │ ├── aryunasgn.awk │ │ ├── asgext.awk │ │ ├── asort.awk │ │ ├── asorti.awk │ │ ├── assignnumfield.awk │ │ ├── assignnumfield2.awk │ │ ├── back89.awk │ │ ├── backbigs1.awk │ │ ├── backgsub.awk │ │ ├── backsmalls1.awk │ │ ├── backsmalls2.awk │ │ ├── backw.awk │ │ ├── badassign1.awk │ │ ├── badbuild.awk │ │ ├── beginfile1.awk │ │ ├── callparam.awk │ │ ├── charasbytes.awk │ │ ├── checknegtime.awk │ │ ├── childin.awk │ │ ├── clobber.awk │ │ ├── clos1way.awk │ │ ├── clos1way2.awk │ │ ├── clos1way3.awk │ │ ├── clos1way4.awk │ │ ├── clos1way5.awk │ │ ├── clos1way6.awk │ │ ├── closebad.awk │ │ ├── clsflnam.awk │ │ ├── colonwarn.awk │ │ ├── compare.awk │ │ ├── compare2.awk │ │ ├── concat1.awk │ │ ├── concat2.awk │ │ ├── concat3.awk │ │ ├── concat4.awk │ │ ├── concat5.awk │ │ ├── convfmt.awk │ │ ├── crlf.awk │ │ ├── datanonl.awk │ │ ├── dbugeval2.awk │ │ ├── dbugeval3.awk │ │ ├── dbugtypedre1.awk │ │ ├── dbugtypedre2.awk │ │ ├── defref.awk │ │ ├── delargv.awk │ │ ├── delarpm2.awk │ │ ├── delarprm.awk │ │ ├── delfunc.awk │ │ ├── delsub.awk │ │ ├── devfd1.awk │ │ ├── dfacheck1.awk │ │ ├── dfamb1.awk │ │ ├── dfastress.awk │ │ ├── double1.awk │ │ ├── double2.awk │ │ ├── dtdgport.awk │ │ ├── dynlj.awk │ │ ├── eofsplit.awk │ │ ├── eofsrc1a.awk │ │ ├── eofsrc1b.awk │ │ ├── errno.awk │ │ ├── escapebrace.awk │ │ ├── exit2.awk │ │ ├── exitval1.awk │ │ ├── exitval2.awk │ │ ├── exitval3.awk │ │ ├── fcall_exit.awk │ │ ├── fcall_exit2.awk │ │ ├── fieldwdth.awk │ │ ├── filefuncs.awk │ │ ├── fix_fmtspcl.awk │ │ ├── fldchg.awk │ │ ├── fldchgnf.awk │ │ ├── fldterm.awk │ │ ├── fmtspcl.awk │ │ ├── fmttest.awk │ │ ├── fnamedat.awk │ │ ├── fnarray.awk │ │ ├── fnarray2.awk │ │ ├── fnarydel.awk │ │ ├── fnaryscl.awk │ │ ├── fnasgnm.awk │ │ ├── fnmatch.awk │ │ ├── fnmisc.awk │ │ ├── fnparydl.awk │ │ ├── forcenum.awk │ │ ├── fordel.awk │ │ ├── fork.awk │ │ ├── fork2.awk │ │ ├── forref.awk │ │ ├── forsimp.awk │ │ ├── fpat1.awk │ │ ├── fpat2.awk │ │ ├── fpat3.awk │ │ ├── fpat4.awk │ │ ├── fpat5.awk │ │ ├── fpat6.awk │ │ ├── fpat7.awk │ │ ├── fpat8.awk │ │ ├── fpatnull.awk │ │ ├── fsbs.awk │ │ ├── fscaret.awk │ │ ├── fsfwfs.awk │ │ ├── fsnul1.awk │ │ ├── fsrs.awk │ │ ├── fsspcoln.awk │ │ ├── fstabplus.awk │ │ ├── fts.awk │ │ ├── functab1.awk │ │ ├── functab2.awk │ │ ├── functab3.awk │ │ ├── functab4.awk │ │ ├── funlen.awk │ │ ├── funsemnl.awk │ │ ├── funsmnam.awk │ │ ├── funstack.awk │ │ ├── fwtest.awk │ │ ├── fwtest2.awk │ │ ├── fwtest3.awk │ │ ├── fwtest4.awk │ │ ├── fwtest5.awk │ │ ├── fwtest6.awk │ │ ├── fwtest7.awk │ │ ├── fwtest8.awk │ │ ├── genpot.awk │ │ ├── gensub.awk │ │ ├── gensub2.awk │ │ ├── gensub3.awk │ │ ├── getfile.awk │ │ ├── getline.awk │ │ ├── getline2.awk │ │ ├── getline3.awk │ │ ├── getline4.awk │ │ ├── getline5.awk │ │ ├── getlnbuf.awk │ │ ├── getlndir.awk │ │ ├── getlnhd.awk │ │ ├── getnr2tb.awk │ │ ├── getnr2tm.awk │ │ ├── gnuops2.awk │ │ ├── gnuops3.awk │ │ ├── gnureops.awk │ │ ├── gsubasgn.awk │ │ ├── gsubind.awk │ │ ├── gsubtest.awk │ │ ├── gsubtst2.awk │ │ ├── gsubtst3.awk │ │ ├── gsubtst4.awk │ │ ├── gsubtst5.awk │ │ ├── gsubtst6.awk │ │ ├── gsubtst7.awk │ │ ├── gsubtst8.awk │ │ ├── gtlnbufv.awk │ │ ├── hello.awk │ │ ├── hex.awk │ │ ├── hex2.awk │ │ ├── hsprint.awk │ │ ├── icasefs.awk │ │ ├── icasers.awk │ │ ├── id.awk │ │ ├── igncdym.awk │ │ ├── igncfs.awk │ │ ├── ignrcas2.awk │ │ ├── ignrcas3.awk │ │ ├── ignrcas4.awk │ │ ├── ignrcase.awk │ │ ├── inchello.awk │ │ ├── inclib.awk │ │ ├── include.awk │ │ ├── indirectbuiltin.awk │ │ ├── indirectcall.awk │ │ ├── indirectcall2.awk │ │ ├── inftest.awk │ │ ├── inpref.awk │ │ ├── inputred.awk │ │ ├── intarray.awk │ │ ├── intest.awk │ │ ├── intformat.awk │ │ ├── intprec.awk │ │ ├── iobug1.awk │ │ ├── isarrayunset.awk │ │ ├── jarebug.awk │ │ ├── lc_num1.awk │ │ ├── leaddig.awk │ │ ├── leadnl.awk │ │ ├── lint.awk │ │ ├── lintexp.awk │ │ ├── lintindex.awk │ │ ├── lintint.awk │ │ ├── lintlength.awk │ │ ├── lintold.awk │ │ ├── lintset.awk │ │ ├── lintwarn.awk │ │ ├── litoct.awk │ │ ├── longsub.awk │ │ ├── longwrds.awk │ │ ├── manglprm.awk │ │ ├── manyfiles.awk │ │ ├── match1.awk │ │ ├── match2.awk │ │ ├── match3.awk │ │ ├── math.awk │ │ ├── mbfw1.awk │ │ ├── mbprintf1.awk │ │ ├── mbprintf2.awk │ │ ├── mbprintf3.awk │ │ ├── mbprintf4.awk │ │ ├── mbprintf5.awk │ │ ├── mbstr1.awk │ │ ├── mbstr2.awk │ │ ├── membug1.awk │ │ ├── memleak.awk │ │ ├── messages.awk │ │ ├── minusstr.awk │ │ ├── mktime.awk │ │ ├── mmap8k.awk │ │ ├── mpfranswer42.awk │ │ ├── mpfrbigint.awk │ │ ├── mpfrbigint2.awk │ │ ├── mpfrexprange.awk │ │ ├── mpfrfield.awk │ │ ├── mpfrieee.awk │ │ ├── mpfrmemok1.awk │ │ ├── mpfrnegzero.awk │ │ ├── mpfrnr.awk │ │ ├── mpfrrem.awk │ │ ├── mpfrrnd.awk │ │ ├── mpfrrndeval.awk │ │ ├── mpfrsort.awk │ │ ├── mpfrsqrt.awk │ │ ├── mpfrstrtonum.awk │ │ ├── mpgforcenum.awk │ │ ├── mtchi18n.awk │ │ ├── muldimposix.awk │ │ ├── nasty.awk │ │ ├── nasty2.awk │ │ ├── nastyparm.awk │ │ ├── negexp.awk │ │ ├── negrange.awk │ │ ├── negtime.awk │ │ ├── nested.awk │ │ ├── nfldstr.awk │ │ ├── nfloop.awk │ │ ├── nfneg.awk │ │ ├── nfset.awk │ │ ├── nlfldsep.awk │ │ ├── nlinstr.awk │ │ ├── nlstrina.awk │ │ ├── nlstringtest.awk │ │ ├── noeffect.awk │ │ ├── nofmtch.awk │ │ ├── noloop1.awk │ │ ├── noloop2.awk │ │ ├── nondec.awk │ │ ├── nondec2.awk │ │ ├── nonfatal1.awk │ │ ├── nonfatal2.awk │ │ ├── nonfatal3.awk │ │ ├── nonl.awk │ │ ├── noparms.awk │ │ ├── nsawk1.awk │ │ ├── nsawk2.awk │ │ ├── nsbad.awk │ │ ├── nsforloop.awk │ │ ├── nsfuncrecurse.awk │ │ ├── nsindirect1.awk │ │ ├── nsindirect2.awk │ │ ├── nsprof1.awk │ │ ├── nsprof2.awk │ │ ├── nulinsrc.awk │ │ ├── nulrsend.awk │ │ ├── numindex.awk │ │ ├── numrange.awk │ │ ├── numstr1.awk │ │ ├── numsubstr.awk │ │ ├── octsub.awk │ │ ├── ofmt.awk │ │ ├── ofmta.awk │ │ ├── ofmtbig.awk │ │ ├── ofmtfidl.awk │ │ ├── ofmts.awk │ │ ├── ofmtstrnum.awk │ │ ├── ofs1.awk │ │ ├── onlynl.awk │ │ ├── opasnidx.awk │ │ ├── opasnslf.awk │ │ ├── ordchr.awk │ │ ├── paramasfunc1.awk │ │ ├── paramasfunc2.awk │ │ ├── paramdup.awk │ │ ├── paramres.awk │ │ ├── paramtyp.awk │ │ ├── paramuninitglobal.awk │ │ ├── parse1.awk │ │ ├── parsefld.awk │ │ ├── parseme.awk │ │ ├── patsplit.awk │ │ ├── pcntplus.awk │ │ ├── pid.awk │ │ ├── pipeio1.awk │ │ ├── pipeio2.awk │ │ ├── posix.awk │ │ ├── posix2008sub.awk │ │ ├── poundbang.awk │ │ ├── prdupval.awk │ │ ├── prec.awk │ │ ├── printf0.awk │ │ ├── printf1.awk │ │ ├── printfbad1.awk │ │ ├── printfbad2.awk │ │ ├── printfbad3.awk │ │ ├── printfbad4.awk │ │ ├── printfchar.awk │ │ ├── printfloat.awk │ │ ├── printhuge.awk │ │ ├── printlang.awk │ │ ├── prmarscl.awk │ │ ├── prmreuse.awk │ │ ├── procinfs.awk │ │ ├── profile0.awk │ │ ├── profile10.awk │ │ ├── profile11.awk │ │ ├── profile12.awk │ │ ├── profile13.awk │ │ ├── profile3.awk │ │ ├── profile4.awk │ │ ├── profile5.awk │ │ ├── profile6.awk │ │ ├── profile7.awk │ │ ├── profile8.awk │ │ ├── profile9.awk │ │ ├── prt1eval.awk │ │ ├── prtoeval.awk │ │ ├── pty1.awk │ │ ├── pty2.awk │ │ ├── rand.awk │ │ ├── range1.awk │ │ ├── range2.awk │ │ ├── readbuf.awk │ │ ├── readdir.awk │ │ ├── readdir0.awk │ │ ├── readdir_retest.awk │ │ ├── readfile2.awk │ │ ├── rebrackloc.awk │ │ ├── rebt8b1.awk │ │ ├── rebt8b2.awk │ │ ├── rebuf.awk │ │ ├── rebuild.awk │ │ ├── redfilnm.awk │ │ ├── regeq.awk │ │ ├── regexpbrack.awk │ │ ├── regexpbrack2.awk │ │ ├── regexprange.awk │ │ ├── reginttrad.awk │ │ ├── regnul1.awk │ │ ├── regnul2.awk │ │ ├── regrange.awk │ │ ├── regx8bit.awk │ │ ├── reindops.awk │ │ ├── reint.awk │ │ ├── reint2.awk │ │ ├── reparse.awk │ │ ├── resplit.awk │ │ ├── revout.awk │ │ ├── revtwoway.awk │ │ ├── rri1.awk │ │ ├── rs.awk │ │ ├── rscompat.awk │ │ ├── rsgetline.awk │ │ ├── rsnul1nl.awk │ │ ├── rsnulw.awk │ │ ├── rsstart1.awk │ │ ├── rsstart2.awk │ │ ├── rstest1.awk │ │ ├── rstest2.awk │ │ ├── rstest3.awk │ │ ├── rstest4.awk │ │ ├── rstest5.awk │ │ ├── rstest6.awk │ │ ├── rswhite.awk │ │ ├── rwarray.awk │ │ ├── sandbox1.awk │ │ ├── scalar.awk │ │ ├── sclforin.awk │ │ ├── sclifin.awk │ │ ├── setrec0.awk │ │ ├── setrec1.awk │ │ ├── shadow.awk │ │ ├── shadowbuiltin.awk │ │ ├── sigpipe1.awk │ │ ├── sort1.awk │ │ ├── sortempty.awk │ │ ├── sortfor.awk │ │ ├── sortfor2.awk │ │ ├── sortglos.awk │ │ ├── sortu.awk │ │ ├── spacere.awk │ │ ├── split_after_fpat.awk │ │ ├── splitarg4.awk │ │ ├── splitargv.awk │ │ ├── splitarr.awk │ │ ├── splitdef.awk │ │ ├── splitvar.awk │ │ ├── splitwht.awk │ │ ├── sprintfc.awk │ │ ├── status_close.awk │ │ ├── strcat1.awk │ │ ├── strftfld.awk │ │ ├── strftime.awk │ │ ├── strftlng.awk │ │ ├── strnum1.awk │ │ ├── strnum2.awk │ │ ├── strtod.awk │ │ ├── strtonum.awk │ │ ├── strtonum1.awk │ │ ├── stupid1.awk │ │ ├── stupid2.awk │ │ ├── stupid3.awk │ │ ├── stupid4.awk │ │ ├── subamp.awk │ │ ├── subback.awk │ │ ├── subi18n.awk │ │ ├── subsepnm.awk │ │ ├── subslash.awk │ │ ├── substr.awk │ │ ├── swaplns.awk │ │ ├── switch2.awk │ │ ├── symtab1.awk │ │ ├── symtab10.awk │ │ ├── symtab11.awk │ │ ├── symtab2.awk │ │ ├── symtab3.awk │ │ ├── symtab4.awk │ │ ├── symtab5.awk │ │ ├── symtab6.awk │ │ ├── symtab7.awk │ │ ├── symtab8.awk │ │ ├── symtab9.awk │ │ ├── synerr1.awk │ │ ├── synerr2.awk │ │ ├── synerr3.awk │ │ ├── tailrecurse.awk │ │ ├── time.awk │ │ ├── timeout.awk │ │ ├── tradanch.awk │ │ ├── trailbs.awk │ │ ├── tweakfld.awk │ │ ├── typedregex1.awk │ │ ├── typedregex2.awk │ │ ├── typedregex3.awk │ │ ├── typedregex4.awk │ │ ├── typedregex5.awk │ │ ├── typedregex6.awk │ │ ├── typeof1.awk │ │ ├── typeof2.awk │ │ ├── typeof3.awk │ │ ├── typeof4.awk │ │ ├── typeof5.awk │ │ ├── uninit2.awk │ │ ├── uninit3.awk │ │ ├── uninit4.awk │ │ ├── uninit5.awk │ │ ├── uninitialized.awk │ │ ├── unterm.awk │ │ ├── uparrfs.awk │ │ ├── uplus.awk │ │ ├── valgrind.awk │ │ ├── watchpoint1.awk │ │ ├── wideidx.awk │ │ ├── wideidx2.awk │ │ ├── widesub.awk │ │ ├── widesub2.awk │ │ ├── widesub3.awk │ │ ├── widesub4.awk │ │ ├── wjposer1.awk │ │ ├── xref.awk │ │ ├── zero2.awk │ │ ├── zeroe0.awk │ │ └── zeroflag.awk │ └── gawk1 │ │ ├── BeginfileEndfileNextfile.awk │ │ ├── BeginfileEndfileNextfile.txt │ │ ├── Ere1.awk │ │ ├── Ere1.txt │ │ ├── Func1.awk │ │ ├── Func1.txt │ │ ├── Ns1.awk │ │ ├── Ns2.awk │ │ ├── Ns3.awk │ │ ├── Switch0.awk │ │ ├── Switch1.awk │ │ ├── Switch2.awk │ │ ├── Switch3.awk │ │ ├── Switch4.awk │ │ ├── Switch5.awk │ │ ├── Switch6Err.awk │ │ ├── Switch7.awk │ │ ├── Switch8.awk │ │ ├── TypedEre1.awk │ │ └── TypedEre2.awk │ ├── parser_performance │ ├── LongExpression.txt │ ├── LongExpression2.txt │ └── LongExpression3.txt │ └── rename │ ├── func1.awk │ ├── func1After.awk │ ├── funcRef.awk │ ├── funcRefAfter.awk │ ├── indirect1.awk │ ├── indirect1After.awk │ ├── vars1.awk │ ├── vars1After.awk │ ├── vars2.awk │ ├── vars2After.awk │ ├── vars3.awk │ ├── vars3After.awk │ ├── vars4.awk │ ├── vars4After.awk │ ├── vars5.awk │ ├── vars5After.awk │ ├── vars6.awk │ ├── vars6After.awk │ ├── vars7.awk │ └── vars7After.awk └── std_awk_html ├── Auto_002dset.html ├── Bitwise-Functions.html ├── Control-Letters.html ├── Exit-Statement.html ├── Format-Modifiers.html ├── Getline-Summary.html ├── Getline.html ├── I18N-Functions.html ├── I_002fO-Functions.html ├── Numeric-Functions.html ├── String-Functions.html ├── Time-Functions.html ├── Type-Functions.html └── User_002dmodified.html /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | *.iml 3 | .gradle/ 4 | build/ 5 | soft/ 6 | src/main/gen/ 7 | src/main/java/intellij_awk/_AwkLexer.flex 8 | /temp*/ 9 | /tmp/ -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | kotlin.code.style=official -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xonixx/intellij-awk/450f1d55b679ae385b0ea056621d7a2c82910f91/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xonixx/intellij-awk/450f1d55b679ae385b0ea056621d7a2c82910f91/screenshot1.png -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'intellij-awk' 2 | 3 | -------------------------------------------------------------------------------- /src/main/java/intellij_awk/AwkLanguage.java: -------------------------------------------------------------------------------- 1 | package intellij_awk; 2 | 3 | import com.intellij.lang.Language; 4 | 5 | public class AwkLanguage extends Language { 6 | 7 | public static final AwkLanguage INSTANCE = new AwkLanguage(); 8 | 9 | private AwkLanguage() { 10 | super("AWK"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/intellij_awk/AwkLexerAdapter.java: -------------------------------------------------------------------------------- 1 | package intellij_awk; 2 | 3 | import com.intellij.lexer.FlexAdapter; 4 | 5 | public class AwkLexerAdapter extends FlexAdapter { 6 | 7 | public AwkLexerAdapter() { 8 | super(new AwkLexer(null)); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/intellij_awk/psi/AwkFunctionNameStub.java: -------------------------------------------------------------------------------- 1 | package intellij_awk.psi; 2 | 3 | import com.intellij.psi.stubs.StubElement; 4 | 5 | public interface AwkFunctionNameStub extends StubElement { 6 | String getName(); 7 | 8 | String getSignatureString(); 9 | } 10 | -------------------------------------------------------------------------------- /src/main/resources/icons/a-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xonixx/intellij-awk/450f1d55b679ae385b0ea056621d7a2c82910f91/src/main/resources/icons/a-16.png -------------------------------------------------------------------------------- /src/main/resources/icons/a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xonixx/intellij-awk/450f1d55b679ae385b0ea056621d7a2c82910f91/src/main/resources/icons/a.png -------------------------------------------------------------------------------- /src/main/resources/icons/play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xonixx/intellij-awk/450f1d55b679ae385b0ea056621d7a2c82910f91/src/main/resources/icons/play.png -------------------------------------------------------------------------------- /src/main/resources/icons/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xonixx/intellij-awk/450f1d55b679ae385b0ea056621d7a2c82910f91/src/main/resources/icons/stop.png -------------------------------------------------------------------------------- /src/main/resources/inspectionDescriptions/AwkInspectionDeclareLocalVariable.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/main/resources/inspectionDescriptions/AwkInspectionDuplicateFunction.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Reports on functions that are defined more than once with a same name in a file. 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/inspectionDescriptions/AwkInspectionDuplicateFunctionParam.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Reports on duplicate function parameters. 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/inspectionDescriptions/AwkInspectionEnforceGlobalVariableNaming.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/main/resources/inspectionDescriptions/AwkInspectionUnnecessarySemicolon.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Reports on unnecessary semicolon. 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/inspectionDescriptions/AwkInspectionUnresolvedFunction.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Reports on unresolved function call. 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/inspectionDescriptions/AwkInspectionUnresolvedInclude.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Reports on unresolved @include. 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/inspectionDescriptions/AwkInspectionUnusedFunction.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Reports on unused functions. 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/inspectionDescriptions/AwkInspectionUnusedFunctionParam.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Reports on unused function parameters. 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/inspectionDescriptions/AwkInspectionUnusedGlobalVariable.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Reports on unused global variables. 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/test/testData/auto_format/commaInArrIndex.awk: -------------------------------------------------------------------------------- 1 | { 2 | A[a ,b, c] 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/commaInArrIndexAfter.awk: -------------------------------------------------------------------------------- 1 | { 2 | A[a, b, c] 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/commaInFuncCall.awk: -------------------------------------------------------------------------------- 1 | { 2 | ff(a ,b, c) 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/commaInFuncCallAfter.awk: -------------------------------------------------------------------------------- 1 | { 2 | ff(a, b, c) 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/commaInFuncParamsNoChange.awk: -------------------------------------------------------------------------------- 1 | function f(a ,b, c) { 2 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/commaInFuncParamsNoChangeAfter.awk: -------------------------------------------------------------------------------- 1 | function f(a ,b, c) { 2 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/commaInIfIn.awk: -------------------------------------------------------------------------------- 1 | { 2 | if ((a ,b, c) in A) {} 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/commaInIfInAfter.awk: -------------------------------------------------------------------------------- 1 | { 2 | if ((a, b, c) in A) {} 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | if (5>2) { 3 | print "Hello world" 4 | } 5 | } 6 | 7 | function inc(i) { 8 | return i+1 9 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file10.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | return b(1, 3 | 2, 3, 4 | 4) 5 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file10After.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | return b(1, 3 | 2, 3, 4 | 4) 5 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file11.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | return a() && 3 | b() 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file11After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | return a() && 3 | b() 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file12.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | return a() && b(1, 3 | 2) 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file12After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | return a() && b(1, 3 | 2) 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file13_0.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | while (a() && 3 | b()) { 4 | print 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file13_0After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | while (a() && 3 | b()) { 4 | print 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file13_1.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | if (a() && 3 | b()) { 4 | print 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file13_1After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | if (a() && 3 | b()) { 4 | print 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file13_2.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | while (a() > 0 && 3 | b()) { 4 | print 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file13_2After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | while (a() > 0 && 3 | b()) { 4 | print 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | if (5 > 2) { 3 | print "Hello world" 4 | } 5 | } 6 | 7 | function inc(i) { 8 | return i + 1 9 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file2_0.awk: -------------------------------------------------------------------------------- 1 | { 2 | print 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file2_0After.awk: -------------------------------------------------------------------------------- 1 | { 2 | print 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file2_1.awk: -------------------------------------------------------------------------------- 1 | { 2 | a=1 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file2_1After.awk: -------------------------------------------------------------------------------- 1 | { 2 | a = 1 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file3.awk: -------------------------------------------------------------------------------- 1 | { 2 | if (1) 3 | print "a" 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file3After.awk: -------------------------------------------------------------------------------- 1 | { 2 | if (1) 3 | print "a" 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/file4_0.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | if (5>2) 3 | return 4 | else if (1) 5 | exit 6 | else if (2) 7 | 8 | a=1 9 | else 10 | print 11 | } 12 | -------------------------------------------------------------------------------- /src/test/testData/auto_format/file4_0After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | if (5 > 2) 3 | return 4 | else if (1) 5 | exit 6 | else if (2) 7 | 8 | a = 1 9 | else 10 | print 11 | } 12 | -------------------------------------------------------------------------------- /src/test/testData/auto_format/file4_1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | if (1) 3 | print 4 | else if (1) 5 | print 6 | else if (1) 7 | print 8 | else if (1) 9 | print 10 | else if (1) 11 | print 12 | else if (1) 13 | print 14 | else if (1) 15 | print 16 | else 17 | print 18 | } 19 | -------------------------------------------------------------------------------- /src/test/testData/auto_format/file5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | for(i=0;i<10;i++) 3 | print i 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/auto_format/file5After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | for (i = 0; i < 10; i++) 3 | print i 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/auto_format/file6.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | while (1) 3 | print 1 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/auto_format/file6After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | while (1) 3 | print 1 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/auto_format/file7.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | while (1) 3 | print 1 4 | print 2 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/auto_format/file7After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | while (1) 3 | print 1 4 | print 2 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/auto_format/file8.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | while (1) 3 | for(i=1; i<10; i++) 4 | if (i%2==0) 5 | print "even" 6 | else 7 | print "odd" 8 | print 123 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/auto_format/file8After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | while (1) 3 | for (i = 1; i < 10; i++) 4 | if (i % 2 == 0) 5 | print "even" 6 | else 7 | print "odd" 8 | print 123 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/auto_format/file9.awk: -------------------------------------------------------------------------------- 1 | function a(\ 2 | \ 3 | a, b, \ 4 | c){} -------------------------------------------------------------------------------- /src/test/testData/auto_format/file9After.awk: -------------------------------------------------------------------------------- 1 | function a(\ 2 | \ 3 | a, b, \ 4 | c) {} -------------------------------------------------------------------------------- /src/test/testData/auto_format/gawk_switch1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | print -1 5 | case /he/: 6 | print 2 7 | print 2 8 | case @/he/: 9 | case @/asd/: 10 | print 3 11 | default: 12 | print 4 13 | print 4 14 | } 15 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/gawk_switch2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | print -1 5 | case /he/: 6 | if (1) 7 | print 1 8 | else 9 | print 2 10 | case @/he/: 11 | case @/asd/: 12 | if (1) { 13 | print 1 14 | } 15 | default: 16 | print 4 17 | print 4 18 | } 19 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/issue224For.awk: -------------------------------------------------------------------------------- 1 | { 2 | for( ; ; ){} 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_format/issue224ForAfter.awk: -------------------------------------------------------------------------------- 1 | { 2 | for (;;) {} 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file1.awk: -------------------------------------------------------------------------------- 1 | 2 | BEGIN {} -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file10.awk: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file10After.awk: -------------------------------------------------------------------------------- 1 | 2 | {} -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file11.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | print 3 | print 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file11After.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | print 3 | 4 | print 5 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file12_0.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | print 3 | print 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file12_0After.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | print 3 | print 4 | 5 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file12_1.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | print 3 | # 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file12_1After.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | print 3 | 4 | # 5 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file13.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | f(1,2) 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file13After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | f(1, 3 | 2) 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file1After.awk: -------------------------------------------------------------------------------- 1 | 2 | BEGIN { 3 | 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file2.awk: -------------------------------------------------------------------------------- 1 | 2 | BEGIN {} 3 | 4 | function f() {} -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file2After.awk: -------------------------------------------------------------------------------- 1 | 2 | BEGIN {} 3 | 4 | function f() { 5 | 6 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file3.awk: -------------------------------------------------------------------------------- 1 | 2 | BEGIN {} 3 | 4 | function f() { 5 | if (1) {} 6 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file3After.awk: -------------------------------------------------------------------------------- 1 | 2 | BEGIN {} 3 | 4 | function f() { 5 | if (1) { 6 | 7 | } 8 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file4.awk: -------------------------------------------------------------------------------- 1 | function f1() {} 2 | function f2() {} 3 | -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file4After.awk: -------------------------------------------------------------------------------- 1 | function f1() {} 2 | function f2() {} 3 | 4 | -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file5.awk: -------------------------------------------------------------------------------- 1 | 2 | BEGIN { 3 | a = 1 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file5After.awk: -------------------------------------------------------------------------------- 1 | 2 | BEGIN { 3 | a = 1 4 | 5 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file6.awk: -------------------------------------------------------------------------------- 1 | BEGIN {} 2 | END{ print 1 } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file6After.awk: -------------------------------------------------------------------------------- 1 | BEGIN {} 2 | 3 | END{ print 1 } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file7.awk: -------------------------------------------------------------------------------- 1 | END { 2 | if (1) 3 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file7After.awk: -------------------------------------------------------------------------------- 1 | END { 2 | if (1) 3 | 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file8.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | while(1) 3 | if (2) 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file8After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | while(1) 3 | if (2) 4 | 5 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file8_1.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | while(1) 3 | if () 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file8_1After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | while(1) 3 | if () 4 | 5 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file9.awk: -------------------------------------------------------------------------------- 1 | /a+/ { 2 | while() 3 | if (1) 4 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/file9After.awk: -------------------------------------------------------------------------------- 1 | /a+/ { 2 | while() 3 | if (1) 4 | 5 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/gawk_switch1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | print -1 5 | case /he/: 6 | print 2 7 | print 2 8 | default: 9 | print 4 10 | print 4 11 | } 12 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/gawk_switch1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | 4 | case -1: 5 | print -1 6 | case /he/: 7 | print 2 8 | print 2 9 | default: 10 | print 4 11 | print 4 12 | } 13 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/gawk_switch2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | print -1 5 | case /he/: 6 | print 2 7 | print 2 8 | default: 9 | print 4 10 | print 4 11 | } 12 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/gawk_switch2After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | 5 | print -1 6 | case /he/: 7 | print 2 8 | print 2 9 | default: 10 | print 4 11 | print 4 12 | } 13 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/gawk_switch3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | print -1 5 | case /he/: 6 | print 2 7 | print 2 8 | default: 9 | print 4 10 | print 4 11 | } 12 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/gawk_switch3After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | print -1 5 | case /he/: 6 | 7 | print 2 8 | print 2 9 | default: 10 | print 4 11 | print 4 12 | } 13 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/gawk_switch4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | print -1 5 | case /he/: 6 | print 2 7 | print 2 8 | default: 9 | print 4 10 | print 4 11 | } 12 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/gawk_switch4After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | print -1 5 | case /he/: 6 | print 2 7 | 8 | print 2 9 | default: 10 | print 4 11 | print 4 12 | } 13 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/gawk_switch5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | print -1 5 | case /he/: 6 | print 2 7 | print 2 8 | default: 9 | print 4 10 | print 4 11 | } 12 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/gawk_switch5After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | print -1 5 | case /he/: 6 | print 2 7 | print 2 8 | 9 | default: 10 | print 4 11 | print 4 12 | } 13 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/gawk_switch6.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | print -1 5 | case /he/: 6 | print 2 7 | print 2 8 | default: 9 | print 4 10 | print 4 11 | } 12 | } -------------------------------------------------------------------------------- /src/test/testData/auto_indent/gawk_switch6After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch ("hello") { 3 | case -1: 4 | print -1 5 | case /he/: 6 | print 2 7 | print 2 8 | default: 9 | print 4 10 | print 4 11 | 12 | } 13 | } -------------------------------------------------------------------------------- /src/test/testData/includes/a.awk: -------------------------------------------------------------------------------- 1 | 2 | @include "b.awk" 3 | @include "c" # testing no ext 4 | 5 | BEGIN { print "a.awk" } -------------------------------------------------------------------------------- /src/test/testData/includes/b.awk: -------------------------------------------------------------------------------- 1 | @include "x/x1.awk" 2 | @include "y/y1.awk" 3 | 4 | BEGIN { print "b.awk" } -------------------------------------------------------------------------------- /src/test/testData/includes/c.awk: -------------------------------------------------------------------------------- 1 | @include "x/x1.awk" 2 | 3 | BEGIN { print "c.awk" } -------------------------------------------------------------------------------- /src/test/testData/includes/d.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print "d.awk" } -------------------------------------------------------------------------------- /src/test/testData/includes/x/x1.awk: -------------------------------------------------------------------------------- 1 | 2 | @include "x/x2.awk" 3 | @include "y/y2" # testing no ext 4 | @include "d.awk" 5 | 6 | # XXX in fact this is way more permissive, but hope this doesn't cause too much false-positives 7 | @include "./x3.awk" # testing rel 8 | @include "../y/y3" # testing rel, no ext 9 | 10 | BEGIN { print "x1.awk" } -------------------------------------------------------------------------------- /src/test/testData/includes/x/x2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print "x2.awk" } -------------------------------------------------------------------------------- /src/test/testData/includes/x/x3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print "x3.awk" } -------------------------------------------------------------------------------- /src/test/testData/includes/y/y1.awk: -------------------------------------------------------------------------------- 1 | @include "y/y2.awk" 2 | 3 | BEGIN { print "y1.awk" } -------------------------------------------------------------------------------- /src/test/testData/includes/y/y2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print "y2.awk" } -------------------------------------------------------------------------------- /src/test/testData/includes/y/y3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print "y3.awk" } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal1_0.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f() { 4 | a = 1 5 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal1_0After.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f( a) { 4 | a = 1 5 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal1_1.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f() { 4 | a = 1 5 | a = 2 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal2_0.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f(x,y,z) { 4 | a = 1 5 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal2_0After.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f(x,y,z, a) { 4 | a = 1 5 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal2_1.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f(x, y,z) { 4 | a = 1 5 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal2_1After.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f(x, y,z,a) { 4 | a = 1 5 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal2_2.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f(x,\ 4 | y,z) { 5 | a = 1 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal2_2After.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f(x,\ 4 | y,z,a) { 5 | a = 1 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal2_3.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f( y,z) { 4 | a = 1 5 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal2_3After.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f( y,z,a) { 4 | a = 1 5 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal2_4.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f(\ 4 | y,z) { 5 | a = 1 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocal2_4After.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f(\ 4 | y,z,a) { 5 | a = 1 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocalNoProblem1.awk: -------------------------------------------------------------------------------- 1 | 2 | 3 | function f() { 4 | A = 1 5 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/declareLocalNoProblem2.awk: -------------------------------------------------------------------------------- 1 | 2 | BEGIN { 3 | a=1 4 | } 5 | 6 | function f() { 7 | print a 8 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/dupFunctions1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { f() } 2 | function f() {} 3 | function f() {} -------------------------------------------------------------------------------- /src/test/testData/inspection/dupFunctions2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { f() } 2 | function f() {} 3 | function f() {} -------------------------------------------------------------------------------- /src/test/testData/inspection/dupFunctionsNotReportedUnused.awk: -------------------------------------------------------------------------------- 1 | BEGIN { f() } 2 | # dup functions should not imply unused 3 | function f() {} 4 | function f() {} -------------------------------------------------------------------------------- /src/test/testData/inspection/dupFunctionsRegression180.awk: -------------------------------------------------------------------------------- 1 | function f () {} 2 | function f () {} -------------------------------------------------------------------------------- /src/test/testData/inspection/duplicateFunctionParam1.awk: -------------------------------------------------------------------------------- 1 | function f(param,param) { 2 | } 3 | -------------------------------------------------------------------------------- /src/test/testData/inspection/duplicateFunctionParam2.awk: -------------------------------------------------------------------------------- 1 | function f(param,a,param, b, param, c) { 2 | } 3 | -------------------------------------------------------------------------------- /src/test/testData/inspection/enforceGlobalVarNaming1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | var = 1 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/enforceGlobalVarNaming1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | Var = 1 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/enforceGlobalVarNaming2.awk: -------------------------------------------------------------------------------- 1 | function initFunc() { 2 | var_name = 1 3 | } 4 | BEGIN { 5 | initFunc() 6 | } 7 | END { 8 | print var_name 9 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/enforceGlobalVarNaming2After.awk: -------------------------------------------------------------------------------- 1 | function initFunc() { 2 | VarName = 1 3 | } 4 | BEGIN { 5 | initFunc() 6 | } 7 | END { 8 | print VarName 9 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/enforceGlobalVarNaming3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | arr["key1"] = "val1" 3 | arr["key2"] 4 | arr["key3"] = "val3" 5 | } 6 | function f() { 7 | split("", arr) 8 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/enforceGlobalVarNaming3After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | Arr["key1"] = "val1" 3 | Arr["key2"] 4 | Arr["key3"] = "val3" 5 | } 6 | function f() { 7 | split("", Arr) 8 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/funcRefToPreventUnusedFunc1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | PROCINFO["sorted_in"] = "compare" 3 | } 4 | 5 | function compare() {} -------------------------------------------------------------------------------- /src/test/testData/inspection/funcRefToPreventUnusedFunc1_1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | PROCINFO["sorted_in"] = "compare1" 3 | } 4 | 5 | function compare() {} -------------------------------------------------------------------------------- /src/test/testData/inspection/funcRefToPreventUnusedFunc1_1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | PROCINFO["sorted_in"] = "compare1" 3 | } 4 | 5 | -------------------------------------------------------------------------------- /src/test/testData/inspection/funcRefToPreventUnusedFunc2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | F = "fname" 3 | @F() 4 | } 5 | 6 | function fname() {} -------------------------------------------------------------------------------- /src/test/testData/inspection/funcRefToPreventUnusedFunc2_1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | F = "aaa fname bbb" 3 | @F() 4 | } 5 | 6 | function fname() {} -------------------------------------------------------------------------------- /src/test/testData/inspection/funcRefToPreventUnusedFunc2_1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | F = "aaa fname bbb" 3 | @F() 4 | } 5 | 6 | -------------------------------------------------------------------------------- /src/test/testData/inspection/funcRefToPreventUnusedFunc3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print a = "fname" 3 | } 4 | 5 | function fname() {} -------------------------------------------------------------------------------- /src/test/testData/inspection/funcRefToPreventUnusedFunc3_1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print "fname" 3 | } 4 | 5 | function fname() {} -------------------------------------------------------------------------------- /src/test/testData/inspection/funcRefToPreventUnusedFunc3_1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print "fname" 3 | } 4 | 5 | -------------------------------------------------------------------------------- /src/test/testData/inspection/funcRefToPreventUnusedFunc4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | b("fname") 3 | } 4 | 5 | function b(f) { @f() } 6 | 7 | function fname() {} -------------------------------------------------------------------------------- /src/test/testData/inspection/funcRefToPreventUnusedFunc4_1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | length("fname") 3 | } 4 | 5 | function fname() {} -------------------------------------------------------------------------------- /src/test/testData/inspection/funcRefToPreventUnusedFunc4_1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | length("fname") 3 | } 4 | 5 | -------------------------------------------------------------------------------- /src/test/testData/inspection/unnecessarySemicolon1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print 123; 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unnecessarySemicolon1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print 123 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unnecessarySemicolon2.awk: -------------------------------------------------------------------------------- 1 | { print 123; } -------------------------------------------------------------------------------- /src/test/testData/inspection/unnecessarySemicolon2After.awk: -------------------------------------------------------------------------------- 1 | { print 123 } -------------------------------------------------------------------------------- /src/test/testData/inspection/unnecessarySemicolon3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print 123;; 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unnecessarySemicolon3After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print 123; 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unnecessarySemicolonNecessary1.awk: -------------------------------------------------------------------------------- 1 | function f() { while(1); } -------------------------------------------------------------------------------- /src/test/testData/inspection/unnecessarySemicolonNecessary2.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | for(;;); 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unnecessarySemicolonNecessary3.awk: -------------------------------------------------------------------------------- 1 | { 2 | if(1) ; 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unnecessarySemicolonNecessary4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | ; 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unresolvedFunctionCall1.awk: -------------------------------------------------------------------------------- 1 | { 2 | print unresolved() + 1 3 | } 4 | function a() { 5 | 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unresolvedFunctionCall1After.awk: -------------------------------------------------------------------------------- 1 | { 2 | print unresolved() + 1 3 | } 4 | function unresolved() {} 5 | function a() { 6 | 7 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unresolvedFunctionCall2.awk: -------------------------------------------------------------------------------- 1 | { 2 | print substr("abc",1,1) + 1 3 | } 4 | function a() { 5 | 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unresolvedFunctionCall3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | a(@fun(123) + 1) 3 | } 4 | function a() { 5 | 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unresolvedFunctionCall4.awk: -------------------------------------------------------------------------------- 1 | { 2 | print unresolved(-7, 123,1.23, "string","12s"," ","x" "y", SUBSEP,a,a[0],a[0][0],b, Var, f(123), "another string", length, 2+2) 3 | } 4 | function f() { 5 | 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unresolvedFunctionCall4After.awk: -------------------------------------------------------------------------------- 1 | { 2 | print unresolved(-7, 123,1.23, "string","12s"," ","x" "y", SUBSEP,a,a[0],a[0][0],b, Var, f(123), "another string", length, 2+2) 3 | } 4 | function unresolved(arg, i123, f123, string, s, s1, arg1, arg2, a, arg3, arg4, b, var, arg5, anotherString, arg6, arg7) {} 5 | function f() { 6 | 7 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unresolvedInclude1.awk: -------------------------------------------------------------------------------- 1 | @include "unresolved" -------------------------------------------------------------------------------- /src/test/testData/inspection/unresolvedIncludeNoProblem1.awk: -------------------------------------------------------------------------------- 1 | @include "resolved" -------------------------------------------------------------------------------- /src/test/testData/inspection/unresolvedIncludeNoProblem2.awk: -------------------------------------------------------------------------------- 1 | @include "resolved.awk" -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunction1.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | print "I'm unused" 3 | b() 4 | } 5 | 6 | function b() { 7 | print "I'm used" 8 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunction1After.awk: -------------------------------------------------------------------------------- 1 | function b() { 2 | print "I'm used" 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunction2Recursive.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | print "I'm unused recursive function" 3 | a() 4 | b() 5 | } 6 | 7 | function b() { 8 | print "I'm used" 9 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunction2RecursiveAfter.awk: -------------------------------------------------------------------------------- 1 | function b() { 2 | print "I'm used" 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam1.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | a(1 ,2) 3 | a(111, 2222) 4 | a( 111 , 2222 ) 5 | a(1111) 6 | a() 7 | } 8 | 9 | function a(unused1 , unused2 ) { 10 | print "hello" 11 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam1After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | a(2) 3 | a(2222) 4 | a( 2222 ) 5 | a() 6 | a() 7 | } 8 | 9 | function a(unused2 ) { 10 | print "hello" 11 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam2_0.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | a(1 ,2) 3 | a(111, 2222) 4 | a( 111 , 2222 ) 5 | a(1111) 6 | a() 7 | } 8 | 9 | function a(unused1 , unused2 ) { 10 | print "hello" 11 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam2_0After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | a(1) 3 | a(111) 4 | a( 111) 5 | a(1111) 6 | a() 7 | } 8 | 9 | function a(unused1) { 10 | print "hello" 11 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam2_1.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | a(1 ,2) 3 | a(111, 2222) 4 | a( 111 , 2222 ) 5 | a(1111) 6 | a() 7 | } 8 | 9 | function a(used , unused2 ) { 10 | print "hello" used 11 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam2_1After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | a(1) 3 | a(111) 4 | a( 111) 5 | a(1111) 6 | a() 7 | } 8 | 9 | function a(used) { 10 | print "hello" used 11 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam3_0.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | a(1 ,2) 3 | a(111, 2222) 4 | a( 111 , 2222 ) 5 | a(1111) 6 | a() 7 | } 8 | 9 | function a( unused1,\ 10 | unused2 ) { 11 | print "hello" 12 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam3_0After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | a(2) 3 | a(2222) 4 | a( 2222 ) 5 | a() 6 | a() 7 | } 8 | 9 | function a( \ 10 | unused2 ) { 11 | print "hello" 12 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam3_1.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | a(1 ,2) 3 | a(111, 2222) 4 | a( 111 , 2222 ) 5 | a(1111) 6 | a() 7 | } 8 | 9 | function a( unused1\ 10 | ,unused2 ) { 11 | print "hello" 12 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam3_1After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | a(2) 3 | a(2222) 4 | a( 2222 ) 5 | a() 6 | a() 7 | } 8 | 9 | function a( \ 10 | unused2 ) { 11 | print "hello" 12 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam4.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | a(1 ,2) 3 | a(111, 2222) 4 | a( 111 , 2222 ) 5 | a(1111) 6 | a() 7 | } 8 | 9 | function a( unused1,\ 10 | unused2 ) { 11 | print "hello" 12 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam4After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | a(1) 3 | a(111) 4 | a( 111) 5 | a(1111) 6 | a() 7 | } 8 | 9 | function a( unused1) { 10 | print "hello" 11 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam5.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | } 3 | 4 | function a( unused) { 5 | print "hello" 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam5After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | } 3 | 4 | function a() { 5 | print "hello" 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam6_0.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | } 3 | 4 | function a(p, unused) { 5 | print "hello" 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam6_0After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | } 3 | 4 | function a(p) { 5 | print "hello" 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam6_1.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | } 3 | 4 | function a(p, unused, l2) { 5 | print "hello" 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam6_1After.awk: -------------------------------------------------------------------------------- 1 | function f() { 2 | } 3 | 4 | function a(p, l2) { 5 | print "hello" 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam7_0.awk: -------------------------------------------------------------------------------- 1 | function f(a, b, c){ return a+c } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam7_0After.awk: -------------------------------------------------------------------------------- 1 | function f(a, c){ return a+c } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam7_1.awk: -------------------------------------------------------------------------------- 1 | function f(unused , loc){} -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam7_1After.awk: -------------------------------------------------------------------------------- 1 | function f( loc){} -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam7_2.awk: -------------------------------------------------------------------------------- 1 | function f( unused , loc){} -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam7_2After.awk: -------------------------------------------------------------------------------- 1 | function f( loc){} -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam7_3.awk: -------------------------------------------------------------------------------- 1 | function f(a,b,c){ return a+c } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam7_3After.awk: -------------------------------------------------------------------------------- 1 | function f(a,c){ return a+c } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam7_4.awk: -------------------------------------------------------------------------------- 1 | function f(a, b,c){ return a+c } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParam7_4After.awk: -------------------------------------------------------------------------------- 1 | function f(a, c){ return a+c } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedFunctionParamNoProblem1.awk: -------------------------------------------------------------------------------- 1 | function f(a) { 2 | @a() 3 | } 4 | -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar1_0.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | GlobalVar = 1 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar1_0After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar1_1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { globalVar = 1 } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar1_1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar2_0.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | globalArr["aaa"] 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar2_0After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar2_1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | globalArr["aaa"] 3 | globalArr["bbb"] 4 | globalArr["ccc"] = 1 5 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar2_1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | 3 | 4 | 5 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar2_2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | globalVar=1 3 | if (1) { globalVar=2 } 4 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar2_2After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | 3 | if (1) { } 4 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | init1() 3 | } 4 | function init1() { 5 | split("", GlobalArr) 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar3After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | init1() 3 | } 4 | function init1() { 5 | 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar4.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | GlobalVar=1 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVar4After.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | 3 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVarNoProblem1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | GlobalVar = 1 3 | } 4 | END { 5 | print GlobalVar 6 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVarNoProblem2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | init1() 3 | } 4 | function init1() { 5 | split("", GlobalArr) 6 | } 7 | function a() { 8 | print GlobalArr["k"] 9 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVarNoProblem3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { init1() } 2 | function init1(localArr) { split("",localArr) } # no problem -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVarNoProblem4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | GlobalVar = 1 3 | GlobalVar = 2 4 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVarNoProblem5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | GlobalArr["key1"] 3 | GlobalArr["key2"] 4 | } -------------------------------------------------------------------------------- /src/test/testData/inspection/unusedGlobalVarNoProblem6.awk: -------------------------------------------------------------------------------- 1 | function a() { 2 | GlobalVar=1 3 | } 4 | END { print GlobalVar } -------------------------------------------------------------------------------- /src/test/testData/inspection/usedFunctionInFileOutsideProject.awk: -------------------------------------------------------------------------------- 1 | { 2 | print usedFunction() 3 | } 4 | 5 | function usedFunction() { 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/inspection/usedVarInFileOutsideProject.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | VAR=123 3 | print VAR 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/lexer/ActionlessBegin.awk: -------------------------------------------------------------------------------- 1 | BEGIN 2 | { } -------------------------------------------------------------------------------- /src/test/testData/lexer/ActionlessBegin.txt: -------------------------------------------------------------------------------- 1 | AwkTokenType.BEGIN ('BEGIN') 2 | BAD_CHARACTER ('\n') 3 | AwkTokenType.{ ('{') 4 | WHITE_SPACE (' ') 5 | AwkTokenType.} ('}') -------------------------------------------------------------------------------- /src/test/testData/lexer/ActionlessEnd.awk: -------------------------------------------------------------------------------- 1 | END 2 | 1 -------------------------------------------------------------------------------- /src/test/testData/lexer/ActionlessEnd.txt: -------------------------------------------------------------------------------- 1 | AwkTokenType.END ('END') 2 | BAD_CHARACTER ('\n') 3 | BAD_CHARACTER ('1') -------------------------------------------------------------------------------- /src/test/testData/lexer/At.awk: -------------------------------------------------------------------------------- 1 | @ 2 | @include "" 3 | BEGIN {} -------------------------------------------------------------------------------- /src/test/testData/lexer/At.txt: -------------------------------------------------------------------------------- 1 | AwkTokenType.@ ('@') 2 | AwkTokenType.NEWLINE ('\n') 3 | AwkTokenType.@ ('@') 4 | AwkTokenType.include ('include') 5 | WHITE_SPACE (' ') 6 | AwkTokenType.STRING ('""') 7 | AwkTokenType.NEWLINE ('\n') 8 | AwkTokenType.BEGIN ('BEGIN') 9 | WHITE_SPACE (' ') 10 | AwkTokenType.{ ('{') 11 | AwkTokenType.} ('}') -------------------------------------------------------------------------------- /src/test/testData/lexer/BadChar.awk: -------------------------------------------------------------------------------- 1 | ` -------------------------------------------------------------------------------- /src/test/testData/lexer/BadChar.txt: -------------------------------------------------------------------------------- 1 | BAD_CHARACTER ('`') -------------------------------------------------------------------------------- /src/test/testData/lexer/Builtins.awk: -------------------------------------------------------------------------------- 1 | { 2 | split() 3 | isarray() 4 | userFunc() 5 | NR 6 | PROCINFO 7 | var 8 | } -------------------------------------------------------------------------------- /src/test/testData/lexer/EreAmbiguity1.awk: -------------------------------------------------------------------------------- 1 | a(1/2,3/4) -------------------------------------------------------------------------------- /src/test/testData/lexer/EreAmbiguity1.txt: -------------------------------------------------------------------------------- 1 | AwkTokenType.FUNC_NAME ('a') 2 | AwkTokenType.( ('(') 3 | AwkTokenType.NUMBER ('1') 4 | AwkTokenType./ ('/') 5 | AwkTokenType.NUMBER ('2') 6 | AwkTokenType., (',') 7 | AwkTokenType.NUMBER ('3') 8 | AwkTokenType./ ('/') 9 | AwkTokenType.NUMBER ('4') 10 | AwkTokenType.) (')') -------------------------------------------------------------------------------- /src/test/testData/lexer/ForWhileEtc.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | for(;;) { } 3 | while(1) { } 4 | print("") 5 | printf("") 6 | exit(1) 7 | } 8 | function f() {return(1)} -------------------------------------------------------------------------------- /src/test/testData/lexer/FunctionBegin.awk: -------------------------------------------------------------------------------- 1 | function BEGIN(){} -------------------------------------------------------------------------------- /src/test/testData/lexer/FunctionBegin.txt: -------------------------------------------------------------------------------- 1 | AwkTokenType.FUNCTION ('function') 2 | WHITE_SPACE (' ') 3 | AwkTokenType.BEGIN ('BEGIN') 4 | BAD_CHARACTER ('(') 5 | BAD_CHARACTER (')') 6 | AwkTokenType.{ ('{') 7 | AwkTokenType.} ('}') -------------------------------------------------------------------------------- /src/test/testData/lexer/FunctionEnd.awk: -------------------------------------------------------------------------------- 1 | function END(){} -------------------------------------------------------------------------------- /src/test/testData/lexer/FunctionEnd.txt: -------------------------------------------------------------------------------- 1 | AwkTokenType.FUNCTION ('function') 2 | WHITE_SPACE (' ') 3 | AwkTokenType.END ('END') 4 | BAD_CHARACTER ('(') 5 | BAD_CHARACTER (')') 6 | AwkTokenType.{ ('{') 7 | AwkTokenType.} ('}') -------------------------------------------------------------------------------- /src/test/testData/lexer/If1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { if (1) { } } -------------------------------------------------------------------------------- /src/test/testData/lexer/If2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { if(1) { } } -------------------------------------------------------------------------------- /src/test/testData/lexer/Numbers.awk: -------------------------------------------------------------------------------- 1 | 123 2 | 1.2 3 | 3e4 4 | 3E4 5 | 3E+4 6 | 3e-4 7 | 1. 8 | .1 9 | 1.e5 10 | .1E-5 -------------------------------------------------------------------------------- /src/test/testData/parser/BuiltInFuncSpace.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print substr ("abc",2,1) } -------------------------------------------------------------------------------- /src/test/testData/parser/DeleteArr.awk: -------------------------------------------------------------------------------- 1 | 2 | BEGIN { 3 | delete arr 4 | } -------------------------------------------------------------------------------- /src/test/testData/parser/Empty.awk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xonixx/intellij-awk/450f1d55b679ae385b0ea056621d7a2c82910f91/src/test/testData/parser/Empty.awk -------------------------------------------------------------------------------- /src/test/testData/parser/FuncName.awk: -------------------------------------------------------------------------------- 1 | 2 | function f1() {print "f1"} 3 | function f2 () { print "f2" } -------------------------------------------------------------------------------- /src/test/testData/parser/Issue63_1.awk: -------------------------------------------------------------------------------- 1 | function a() { print "A" } 2 | function b() { print "B" } BEGIN { a(); b(); } -------------------------------------------------------------------------------- /src/test/testData/parser/Issue63_2.awk: -------------------------------------------------------------------------------- 1 | BEGIN{} 2 | BEGIN{}BEGIN{} -------------------------------------------------------------------------------- /src/test/testData/parser/Issue63_3.awk: -------------------------------------------------------------------------------- 1 | BEGIN{}BEGIN{}BEGIN{} -------------------------------------------------------------------------------- /src/test/testData/parser/MultilineStr.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | split("one two three \ 3 | four five",Numbers) 4 | } -------------------------------------------------------------------------------- /src/test/testData/parser/Print1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print (1), 1 } -------------------------------------------------------------------------------- /src/test/testData/parser/Print2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print 1 == 0 } -------------------------------------------------------------------------------- /src/test/testData/parser/Print3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print 1 != 0 } -------------------------------------------------------------------------------- /src/test/testData/parser/Print4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print 1 < 0 } -------------------------------------------------------------------------------- /src/test/testData/parser/Print5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print 1 > 0 } -------------------------------------------------------------------------------- /src/test/testData/parser/PrintGetline.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print getline } -------------------------------------------------------------------------------- /src/test/testData/parser/PrintWithParenProblem.awk: -------------------------------------------------------------------------------- 1 | 2 | BEGIN { 3 | print(1, 2) 4 | } -------------------------------------------------------------------------------- /src/test/testData/parser/Semi0.awk: -------------------------------------------------------------------------------- 1 | {}{} -------------------------------------------------------------------------------- /src/test/testData/parser/Semi1.awk: -------------------------------------------------------------------------------- 1 | {};{} -------------------------------------------------------------------------------- /src/test/testData/parser/Semi2Err.awk: -------------------------------------------------------------------------------- 1 | {};;{} -------------------------------------------------------------------------------- /src/test/testData/parser/Semi3.awk: -------------------------------------------------------------------------------- 1 | {print;;} -------------------------------------------------------------------------------- /src/test/testData/parser/UnterminatedElse1.awk: -------------------------------------------------------------------------------- 1 | { 2 | print 3 | if (1) print 1 4 | else print 2 } -------------------------------------------------------------------------------- /src/test/testData/parser/UserFuncSpace.awk: -------------------------------------------------------------------------------- 1 | function a (s) { print s } BEGIN { a ("A") } -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd awk_book 4 | (( n=0 )) 5 | > ../awk_book.txt 6 | for f in * 7 | do 8 | newF="test${n}.awk" 9 | echo "$n;$newF;$f" >> ../awk_book.txt 10 | mv "$f" "$newF" 11 | (( n++ )) 12 | done -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test0.awk: -------------------------------------------------------------------------------- 1 | { print $1, $3 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test1.awk: -------------------------------------------------------------------------------- 1 | { print $1, $2 * $3 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test10.awk: -------------------------------------------------------------------------------- 1 | $2 >= 4 || $3 >= 20 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test107.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = "\t" } 2 | FILENAME == "capitals" { 3 | cap[$1] = $2 4 | } 5 | FILENAME == "countries" && $4 == "Asia" { 6 | print $1, $3, cap[$1] 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test108.awk: -------------------------------------------------------------------------------- 1 | # nm.format - add filename to each nm output line 2 | 3 | NF == 1 { file = $1 } 4 | NF == 2 { print file, $1, $2 } 5 | NF == 3 { print file, $2, $3 } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test109.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = "" } 2 | /New York/ 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test11.awk: -------------------------------------------------------------------------------- 1 | $2 >= 4 2 | $3 >= 20 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test110.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = ""; ORS = "\n\n" } 2 | /New York/ 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test112.awk: -------------------------------------------------------------------------------- 1 | $0 >= "M" 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test114.awk: -------------------------------------------------------------------------------- 1 | /Asia/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test115.awk: -------------------------------------------------------------------------------- 1 | $1 < $4 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test116.awk: -------------------------------------------------------------------------------- 1 | $2 !~ /^[0-9]+$/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test117.awk: -------------------------------------------------------------------------------- 1 | BEGIN { digits = "^[0-9]+$" } 2 | $2 ~ digits 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test118.awk: -------------------------------------------------------------------------------- 1 | $4 == "Asia" && $3 > 500 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test119.awk: -------------------------------------------------------------------------------- 1 | $4 == "Asia" || $4 == "Europe" 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test12.awk: -------------------------------------------------------------------------------- 1 | !($2 < 4 && $3 < 20) 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test120.awk: -------------------------------------------------------------------------------- 1 | /Asia/ || /Europe/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test121.awk: -------------------------------------------------------------------------------- 1 | $4 ~ /^(Asia|Europe)$/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test122.awk: -------------------------------------------------------------------------------- 1 | /Asia|Europe/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test123.awk: -------------------------------------------------------------------------------- 1 | /Europe/, /Africa/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test124.awk: -------------------------------------------------------------------------------- 1 | FNR <= 5 { print FILENAME ": " $0 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test125.awk: -------------------------------------------------------------------------------- 1 | FNR == 1, FNR == 5 { print FILENAME ": " $0 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test126.awk: -------------------------------------------------------------------------------- 1 | $4 == "Asia" { print $1, 1000 * $2 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test127.awk: -------------------------------------------------------------------------------- 1 | { $2 /= 1000; print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test128.awk: -------------------------------------------------------------------------------- 1 | $4 == "Asia" { pop = pop + $3; n = n + 1 } 2 | END { print "Total population of the", n, 3 | "Asian countries is", pop, "million." 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test129.awk: -------------------------------------------------------------------------------- 1 | $3 > maxpop { maxpop = $3; country = $1 } 2 | END { print "country with largest population:", 3 | country, maxpop 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test13.awk: -------------------------------------------------------------------------------- 1 | NF != 3 { print $0, "number of fields is not equal to 3" } 2 | $2 < 3.35 { print $0, "rate is below minimum wage" } 3 | $2 > 10 { print $0, "rate exceeds $10 per hour" } 4 | $3 < 0 { print $0, "negative hours worked" } 5 | $3 > 60 { print $0, "too many hours worked" } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test130.awk: -------------------------------------------------------------------------------- 1 | { print NR ":" $0 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test131.awk: -------------------------------------------------------------------------------- 1 | { gsub(/USA/, "United States"); print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test132.awk: -------------------------------------------------------------------------------- 1 | { $1 = substr($1, 1, 3); print $0 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test133.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print "1E2"+0, "12E"+0, "E12"+0, "1X2Y3"+0 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test134.awk: -------------------------------------------------------------------------------- 1 | { s = s substr($1, 1, 3) " " } 2 | END { print s } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test135.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print 1E2 "", 12E-2 "", E12 "", 1.23456789 "" } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test136.awk: -------------------------------------------------------------------------------- 1 | { $2 = $2 / 1000; print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test137.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = OFS = "\t" } 2 | $4 == "North America" { $4 = "NA" } 3 | $4 == "South America" { $4 = "SA" } 4 | { print } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test138.awk: -------------------------------------------------------------------------------- 1 | { print ($1 != 0 ? 1/$1 : "$1 is zero, line " NR) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test139.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = OFS = "\t" } 2 | { $5 = 1000 * $3 / $2; print } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test14.awk: -------------------------------------------------------------------------------- 1 | { print NF, $1, $NF } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test141.awk: -------------------------------------------------------------------------------- 1 | { i = 1 2 | while (i <= NF) { 3 | print $i 4 | i++ 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test142.awk: -------------------------------------------------------------------------------- 1 | { for (i = 1; i <= NF; i++) 2 | print $i 3 | } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test143.awk: -------------------------------------------------------------------------------- 1 | /Asia/ { pop["Asia"] += $3 } 2 | /Europe/ { pop["Europe"] += $3 } 3 | END { print "Asian population is", 4 | pop["Asia"], "million." 5 | print "European population is", 6 | pop["Europe"], "million." 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test144.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = "\t" } 2 | { pop[$4] += $3 } 3 | END { for (name in pop) 4 | print name, pop[name] 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test145.awk: -------------------------------------------------------------------------------- 1 | { print max($1,max($2,$3)) } # print maximum of $1, $2, $3 2 | 3 | function max(m, n) { 4 | return m > n ? m : n 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test146.awk: -------------------------------------------------------------------------------- 1 | function max(m, n) { 2 | return m > n ? m : n 3 | } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test147.awk: -------------------------------------------------------------------------------- 1 | BEGIN { OFS = ":"; ORS = "\n\n" } 2 | { print $1, $2 } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test148.awk: -------------------------------------------------------------------------------- 1 | { print($1, $3) > ($3 > 100 ? "bigpop" : "smallpop") } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test149.awk: -------------------------------------------------------------------------------- 1 | $3 > 100 { print $1, $3 >"bigpop" } 2 | $3 <= 100 { print $1, $3 >"smallpop" } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test15.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print "NAME RATE HOURS"; print "" } 2 | { print } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test150.awk: -------------------------------------------------------------------------------- 1 | { print > $1 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test151.awk: -------------------------------------------------------------------------------- 1 | # print continents and populations, sorted by population 2 | 3 | BEGIN { FS = "\t" } 4 | { pop[$4] += $3 } 5 | END { for (c in pop) 6 | printf("%15s\t%6d\n", c, pop[c]) | "sort -t'\t' +1rn" 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test152.awk: -------------------------------------------------------------------------------- 1 | # include - replace #include "f" by contents of file f 2 | 3 | /^#include/ { 4 | gsub(/"/, "", $2) 5 | while (getline x <$2 > 0) 6 | print x 7 | next 8 | } 9 | { print } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test153.awk: -------------------------------------------------------------------------------- 1 | # echo - print command-line arguments 2 | 3 | BEGIN { 4 | for (i = 1; i < ARGC; i++) 5 | printf "%s ", ARGV[i] 6 | printf "\n" 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test154.awk: -------------------------------------------------------------------------------- 1 | $1 == "#include" { gsub(/"/, "", $2); system("cat " $2); next } 2 | { print } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test155.awk: -------------------------------------------------------------------------------- 1 | BEGIN { x = 0; y = 1 } 2 | 3 | $1 > x { if (x == y+1) { 4 | x = 1 5 | y = x * 2 6 | } else 7 | print x, z[x] 8 | } 9 | 10 | NR > 1 { print $1 } 11 | 12 | END { print NR } 13 | 14 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test159.awk: -------------------------------------------------------------------------------- 1 | # prep1 - prepare countries by continent and pop. den. 2 | 3 | BEGIN { FS = "\t" } 4 | { printf("%s:%s:%d:%d:%.1f\n", 5 | $4, $1, $3, $2, 1000*$3/$2) | "sort -t: +0 -1 +4rn" 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test16.awk: -------------------------------------------------------------------------------- 1 | END { print NR, "employees" } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test160.awk: -------------------------------------------------------------------------------- 1 | # prep2 - prepare countries by continent, inverse pop. den. 2 | 3 | BEGIN { FS = "\t"} 4 | { den = 1000*$3/$2 5 | printf("%-15s:%12.8f:%s:%d:%d:%.1f\n", 6 | $4, 1/den, $1, $3, $2, den) | "sort" 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test162.awk: -------------------------------------------------------------------------------- 1 | # printprof - print profiling counts 2 | # usage: awk -f printprof awkprog 3 | # prints awkprog with statement counts from prof.cnts 4 | 5 | BEGIN { while (getline < "prof.cnts" > 0) cnt[++i] = $1 } 6 | /{/ { printf("%5d", cnt[++j]) } 7 | { printf("\t%s\n", $0) } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test168.awk: -------------------------------------------------------------------------------- 1 | # randint - return random integer x, 1 <= x <= n 2 | 3 | function randint(n) { 4 | return int(n * rand()) + 1 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test169.awk: -------------------------------------------------------------------------------- 1 | # randlet - generate random lower-case letter 2 | 3 | function randlet() { 4 | return substr("abcdefghijklmnopqrstuvwxyz", randint(26), 1) 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test17.awk: -------------------------------------------------------------------------------- 1 | $3 > 15 { emp = emp + 1 } 2 | END { print emp, "employees worked more than 15 hours" } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test170.awk: -------------------------------------------------------------------------------- 1 | /^[0-9]+$/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test171.awk: -------------------------------------------------------------------------------- 1 | /^[0-9][0-9][0-9]$/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test172.awk: -------------------------------------------------------------------------------- 1 | /^(\+|-)?[0-9]+\.?[0-9]*$/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test173.awk: -------------------------------------------------------------------------------- 1 | /^[+-]?[0-9]+[.]?[0-9]*$/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test174.awk: -------------------------------------------------------------------------------- 1 | /^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)([eE][+-]?[0-9]+)?$/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test175.awk: -------------------------------------------------------------------------------- 1 | /^[A-Za-z][A-Za-z0-9]*$/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test176.awk: -------------------------------------------------------------------------------- 1 | /^[A-Za-z]$|^[A-Za-z][0-9]$/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test177.awk: -------------------------------------------------------------------------------- 1 | /^[A-Za-z][0-9]?$/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test178.awk: -------------------------------------------------------------------------------- 1 | { x[NR] = $0 } 2 | END { for (i = NR; i > 0; i--) print x[i] } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test18.awk: -------------------------------------------------------------------------------- 1 | { pay = pay + $2 * $3 } 2 | END { print NR, "employees" 3 | print "total pay is", pay 4 | print "average pay is", pay/NR 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test184.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = ""; FS = "\n" } 2 | $1 ~ /Smith$/ { print $1, $4 } # name, phone 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test189.awk: -------------------------------------------------------------------------------- 1 | # sumcomma - add up numbers containing commas 2 | 3 | { gsub(/,/, ""); sum += $0 } 4 | END { print sum } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test19.awk: -------------------------------------------------------------------------------- 1 | { last = $0 } 2 | END { print last } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test194.awk: -------------------------------------------------------------------------------- 1 | # unbundle - unpack a bundle into separate files 2 | 3 | $1 != prev { close(prev); prev = $1 } 4 | { print substr($0, index($0, " ") + 1) >$1 } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test195.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = "\t" } 2 | /^=/ { print substr($0, 2); next } 3 | { printf("%s {\n\tprintf(\"line %%d, %s: %%s\\n\",NR,$0) }\n", 4 | $1, $2) 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test197.awk: -------------------------------------------------------------------------------- 1 | # xref - create numeric values for symbolic names 2 | # input: text with definitions for symbolic names 3 | # output: awk program to replace symbolic names by numbers 4 | 5 | /^\.#/ { printf("{ gsub(/%s/, \"%d\") }\n", $2, ++count[$1]) } 6 | END { printf("!/^[.]#/\n") } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test198.awk: -------------------------------------------------------------------------------- 1 | /^\.#/ { s[$2] = ++count[$1]; next } 2 | { for (i in s) 3 | gsub(i, s[i]) 4 | print 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test199.awk: -------------------------------------------------------------------------------- 1 | /^\.#/ { printf("{ gsub(/%s/, \"%d\") }\n", $2, ++count[$1]) 2 | if (saw[$2]) 3 | print NR ": redefinition of", $2, "from line", saw[$2] 4 | saw[$2] = NR 5 | } 6 | END { printf("!/^[.]#/\n") } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test2.awk: -------------------------------------------------------------------------------- 1 | { print NR, $0 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test20.awk: -------------------------------------------------------------------------------- 1 | $2 > maxrate { maxrate = $2; maxemp = $1 } 2 | END { print "highest hourly rate:", maxrate, "for", maxemp } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test21.awk: -------------------------------------------------------------------------------- 1 | { total[$1] += $2 } 2 | END { for (x in total) print x, total[x] | "sort" } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test22.awk: -------------------------------------------------------------------------------- 1 | { names = names $1 " " } 2 | END { print names } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test23.awk: -------------------------------------------------------------------------------- 1 | { nc = nc + length($0) + 1 2 | nw = nw + NF 3 | } 4 | END { print NR, "lines,", nw, "words,", nc, "characters" } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test24.awk: -------------------------------------------------------------------------------- 1 | { print $1, length($1) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test25.awk: -------------------------------------------------------------------------------- 1 | $2 > 6 { n = n + 1; pay = pay + $2 * $3 } 2 | END { if (n > 0) 3 | print n, "employees, total pay is", pay, 4 | "average pay is", pay/n 5 | else 6 | print "no employees are paid more than $6/hour" 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test26.awk: -------------------------------------------------------------------------------- 1 | # reverse - print input in reverse order by line 2 | 3 | { line[NR] = $0 } # remember each input line 4 | 5 | END { i = NR # print lines in reverse order 6 | while (i > 0) { 7 | print line[i] 8 | i = i - 1 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test27.awk: -------------------------------------------------------------------------------- 1 | # reverse - print input in reverse order by line 2 | 3 | { line[NR] = $0 } # remember each input line 4 | 5 | END { for (i = NR; i > 0; i = i - 1) 6 | print line[i] 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test28.awk: -------------------------------------------------------------------------------- 1 | END { print NR } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test29.awk: -------------------------------------------------------------------------------- 1 | NR == 10 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test3.awk: -------------------------------------------------------------------------------- 1 | { print "total pay for", $1, "is", $2 * $3 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test30.awk: -------------------------------------------------------------------------------- 1 | { field = $NF} 2 | END { print field } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test31.awk: -------------------------------------------------------------------------------- 1 | NF > 4 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test32.awk: -------------------------------------------------------------------------------- 1 | $NF > 4 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test33.awk: -------------------------------------------------------------------------------- 1 | { print $NF } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test34.awk: -------------------------------------------------------------------------------- 1 | { nf = nf + NF } 2 | END { print nf } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test35.awk: -------------------------------------------------------------------------------- 1 | /Beth/ { nlines = nlines + 1 } 2 | END { print nlines } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test36.awk: -------------------------------------------------------------------------------- 1 | $1 > max { max = $1; maxline = $0 } 2 | END { print max, maxline } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test37.awk: -------------------------------------------------------------------------------- 1 | NF > 0 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test38.awk: -------------------------------------------------------------------------------- 1 | length($0) > 80 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test39.awk: -------------------------------------------------------------------------------- 1 | { print NF, $0 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test4.awk: -------------------------------------------------------------------------------- 1 | { printf("%-8s $%6.2f\n", $1, $2 * $3) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test40.awk: -------------------------------------------------------------------------------- 1 | { print $2, $1 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test41.awk: -------------------------------------------------------------------------------- 1 | { temp = $1; $1 = $2; $2 = temp; print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test42.awk: -------------------------------------------------------------------------------- 1 | { $1 = NR; print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test43.awk: -------------------------------------------------------------------------------- 1 | { $2 = ""; print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test44.awk: -------------------------------------------------------------------------------- 1 | { for (i = NF; i > 0; i = i - 1) printf("%s ", $i) 2 | printf("\n") 3 | } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test45.awk: -------------------------------------------------------------------------------- 1 | { sum = 0 2 | for (i = 1; i <= NF; i = i + 1) sum = sum + $i 3 | print sum 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test46.awk: -------------------------------------------------------------------------------- 1 | { for (i = 1; i <= NF; i = i + 1) sum = sum + $i } 2 | END { print sum } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test47.awk: -------------------------------------------------------------------------------- 1 | { for (i = 1; i <= NF; i = i + 1) if ($i < 0) $i = -$i 2 | print 3 | } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test49.awk: -------------------------------------------------------------------------------- 1 | /^[+-]?[0-9][0-9]?[0-9]?(,[0-9][0-9][0-9])*$/ { 2 | gsub(/,/, "") 3 | sum += $0 4 | next 5 | } 6 | { print "bad format:", $0 } 7 | END { print sum } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test5.awk: -------------------------------------------------------------------------------- 1 | { printf("total pay for %s is $%.2f\n", $1, $2 * $3) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test50.awk: -------------------------------------------------------------------------------- 1 | /^[+-]?[0-9][0-9]?[0-9]?(,[0-9][0-9][0-9])*([.][0-9]*)?$/ { 2 | gsub(/,/, "") 3 | sum += $0 4 | next 5 | } 6 | { print "bad format:", $0} 7 | END { print sum } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test54.awk: -------------------------------------------------------------------------------- 1 | { area += $area }; END { print area/NR } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test57.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | sign = "[+-]?" 3 | decimal = "[0-9]+[.]?[0-9]*" 4 | fraction = "[.][0-9]+" 5 | exponent = "([eE]" sign "[0-9]+)?" 6 | number = "^" sign "(" decimal "|" fraction ")" exponent "$" 7 | } 8 | $0 ~ number 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test58.awk: -------------------------------------------------------------------------------- 1 | # bundle - combine multiple files into one 2 | 3 | { print FILENAME, $0 } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test6.awk: -------------------------------------------------------------------------------- 1 | $2 >= 5 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test66.awk: -------------------------------------------------------------------------------- 1 | # checkgen - generate data-checking program 2 | # input: expressions of the form: pattern tabs message 3 | # output: program to print message when pattern matches 4 | 5 | BEGIN { FS = "\t+" } 6 | { printf("%s {\n\tprintf(\"line %%d, %s: %%s\\n\",NR,$0) }\n", 7 | $1, $2) 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test67.awk: -------------------------------------------------------------------------------- 1 | # choose - print in order k random elements from A[1]..A[n] 2 | 3 | function choose(A, k, n, i) { 4 | for (i = 1; n > 0; i++) 5 | if (rand() < k/n--) { 6 | print A[i] 7 | k-- 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test7.awk: -------------------------------------------------------------------------------- 1 | $2 * $3 > 50 { printf("$%.2f for %s\n", $2 * $3, $1) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test72.awk: -------------------------------------------------------------------------------- 1 | # date convert - convert mmddyy into yymmdd in $1 2 | 3 | { $1 = substr($1,5,2) substr($1,1,2) substr($1,3,2); print } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test76.awk: -------------------------------------------------------------------------------- 1 | /^doctor/, /^$/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test77.awk: -------------------------------------------------------------------------------- 1 | /^doctor/ { p = 1; next } 2 | p == 1 3 | /^$/ { p = 0; next } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test78.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = "\t" } 2 | { for (i = 1; i <= NF && $i != ""; i++) 3 | ; 4 | if (i <= NF) 5 | print 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test8.awk: -------------------------------------------------------------------------------- 1 | $1 == "Susie" 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test82.awk: -------------------------------------------------------------------------------- 1 | # interest2 - compute compound interest 2 | # input: amount rate years 3 | # output: compounded value at the end of each year 4 | 5 | { for (i = 1; i <= $3; i = i + 1) 6 | printf("\t%.2f\n", $1 * (1 + $2) ^ i) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test9.awk: -------------------------------------------------------------------------------- 1 | /Susie/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test95.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = "\t" } 2 | $1 ~ /Canada/ { 3 | printf("%s:\n", $1) 4 | printf("\t%d million people\n", $3) 5 | printf("\t%.3f million sq. mi.\n", $2/1000) 6 | printf("\t%.1f people per sq. mi.\n", 1000*$3/$2) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test96.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = "\t" } 2 | $1 ~ pat { 3 | printf("%s:\n", $1) 4 | printf("\t%d million people\n", $3) 5 | printf("\t%.3f million sq. mi.\n", $2/1000) 6 | printf("\t%.1f people per sq. mi.\n", 1000*$3/$2) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test97.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = "\t"; pat = ARGV[1]; ARGV[1] = "-" } 2 | $1 ~ pat { 3 | printf("%s:\n", $1) 4 | printf("\t%d million people\n", $3) 5 | printf("\t%.3f million sq. mi.\n", $2/1000) 6 | printf("\t%.1f people per sq. mi.\n", 1000*$3/$2) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/awk_book/test98.awk: -------------------------------------------------------------------------------- 1 | # interest1 - compute compound interest 2 | # input: amount rate years 3 | # output: compounded value at the end of each year 4 | 5 | { i = 1 6 | while (i <= $3) { 7 | printf("\t%.2f\n", $1 * (1 + $2) ^ i) 8 | i = i + 1 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/_gawk_version.txt: -------------------------------------------------------------------------------- 1 | 5.1.0 -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/aadelete2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | a[1][1]=1; 3 | b[1][1]=11; 4 | # delete b[a[1]][1]; 5 | f(b, a) 6 | } 7 | 8 | function f(arr, s) { 9 | delete arr[s[1]][1] 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/anchgsub.awk: -------------------------------------------------------------------------------- 1 | { gsub(/^[ ]*/, "", $0) ; print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/apiterm.awk: -------------------------------------------------------------------------------- 1 | @load "filefuncs" 2 | 3 | { 4 | print $1 5 | # check whether API terminates field strings properly 6 | print chdir($1) 7 | print ERRNO 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/argtest.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | for (i = 0; i < ARGC; i++) 3 | printf("ARGV[%d] = %s\n", i, ARGV[i]) 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/arrayind2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | pos[0] = 0 3 | posout[0] = 0 4 | split("00000779770060", f) # f[1] is a strnum 5 | print typeof(f[1]) 6 | pos[f[1]] = 1 7 | print typeof(f[1]) 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/arrayref.awk: -------------------------------------------------------------------------------- 1 | BEGIN { # foo[10] = 0 # put this line in and it will work 2 | test(foo); print foo[1] 3 | test2(foo2); print foo2[1] 4 | } 5 | 6 | function test(foo) 7 | { 8 | test2(foo) 9 | } 10 | function test2(bar) 11 | { 12 | bar[1] = 1 13 | } 14 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/arryref2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | foo(a) 3 | 4 | for (i in a) 5 | print i, a[i] 6 | } 7 | 8 | function foo(b) 9 | { 10 | bar(b) 11 | b[2] = "local" 12 | } 13 | 14 | function bar(c) 15 | { 16 | a[3] = "global" 17 | c[1] = "local2" 18 | } 19 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/arryref3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | foo(a) 3 | 4 | for (i in a) 5 | print i, a[i] 6 | } 7 | 8 | function foo(b) 9 | { 10 | a[1] = "global" 11 | b[2] = "local" 12 | bar(b) 13 | } 14 | 15 | function bar(c) 16 | { 17 | c = 12 18 | } 19 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/arryref4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | foo(a) 3 | 4 | print a 5 | } 6 | 7 | function foo(b) 8 | { 9 | a = "global" 10 | b[2] = "local" 11 | # bar(b) 12 | } 13 | 14 | function bar(c) 15 | { 16 | c = 12 17 | } 18 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/arryref5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | foo(a) 3 | 4 | print a 5 | } 6 | 7 | function foo(b) 8 | { 9 | b[2] = "local" 10 | a = "global" 11 | # bar(b) 12 | } 13 | 14 | function bar(c) 15 | { 16 | c = 12 17 | } 18 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/arynocls.awk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xonixx/intellij-awk/450f1d55b679ae385b0ea056621d7a2c82910f91/src/test/testData/parser/gawk/arynocls.awk -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/aryprm1.awk: -------------------------------------------------------------------------------- 1 | function f(a) { 2 | if (3 in a) 3 | print 7 4 | a = 5 5 | } 6 | 7 | BEGIN { 8 | f(arr) 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/aryprm2.awk: -------------------------------------------------------------------------------- 1 | function f(a) { 2 | delete a 3 | a *= 5 4 | } 5 | 6 | BEGIN { 7 | f(arr) 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/aryprm3.awk: -------------------------------------------------------------------------------- 1 | function f(a, i) { 2 | for (i in a) 3 | delete a[i] 4 | if (a == 0) 5 | print 7 6 | } 7 | 8 | BEGIN { 9 | f(arr) 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/aryprm4.awk: -------------------------------------------------------------------------------- 1 | function f(x){ 2 | x = 1 3 | } 4 | BEGIN { 5 | f(a) 6 | a[1] 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/aryprm5.awk: -------------------------------------------------------------------------------- 1 | function f(x){ 2 | x[1] = x 3 | } 4 | BEGIN { 5 | f(a) 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/aryprm6.awk: -------------------------------------------------------------------------------- 1 | function f(x){ 2 | a 3 | x[1] = 3 4 | } 5 | BEGIN { 6 | f(a) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/aryprm7.awk: -------------------------------------------------------------------------------- 1 | function f(x, y){ 2 | y[1] = x 3 | } 4 | BEGIN { 5 | f(a, a) 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/arysubnm.awk: -------------------------------------------------------------------------------- 1 | BEGIN { n = 11 ; foo[n] = n; print (2 <= n) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/asgext.awk: -------------------------------------------------------------------------------- 1 | { print $3; $4 = "a"; print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/assignnumfield.awk: -------------------------------------------------------------------------------- 1 | {$0 = ++i} 1 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/assignnumfield2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | $0 = 1 3 | print $1 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/back89.awk: -------------------------------------------------------------------------------- 1 | /a\8b/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/backbigs1.awk: -------------------------------------------------------------------------------- 1 | /\S/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/backgsub.awk: -------------------------------------------------------------------------------- 1 | { 2 | gsub( "\\\\", "\\\\") 3 | print 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/backsmalls1.awk: -------------------------------------------------------------------------------- 1 | /^\s$/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/backsmalls2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | pat["^\\s*$"] = pat["^\\s+$"] = pat["^\\s?$"] = pat["^\\s{1}$"] = 1 3 | for (i in pat) { 4 | if (" " !~ i) { 5 | printf("pattern \"%s\" failed!\n", i) > "/dev/stderr" 6 | exit 1 7 | } 8 | } 9 | exit 0 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/backw.awk: -------------------------------------------------------------------------------- 1 | /\w+/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/badassign1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { $i++ = 3 ; print i } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/badbuild.awk: -------------------------------------------------------------------------------- 1 | $1 == $2 == $3 { 2 | print "Gawk was built incorrectly." 3 | print "Use bison, not byacc or something else!" 4 | print "(Really, why aren't you using the awkgram.c in the distribution?)" 5 | exit 42 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/callparam.awk: -------------------------------------------------------------------------------- 1 | BEGIN { f() } 2 | 3 | function f( a, b) 4 | { 5 | a = b() 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/charasbytes.awk: -------------------------------------------------------------------------------- 1 | { print gensub(/\xE2\x80./, "ZZZ", "g", $0) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/childin.awk: -------------------------------------------------------------------------------- 1 | BEGIN { "cat" | getline; print; close("cat") } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/clos1way2.awk: -------------------------------------------------------------------------------- 1 | { 2 | # We use "&&" and not ";" so it works with Windows shells as well. 3 | cmd = "cat - 1>&2 && sleep 2" 4 | print |& cmd; close(cmd, "to") 5 | fflush(cmd) 6 | print |& cmd; print ERRNO 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/clos1way3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | # We use "&&" and not ";" so it works with Windows shells as well. 3 | cmd = "cat - 1>&2 && sleep 2" 4 | print "test1" |& cmd 5 | close(cmd, "to") 6 | print "test2" |& cmd 7 | print ERRNO 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/clos1way4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | # We use "&&" and not ";" so it works with Windows shells as well. 3 | cmd = "cat - 1>&2 && sleep 2" 4 | printf "%s\n", "test1" |& cmd 5 | close(cmd, "to") 6 | printf "%s\n", "test2" |& cmd 7 | print ERRNO 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/clos1way5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | # We use "&&" and not ";" so it works with Windows shells as well. 3 | cmd = "echo test1&& echo test2&& sleep 2" 4 | cmd |& getline x 5 | print x 6 | close(cmd, "from") 7 | cmd |& getline x 8 | print x 9 | print ERRNO 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/clos1way6.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | cmd = "cat - 1>&2; sleep 2" 3 | PROCINFO[cmd, "NONFATAL"] = 1 4 | print "test1" |& cmd; close(cmd, "to") 5 | fflush(cmd) 6 | print "test2" |& cmd; print gensub(/number/, "descriptor", 1, ERRNO) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/closebad.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | f = "/no/such/file/1" 3 | print (getline junk < f) 4 | print close(f) 5 | f = "/no/such/file/2" 6 | print close(f) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/clsflnam.awk: -------------------------------------------------------------------------------- 1 | #! /usr/bin/awk -f 2 | BEGIN { 3 | getline 4 | # print ("FILENAME =", FILENAME) > "/dev/stderr" 5 | #Rewind the file 6 | if (close(FILENAME)) { 7 | print "Error `" ERRNO "' closing input file" > "/dev/stderr"; 8 | exit; 9 | } 10 | } 11 | { print "Analysing ", $0 } 12 | 13 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/colonwarn.awk: -------------------------------------------------------------------------------- 1 | BEGIN { pattern = ARGV[1] + 0; delete ARGV } 2 | pattern == 1 { sub(/[][:space:]]/,""); print } 3 | pattern == 2 { sub(/[\][:space:]]/,""); print } 4 | pattern == 3 { sub(/[^][:space:]]/,""); print } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/compare.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | if (ARGV[1]) print 1 3 | ARGV[1] = "" 4 | if (ARGV[2]) print 2 5 | ARGV[2] = "" 6 | if ("0") print "zero" 7 | if ("") print "null" 8 | if (0) print 0 9 | } 10 | { 11 | if ($0) print $0 12 | if ($1) print $1 13 | } 14 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/concat2.awk: -------------------------------------------------------------------------------- 1 | function f(s, x) { 2 | x = 1 3 | s = 3 4 | s = s x 5 | print s 6 | } 7 | 8 | BEGIN { for (i = 1; i <=12; i++) f() } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/concat3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { a; a = a (b "c"); print a; print b } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/concat4.awk: -------------------------------------------------------------------------------- 1 | { 2 | a = $0 3 | print a 4 | print index(a,"b") 5 | getline 6 | a = a $0 7 | print a 8 | print index(a,"b") 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/concat5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | OFMT = "%.8g" 3 | x = 1 4 | x += .1 5 | x = (x "a") 6 | print x 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/convfmt.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | CONVFMT = "%2.2f" 3 | a = 123.456 4 | b = a "" # give `a' string value also 5 | printf "a = %s\n", a 6 | CONVFMT = "%.6g" 7 | printf "a = %s\n", a 8 | a += 0 # make `a' numeric only again 9 | printf "a = %s\n", a # use `a' as string 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/crlf.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print \ 3 | "hi there" 4 | print "hello \ 5 | world" 6 | if ("foo" ~ /fo\ 7 | o/) 8 | print "matches" 9 | else 10 | print "does not match!" 11 | } 12 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/datanonl.awk: -------------------------------------------------------------------------------- 1 | # example program from alex@bofh.torun.pl 2 | BEGIN { IGNORECASE=1 } 3 | /\w+@([[:alnum:]]+\.)+[[:alnum:]]+[[:blank:]]+/ {print $0} 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/dbugeval2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | a = 2 3 | b = 3 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/dbugeval3.awk: -------------------------------------------------------------------------------- 1 | 2 | function isnumeric(x) { 3 | return (length(x) && x == x+0) 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/dbugtypedre1.awk: -------------------------------------------------------------------------------- 1 | @include "typeof1.awk" 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/dbugtypedre2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { x = 0; x = @/[a-z]/; x = "" } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/defref.awk: -------------------------------------------------------------------------------- 1 | BEGIN { foo() } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/delargv.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | ARGV[1] = "/dev/null" 3 | ARGV[2] = "/dev/null" 4 | ARGV[3] = "/dev/null" 5 | ARGC = 4 6 | delete ARGV[2] 7 | } 8 | 9 | END { 10 | for (i in ARGV) 11 | printf("length of ARGV[%d] is %d\n", i, length(ARGV[i])) 12 | } 13 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/delfunc.awk: -------------------------------------------------------------------------------- 1 | # from Stepan Kasal, 9 July 2003 2 | function f() 3 | { 4 | delete f 5 | } 6 | 7 | BEGIN { f() } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/delsub.awk: -------------------------------------------------------------------------------- 1 | function f(c, d, x) { delete c; x = d[0] } 2 | BEGIN { a[0][0] = 1; f(a, a[0]); print "still here" } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/devfd1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | while (1) { 3 | if ((getline l1 < "/dev/fd/4") <= 0) 4 | break 5 | print l1 6 | 7 | if ((getline l2 < "/dev/fd/5") <= 0) 8 | break 9 | print l2 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/dfacheck1.awk: -------------------------------------------------------------------------------- 1 | /.\ 0), ERRNO 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/escapebrace.awk: -------------------------------------------------------------------------------- 1 | /\{/ 2 | # should be no warning 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/exit2.awk: -------------------------------------------------------------------------------- 1 | function _fn0() { exit } 2 | BEGIN { ARRAY[_fn0()] } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/exitval1.awk: -------------------------------------------------------------------------------- 1 | # This should exit 0, even though child exits 1 2 | BEGIN { "exit 1" | getline junk ; exit 12 } 3 | END { exit 0 } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/exitval2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print "foo" | "read x ; echo $x ; exit 12" } 2 | # this should still exit 0, as pointed out by kenny mccormack in 3 | # comp.lang.awk on 2 feb 2005 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/exitval3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { exit 42 } 2 | END { exit } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fieldwdth.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FIELDWIDTHS = "2 3 4" } 2 | { print $2 } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fldchg.awk: -------------------------------------------------------------------------------- 1 | { 2 | # print "0:", $0 3 | gsub("aa", "+") 4 | print "1:", $0 5 | $3 = "<" $3 ">" 6 | print "2:", $0 7 | print "2a:" "%" $1 "%" $2 "%" $3 "%" $4 "%" $5 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fldchgnf.awk: -------------------------------------------------------------------------------- 1 | { OFS = ":"; $2 = ""; print $0; print NF } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fldterm.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | # choose a field separator that is numeric, so we can test whether 3 | # force_number properly handles unterminated numeric field strings 4 | FS = "3" 5 | } 6 | 7 | { 8 | print $1+0 9 | print $1 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fnamedat.awk: -------------------------------------------------------------------------------- 1 | function foo() { print foo } {foo()} 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fnarray.awk: -------------------------------------------------------------------------------- 1 | function foo(N) { 2 | return 0 3 | } 4 | BEGIN { 5 | Num = foo[c] 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fnarray2.awk: -------------------------------------------------------------------------------- 1 | function pile(c, r) 2 | { 3 | r = ++pile[c] 4 | } 5 | { pile($1) } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fnaryscl.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | foo[1] = 4 3 | f1(foo) 4 | } 5 | 6 | function f1(a) { f2(a) } 7 | 8 | function f2(b) { f3(b) } 9 | 10 | function f3(c) { c = 6 } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/forref.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | names[1] = "s" 3 | names[2] = "m" 4 | for (i in names) { 5 | x[names[i]] = i 6 | print i, names[i], x[names[i]] 7 | } 8 | print x["s"] 9 | # adump(x) 10 | # adump(names) 11 | } 12 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/forsimp.awk: -------------------------------------------------------------------------------- 1 | BEGIN { for (print 9; 0;); } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fpat2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | FPAT = " " 3 | $0 = "" 4 | print NF 5 | 6 | $0 = "abc" 7 | print NF 8 | 9 | $0 = "a b c" 10 | print NF 11 | } 12 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fpat3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | FPAT = "[^,]*" 3 | 4 | } 5 | 6 | { 7 | if (x) NF 8 | for (i = 1; i <= 4; ++i) 9 | print i, $i 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fpat5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | FPAT = "([^,]*)|(\"[^\"]+\")" 3 | OFS = ";" 4 | } 5 | 6 | p != 0 { print NF } 7 | 8 | { $1 = $1 ; print } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fpat6.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | FPAT = "([^,]*)|(\"[^\"]+\")" 3 | } 4 | { 5 | print "NF =", NF 6 | for (i = 1; i <= NF; i++) 7 | printf("$%d = <%s>\n", i, $i) 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fpat7.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FPAT = "[^,]*" } 2 | { print $1, $2 } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fpat8.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | RS = "" 3 | FPAT = "\\w+" 4 | } 5 | 6 | { 7 | print 8 | $2 = "-" 9 | print 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fpatnull.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FPAT = "" } 2 | { print NF } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fsbs.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = "\\" } 2 | { print $1, $2} 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fscaret.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | FS="^." 3 | OFS="|" 4 | } 5 | { 6 | $1 = $1 7 | } 8 | 1 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fsfwfs.awk: -------------------------------------------------------------------------------- 1 | BEGIN{FIELDWIDTHS="6 6 6 5";OFS=",";FS=FS}{print $1,$2,$3,$4} 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fsnul1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = "\0" ; RS = "" } 2 | { print $2 } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fsrs.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | RS=""; FS="\n"; 3 | ORS=""; OFS="\n"; 4 | } 5 | { 6 | split ($2,f," ") 7 | print $0; 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fstabplus.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = "\t+" } 2 | { print $1, $2 } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/functab1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | delete FUNCTAB 3 | } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/functab2.awk: -------------------------------------------------------------------------------- 1 | function foo() 2 | { 3 | print "foo!" 4 | } 5 | 6 | BEGIN { 7 | FUNCTAB["a"] = "something" 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/functab3.awk: -------------------------------------------------------------------------------- 1 | function foo() 2 | { 3 | print "foo!" 4 | } 5 | 6 | BEGIN { 7 | x = FUNCTAB["foo"] 8 | print "x =", x 9 | @x() 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/funsemnl.awk: -------------------------------------------------------------------------------- 1 | # make sure that ; + \n at end after function works 2 | function foo() { print "foo" } ; 3 | BEGIN { foo() } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/funsmnam.awk: -------------------------------------------------------------------------------- 1 | function foo( \ 2 | foo) 3 | { 4 | print foo 5 | } 6 | { foo() } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fwtest.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FIELDWIDTHS = "1 1 1" } 2 | { print NF, $1, $2, $3 } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fwtest3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | FIELDWIDTHS = "2:13 2:13 2:13"; 3 | } 4 | { 5 | printf "%s|%s|%s\n", $1, $2, $3 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fwtest4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FIELDWIDTHS="5" } { print $1 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fwtest5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FIELDWIDTHS = "2 3 4" } 2 | { print NF } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fwtest6.awk: -------------------------------------------------------------------------------- 1 | # BEGIN { FIELDWIDTHS = "2 2 *" } 2 | BEGIN { FIELDWIDTHS = "2 2 * " } 3 | { print NF, $1, $2, $3 } 4 | END { FIELDWIDTHS = "2 * 2" } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fwtest7.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FIELDWIDTHS = "2 1:*" } 2 | { print $1, $2 } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/fwtest8.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FIELDWIDTHS = "2:1 3:-1 4" } 2 | { print $2 } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/genpot.awk: -------------------------------------------------------------------------------- 1 | {print _"This string is so long that gawk --gen-pot will break it and lose a letter at the break."} 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/gensub.awk: -------------------------------------------------------------------------------- 1 | BEGIN { a = "this is a test of gawk" 2 | b = gensub(/(this).*(test).*(gawk)/, "3 = <\\3>, 2 = <\\2>, 1 = <\\1>", 1, a) 3 | print b 4 | } 5 | NR == 1 { print gensub(/b/, "BB", 2) } 6 | NR == 2 { print gensub(/c/, "CC", "global") } 7 | END { print gensub(/foo/, "bar", 1, "DON'T PANIC") } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/gensub2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print gensub("x","y",2,"xx") 3 | print gensub("x","y","2","xx") 4 | print gensub("x","y","a","xx") 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/gensub3.awk: -------------------------------------------------------------------------------- 1 | /apple/ { 2 | $0 = $0 3 | x = $0 4 | } 5 | 6 | END { 7 | print x 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/getline2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { while( getline > 0) { print } } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/getline3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | cmd = "echo 3" 3 | y = 7 4 | cmd | getline x y 5 | close(cmd) 6 | print (cmd | getline x y) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/getline4.awk: -------------------------------------------------------------------------------- 1 | END { getline $2; print} 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/getlndir.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | if (!SRCDIR) SRCDIR = "." 3 | OFS = ", " 4 | x = 4 5 | ret = (getline x < SRCDIR) 6 | print x, ret, ERRNO 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/getlnhd.awk: -------------------------------------------------------------------------------- 1 | BEGIN { pipe = "cat < 0) 7 | print 8 | 9 | exit 0 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/getnr2tm.awk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xonixx/intellij-awk/450f1d55b679ae385b0ea056621d7a2c82910f91/src/test/testData/parser/gawk/getnr2tm.awk -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/gsubind.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | f = "foo" 3 | p = @/o/ 4 | gsub(p, "q", f) 5 | print f 6 | fun = "gsub" 7 | @fun(p, "q", f) 8 | print f 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/gsubtst8.awk: -------------------------------------------------------------------------------- 1 | { 2 | OFS = " " $2 " " 3 | gsub("foo", "_", OFS) 4 | print $1, $2 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/gtlnbufv.awk: -------------------------------------------------------------------------------- 1 | /@K@CODE/ { print ; getline temp ; print temp ;next } 2 | {print} 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/hello.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print "Hello" 3 | } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/hex2.awk: -------------------------------------------------------------------------------- 1 | { print $1 + 7} 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/icasers.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = "[[:upper:]\\n]+" } 2 | { print ; IGNORECASE = ! IGNORECASE } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/id.awk: -------------------------------------------------------------------------------- 1 | function function1() 2 | { 3 | print "function1" 4 | } 5 | 6 | BEGIN { 7 | an_array[1] = 1 8 | 9 | for (i in PROCINFO["identifiers"]) 10 | printf("%s -> %s\n", i, PROCINFO["identifiers"][i]) | "sort" 11 | close("sort") 12 | } 13 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/igncfs.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | IGNORECASE=1 3 | FS="[^[:lower:]]+" 4 | } 5 | { 6 | for (i=1; i ("junk/" $1) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/match1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | data = "foooobazbarrrrr" 3 | match(data, /(fo+).+(bar*)/, arr) 4 | for (i = 0; i in arr; i++) { 5 | printf("arr[%d] = \"%s\"\n", i, arr[i]) 6 | printf("arr[%d, \"start\"] = %s, arr[%d, \"length\"] = %s\n", 7 | i, arr[i, "start"], i, arr[i, "length"]) 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/match2.awk: -------------------------------------------------------------------------------- 1 | function f(a, b, c) 2 | { 3 | print match("foo", "bar", f) 4 | } 5 | 6 | BEGIN { f(1, 2, 3) } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/math.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | pi = 3.1415927 3 | printf "cos(%f) = %f\n", pi/4, cos(pi/4) 4 | printf "sin(%f) = %f\n", pi/4, sin(pi/4) 5 | e = exp(1) 6 | printf "e = %f\n", e 7 | printf "log(e) = %f\n", log(e) 8 | printf "sqrt(pi ^ 2) = %f\n", sqrt(pi ^ 2) 9 | printf "atan2(1, 1) = %f\n", atan2(1, 1) 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mbprintf1.awk: -------------------------------------------------------------------------------- 1 | { printf "%-7s|\n", $0 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mbprintf2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | printf "%c\n", 65 3 | printf "%c\n", "AA" 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mbprintf3.awk: -------------------------------------------------------------------------------- 1 | FNR == 1 { print $0; printf "%s\n", $0 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mbprintf5.awk: -------------------------------------------------------------------------------- 1 | {printf "%-5s%s\n", $1, $2} 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mbstr1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print length("\x81\x82\x83\x84") 3 | print index("\x81\x82\x83\x84", "\x81\x82") 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mbstr2.awk: -------------------------------------------------------------------------------- 1 | match($0,/:deathdate=2007....:/) { print substr($0,RSTART+11,RLENGTH-16) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/membug1.awk: -------------------------------------------------------------------------------- 1 | { one != one = $1 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/minusstr.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print-"6" } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mktime.awk: -------------------------------------------------------------------------------- 1 | { 2 | print mktime($0, 1) 3 | } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mmap8k.awk: -------------------------------------------------------------------------------- 1 | { print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mpfrbigint2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print 0x1F12233445566778DFEF + 0 } 2 | BEGIN { print strtonum("0x1F12233445566778DFEF") } 3 | { print $1 + 0 } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mpfrexprange.awk: -------------------------------------------------------------------------------- 1 | # test change of allowed exponent range 2 | BEGIN { 3 | x=1.0e-10000 4 | print x+0 5 | PREC="double" 6 | print x+0 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mpfrfield.awk: -------------------------------------------------------------------------------- 1 | #! /bin/gawk -Mf 2 | 3 | NR == 1 { 4 | min = $1 5 | } 6 | 7 | { 8 | if ($1 < min) 9 | min = $1 10 | } 11 | 12 | END { 13 | print "min", min 14 | } 15 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mpfrieee.awk: -------------------------------------------------------------------------------- 1 | # Test IEEE-754 binary double format 2 | BEGIN { 3 | x = 1.0e-320 4 | i = 0 5 | while (x > 0) { 6 | printf("%.15e\n", x) 7 | x /= 2 8 | 9 | # terminate early when the test is going to fail. 10 | if (++i > 50) 11 | break 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mpfrmemok1.awk: -------------------------------------------------------------------------------- 1 | # This program tests that -M works with profiling. 2 | # It does not do anything real, but there should not be glibc memory 3 | # errors and it should be valgrind-clean too. 4 | 5 | BEGIN { 6 | v = 0x0100000000000000000000000000000000 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mpfrnr.awk: -------------------------------------------------------------------------------- 1 | # Test NR and FNR for file(s) with records > LONG_MAX 2 | BEGIN { 3 | NR = 0x7FFFFFFF 4 | } 5 | BEGINFILE { 6 | FNR = 0x7fffffffffffffff 7 | } 8 | END { 9 | print NR, NR-0x7FFFFFFF, FNR, FNR-0x7fffffffffffffff 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mpfrrem.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print "15 % 7 =", 15 % 7 3 | print "15 % -7 =", 15 % -7 4 | print "-15 % 7 =", -15 % 7 5 | print "-15 % -7 =", -15 % -7 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mpfrsort.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | # s = "1.0 +nan 0.0 -1 +inf -0.0 1 nan 1.0 -nan -inf 2.0" 3 | s = "1.0 +nan 0.0 -1 +inf -0.0 1 1.0 -nan -inf 2.0" 4 | split(s, a) 5 | PROCINFO["sorted_in"] = "@val_num_asc" 6 | for (i in a) 7 | print a[i] 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mpfrstrtonum.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | x = "011" 3 | print x+0 # trigger NUMCUR 4 | print strtonum(x) 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mpgforcenum.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | split("5apple", f) # make a strnum 3 | x = f[1]+0 # force strnum conversion to number or string 4 | print typeof(f[1]) # should be string 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/mtchi18n.awk: -------------------------------------------------------------------------------- 1 | {print match(""," *")} 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/muldimposix.awk: -------------------------------------------------------------------------------- 1 | BEGIN { a[1][2] = 3 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/negexp.awk: -------------------------------------------------------------------------------- 1 | BEGIN { a = -2; print 10^a } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/negrange.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | s = "Volume 8, Numbers 1-2 / January 1971" 3 | n = split(s, parts, "[^-A-Za-z0-9]+") 4 | print "n =", n 5 | for (i = 1; i <= n; i++) 6 | printf("s[%d] = \"%s\"\n", i, parts[i]) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/negtime.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | then = mktime("1959 12 15 7 00 00") 3 | print strftime(PROCINFO["strftime"], then) 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nfldstr.awk: -------------------------------------------------------------------------------- 1 | $1 == 0 { 2 | print "bug" 3 | } 4 | { 5 | $0 = "0" 6 | if (!$0) 7 | print "another bug" 8 | $0 = a = "0" 9 | if (!$0) 10 | print "yet another bug" 11 | if ($1) 12 | print "a buggie" 13 | } 14 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nfloop.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | $0 = "aaa" 3 | NF = 10 4 | for (j = 2; j <= NF; ++j) { 5 | $j = "_" 6 | } 7 | print 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nfneg.awk: -------------------------------------------------------------------------------- 1 | BEGIN { NF -= 2 ; print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nfset.awk: -------------------------------------------------------------------------------- 1 | { NF = 5 ; print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nlfldsep.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = "A" } 2 | {print NF; for (i = 1; i <= NF; i++) print $i ; print ""} 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nlinstr.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = "" } 2 | 3 | { 4 | if (/^@/) 5 | print "not ok" 6 | else 7 | print "ok" 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/noeffect.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | s == "hello, world"; 3 | s + 1 4 | ;; 5 | "s" 1 6 | "a" 7 | 42 8 | q = 42 9 | q 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nofmtch.awk: -------------------------------------------------------------------------------- 1 | BEGIN { printf "%3\n" } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nondec.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print 0x81c3e8, 0x744018, 00.34 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nonfatal1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | PROCINFO["NONFATAL"] 3 | # note the bad characters in the hostname 4 | print |& "/inet/tcp/0/1.2.3.4.5/25" 5 | print (ERRNO != "") 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nonfatal2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | PROCINFO["NONFATAL"] = 1 3 | print > "/dev/no/such/file" 4 | print ERRNO 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nonfatal3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | PROCINFO["NONFATAL"] 3 | # valid host but bogus port 4 | print |& "/inet/tcp/0/localhost/0" 5 | print ERRNO != "" 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nonl.awk: -------------------------------------------------------------------------------- 1 | 0 -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/noparms.awk: -------------------------------------------------------------------------------- 1 | function x(a, b, c , ,) {} 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nsawk1.awk: -------------------------------------------------------------------------------- 1 | # Used to cause internal error 2 | BEGIN { 3 | x = awk::I 4 | x = awk::I 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nsawk2.awk: -------------------------------------------------------------------------------- 1 | # Used to cause internal error 2 | BEGIN { 3 | x = awk::I 4 | print x 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nsbad.awk: -------------------------------------------------------------------------------- 1 | @namespace "1foo" 2 | @namespace "for" 3 | @namespace "42f" 4 | @namespace "ab#d" 5 | 6 | BEGIN { 7 | foo75::bar = 57 8 | if::junk = 1 9 | foo::match = 3 10 | } 11 | 12 | @namespace "foo" 13 | function gsub () { 14 | print "foo::gsub" 15 | } 16 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nsforloop.awk: -------------------------------------------------------------------------------- 1 | @namespace "foo" 2 | 3 | function test(v) 4 | { 5 | print "-- 1" 6 | for (i in Data) 7 | print i 8 | 9 | print "-- 2" 10 | for (v in Data) 11 | print v 12 | print "-- 3" 13 | } 14 | 15 | BEGIN { 16 | Data[1] = 1 17 | Data[2] = 2 18 | 19 | test() 20 | } 21 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nsfuncrecurse.awk: -------------------------------------------------------------------------------- 1 | @namespace "foo" 2 | 3 | function test(v) 4 | { 5 | if (v <= 0) 6 | return 7 | 8 | Level++ 9 | v-- 10 | printf("Level = %d, v = %d\n", Level, v) 11 | test(v) 12 | Level-- 13 | } 14 | 15 | BEGIN { 16 | Level = 0 17 | test(5) 18 | } 19 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nsprof1.awk: -------------------------------------------------------------------------------- 1 | @namespace "foo" 2 | 3 | BEGIN { 4 | a = 5 5 | a++ 6 | print a 7 | } 8 | 9 | /foo/ { print "bar" } 10 | 11 | @namespace "stuff" 12 | 13 | function stuff() 14 | { 15 | print "stuff" 16 | } 17 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/nulinsrc.awk: -------------------------------------------------------------------------------- 1 | /\ -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/numrange.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | n = split("-1.2e+931 1.2e+931", a) 3 | for (i = 1; i <= n; ++i) 4 | print a[i], +a[i], -a[i] 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/numstr1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | split("1.234", f) 3 | OFMT = "%.1f" 4 | print f[1] 5 | x = f[1]+0 6 | print f[1] 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/numsubstr.awk: -------------------------------------------------------------------------------- 1 | { print substr(1000+$1, 2) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/octsub.awk: -------------------------------------------------------------------------------- 1 | BEGIN{ ++x[03]; print "/" x[0] "/" x[3] "/"} 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/ofmts.awk: -------------------------------------------------------------------------------- 1 | BEGIN { OFMT= "%s" } 2 | { $1 + $2; print $1, $2 } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/ofmtstrnum.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | split(" 1", f, "|") 3 | OFMT = "%.1f" 4 | print f[1] 5 | x = f[1] + 0 6 | print f[1] 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/onlynl.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = "" } 2 | { print "got", $0 } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/opasnidx.awk: -------------------------------------------------------------------------------- 1 | BEGIN { b = 1; a[b] = 2; a[b++] += 1; print b,a[1] } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/opasnslf.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print b += b += 1 3 | b = 6 4 | print b += b++ 5 | print b 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/ordchr.awk: -------------------------------------------------------------------------------- 1 | @load "ordchr" 2 | 3 | BEGIN { 4 | print chr(ord("A")) 5 | print chr(ord("0")) 6 | print ord(chr(65)) 7 | # test if type conversion between strings and numbers is working properly 8 | print chr(ord(0)) 9 | print ord(chr("65")) 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/paramasfunc1.awk: -------------------------------------------------------------------------------- 1 | BEGIN{ X() } 2 | 3 | function X( abc) 4 | { 5 | abc = "stamp out " 6 | print abc abc() 7 | } 8 | 9 | function abc() { return "dark corners" } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/paramasfunc2.awk: -------------------------------------------------------------------------------- 1 | BEGIN{ X() } 2 | 3 | function abc() { return "dark corners" } 4 | 5 | function X( abc) 6 | { 7 | abc = "stamp out " 8 | print abc abc() 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/paramdup.awk: -------------------------------------------------------------------------------- 1 | BEGIN { foo(0, 1, 2) } 2 | 3 | function foo(a, b, c, b, a) 4 | { 5 | print "a =", a 6 | print "b =", b 7 | print "c =", c 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/paramres.awk: -------------------------------------------------------------------------------- 1 | BEGIN { foo() } 2 | 3 | function foo(a, FS, q) 4 | { 5 | print "a =", a 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/paramuninitglobal.awk: -------------------------------------------------------------------------------- 1 | function f(x) 2 | { 3 | a = 10 4 | x = 90 5 | print x 6 | print a 7 | a++ 8 | x++ 9 | print x 10 | } 11 | 12 | BEGIN { 13 | f(a) 14 | print a 15 | } 16 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/parsefld.awk: -------------------------------------------------------------------------------- 1 | # see https://github.com/xonixx/intellij-awk/issues/11 2 | #{ print $/= b/ c /= d/ } 3 | { print $/= b/ c (/= d/) } 4 | { print /a/ + /b/ + !/c/} 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/parseme.awk: -------------------------------------------------------------------------------- 1 | BEGIN { toupper(substr*line,1,12)) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/pcntplus.awk: -------------------------------------------------------------------------------- 1 | BEGIN { printf "%+d %d\n", 3, 4 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/posix2008sub.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | text = "here is some text" 3 | repl = "" 4 | printf "orig = \"%s\", repl = \"%s\"\n", text, repl 5 | sub(/some/, repl, text) 6 | printf "result is \"%s\"\n", text 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/poundbang.awk: -------------------------------------------------------------------------------- 1 | #! /tmp/gawk -f 2 | { print } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/prdupval.awk: -------------------------------------------------------------------------------- 1 | { print NF, $NF, "abc" $NF } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/prec.awk: -------------------------------------------------------------------------------- 1 | # check the precedence of operators: 2 | BEGIN { 3 | $1 = i = 1 4 | $+i++ 5 | $- -i++ 6 | print 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/printf0.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | # bwk accepts this silently: 3 | printf 4 | print "X" 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/printfbad2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = "a" } 2 | { printf ($2 "\n") } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/printfbad4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | for (i = 1; i <= 10; i++) { 3 | printf "%03$*d %2$d \n", 4, 5, i 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/printfchar.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | x[65] 3 | for (i in x) { 4 | # i should be a string 5 | printf "%c\n", i # should print 1st char of string 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/printhuge.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | printf("%c\n", sprintf("%c", (0xffffff00+255))) 3 | } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/printlang.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | printf "\nLocale environment:\n\tLC_ALL=\"%s\" LANG=\"%s\"\n\n", 3 | ENVIRON["LC_ALL"], ENVIRON["LANG"] 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/prmarscl.awk: -------------------------------------------------------------------------------- 1 | function test(a) 2 | { 3 | print a[1] 4 | } 5 | 6 | BEGIN { j = 4; test(j) } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/prmreuse.awk: -------------------------------------------------------------------------------- 1 | # from Pat Rankin, rankin@eql.caltech.edu, now rankin@pactechdata.com 2 | 3 | BEGIN { dummy(1); legit(); exit } 4 | 5 | function dummy(arg) 6 | { 7 | return arg 8 | } 9 | 10 | function legit( scratch) 11 | { 12 | split("1 2 3", scratch) 13 | return "" 14 | } 15 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/procinfs.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | printf "Initially, PROCINFO[\"FS\"] = %s\n", PROCINFO["FS"] 3 | FIELDWIDTHS = "3 4 5 6" 4 | printf "After assign to FIELDWIDTHS, PROCINFO[\"FS\"] = %s\n", PROCINFO["FS"] 5 | FS = FS 6 | printf "After assign to FS, PROCINFO[\"FS\"] = %s\n", PROCINFO["FS"] 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/profile0.awk: -------------------------------------------------------------------------------- 1 | NR == 1 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/profile12.awk: -------------------------------------------------------------------------------- 1 | NR == 1 2 | NR == 2 { print } 3 | NR == 3 { print $0 } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/profile13.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | printf "hello\n" > "/dev/stderr" 3 | printf("hello\n") > "/dev/stderr" 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/profile3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | the_func = "p" 3 | print @the_func("Hello") 4 | } 5 | 6 | function p(str) 7 | { 8 | print "! " str " !" 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/profile4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | a = ("foo" (c = "bar")) 3 | a = (b - c) "foo" 4 | a = "foo" (b - c) 5 | q = (d = "x") (e = "y") 6 | a = ((c = tolower("FOO")) in JUNK) 7 | x = (y == 0 && z == 2 && q == 45) 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/profile6.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | x = 3 3 | print -(-x) 4 | Q = "|" 5 | print -3 Q (-4) 6 | print -3 Q (-4) (-5) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/profile7.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print 1 / 10 * 10 3 | print 1 / (10 * 10) 4 | print 1 % 10 * 10 5 | print 1 % (10 * 10) 6 | print (10 * 5) / 2 7 | print 10 * (5 / 2) 8 | print 10 - (1 + 3 * 3) 9 | print 10 - (3 * 2 + 1) 10 | a = 5 11 | b = 3 12 | print a - 1 - b 13 | print a + 1 - b 14 | } 15 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/profile8.awk: -------------------------------------------------------------------------------- 1 | {if(0){}else{}} 2 | {while(0){}} 3 | {do{}while(0)} 4 | {for(;;){}} 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/profile9.awk: -------------------------------------------------------------------------------- 1 | # Some 2 | # header 3 | # comments 4 | 5 | # Add up 6 | { sum += $1 } 7 | 8 | # Print sum 9 | END { print sum } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/prt1eval.awk: -------------------------------------------------------------------------------- 1 | function tst () { 2 | sum += 1 3 | return sum 4 | } 5 | 6 | BEGIN { OFMT = "%.0f" ; print tst() } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/prtoeval.awk: -------------------------------------------------------------------------------- 1 | function returns_a_str() { print "" ; return "'A STRING'" } 2 | BEGIN { 3 | print "partial line:", returns_a_str() 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/pty2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | cmd = "tr '[A-Z]' '[a-z]' 2> /dev/null" 3 | PROCINFO[cmd, "pty"] = 1 4 | input = "ABCD" 5 | print input |& cmd 6 | cmd |& getline x 7 | print x 8 | # close(cmd) 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rand.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | srand(2) 3 | for (i = 0; i < 19; i++) 4 | printf "%3d ", (1 + int(100 * rand())) 5 | print "" 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/range1.awk: -------------------------------------------------------------------------------- 1 | /foo/,/bar/ { print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/range2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print("a" ~ /^[\300-\337]/) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/readbuf.awk: -------------------------------------------------------------------------------- 1 | 2 | { 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/readdir.awk: -------------------------------------------------------------------------------- 1 | @load "readdir" 2 | 3 | { print } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/readdir_retest.awk: -------------------------------------------------------------------------------- 1 | # Test field values after reparsing 2 | FNR == 1 { record1 = $0 } 3 | { 4 | printf "[%s] [%s] [%s] [%s]\n", $1, $2, $3, $4 5 | $0 = record1 6 | printf "[%s] [%s] [%s] [%s]\n", $1, $2, $3, $4 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rebt8b1.awk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xonixx/intellij-awk/450f1d55b679ae385b0ea056621d7a2c82910f91/src/test/testData/parser/gawk/rebt8b1.awk -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rebt8b2.awk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xonixx/intellij-awk/450f1d55b679ae385b0ea056621d7a2c82910f91/src/test/testData/parser/gawk/rebt8b2.awk -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rebuild.awk: -------------------------------------------------------------------------------- 1 | { 2 | $1 = "test" 3 | print $0 4 | print typeof($2) 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/regexpbrack.awk: -------------------------------------------------------------------------------- 1 | /[]+()0-9.,$%/'"-]*$/ 2 | /^[]+()0-9.,$%/'"-]*$/ 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/regexpbrack2.awk: -------------------------------------------------------------------------------- 1 | NR == 1 { gsub(/\\\\[;?!,()<>|+@%\]\[]/, " ") ; print "\"" $0 "\"" } 2 | NR == 2 { gsub(/\\\\[;?!,()<>|+@%\]\[^]/, " ") ; print "\"" $0 "\"" } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/reginttrad.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | str1 = "aabbbc" 3 | str2 = "aaabcc" 4 | if (str1 ~ /b{2,}/) printf("\"%s\" matches /b{2,}/\n", str1) 5 | if (str2 ~ /b{2,}/) printf("\"%s\" matches /b{2,}/\n", str2) 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/regx8bit.awk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xonixx/intellij-awk/450f1d55b679ae385b0ea056621d7a2c82910f91/src/test/testData/parser/gawk/regx8bit.awk -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/reindops.awk: -------------------------------------------------------------------------------- 1 | { 2 | if ($1 !~ /^+[2-9]/) 3 | print "gawk is broken" 4 | else 5 | print "gawk is ok" 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/reint.awk: -------------------------------------------------------------------------------- 1 | { print match($0, /a{3}/) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/reint2.awk: -------------------------------------------------------------------------------- 1 | /^([[:digit:]]+[[:space:]]+){2}/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/reparse.awk: -------------------------------------------------------------------------------- 1 | { 2 | gsub(/x/, " ") 3 | $0 = $0 4 | print $1 5 | print $0 6 | print $1, $2, $3 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/resplit.awk: -------------------------------------------------------------------------------- 1 | { FS = ":"; $0 = $0; print $2 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/revout.awk: -------------------------------------------------------------------------------- 1 | @load "revoutput" 2 | 3 | BEGIN { 4 | REVOUT = 1 5 | print "hello, world" > "/dev/stdout" 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/revtwoway.awk: -------------------------------------------------------------------------------- 1 | @load "revtwoway" 2 | 3 | BEGIN { 4 | cmd = "/magic/mirror" 5 | 6 | print "hello, world" |& cmd 7 | cmd |& getline line 8 | 9 | printf("got back: <%s>, RT = <%s>\n", line, RT) 10 | close(cmd) 11 | } 12 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rri1.awk: -------------------------------------------------------------------------------- 1 | /[d-f]/ 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rs.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = "" } 2 | { print $1, $2 } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rscompat.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = "bar" } 2 | { print $1, $2 } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rsnul1nl.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = "" } 2 | { print } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rsnulw.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = "" } 2 | 3 | { 4 | print NF, "<" $0 ":" RT ">" 5 | for (i = 1; i <= NF; i++) 6 | print i, "[" $i "]" 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rsstart2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = "^Ax*\n" } 2 | END { print NR } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rstest1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | RS = "" 3 | FS = ":" 4 | s = "a:b\nc:d" 5 | print split(s,a) 6 | print length(a[2]) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rstest2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | RS = "" 3 | FS = "\\" 4 | $0 = "a\\b" 5 | print $1 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rstest6.awk: -------------------------------------------------------------------------------- 1 | # Wed Jul 14 16:02:45 IDT 2004 2 | # Test case from John Haque mary1john8@earthlink.net 3 | 4 | BEGIN { RS = "XYZ" } 5 | 6 | { print } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/rswhite.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = "" } 2 | { printf("<%s>\n", $0) } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/sandbox1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | ARGV[ARGC++] = ARGV[1] # should be ok 3 | ARGV[ARGC++] = "" # empty string, should be ok 4 | ARGV[ARGC++] = "foo=bar" # assignment, should be ok 5 | ARGV[ARGC++] = "junk::foo=bar" # assignment, should be ok 6 | ARGV[ARGC++] = "/dev/null" # should fatal here 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/scalar.awk: -------------------------------------------------------------------------------- 1 | BEGIN{ 2 | sub(/x/,"",a) 3 | a[1] 4 | } 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/sclforin.awk: -------------------------------------------------------------------------------- 1 | BEGIN { j = 4; for (i in j) print j[i] } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/sclifin.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | j = 4 3 | if ("foo" in j) 4 | print "ouch" 5 | else 6 | print "ok" 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/setrec0.awk: -------------------------------------------------------------------------------- 1 | function reassign(x, y) { 2 | $0 = x 3 | print y 4 | } 5 | 6 | { 7 | reassign("larry", $1) 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/setrec1.awk: -------------------------------------------------------------------------------- 1 | function reassign(x, y) { 2 | $0 = x 3 | print y 4 | } 5 | 6 | BEGIN { 7 | $0 = substr("geronimo", 5, 3) 8 | reassign(" 52", $1) 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/shadow.awk: -------------------------------------------------------------------------------- 1 | function foo() 2 | { 3 | print "foo" 4 | } 5 | 6 | function bar(A, Z, q) 7 | { 8 | print "bar" 9 | } 10 | 11 | function baz(C, D) 12 | { 13 | print "baz" 14 | } 15 | 16 | BEGIN { 17 | A = C = D = Z = y = 1 18 | foo() 19 | bar() 20 | baz() 21 | } 22 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/shadowbuiltin.awk: -------------------------------------------------------------------------------- 1 | function foo(gensub) 2 | { 3 | print gensub 4 | print lshift(1, 1) 5 | } 6 | 7 | BEGIN { 8 | x = 5 9 | foo(x) 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/sigpipe1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print "system" 3 | command = "yes | true" 4 | system(command) 5 | 6 | print "pipe to command" 7 | print "hi" | command 8 | close(command) 9 | 10 | print "pipe from command" 11 | command | getline x 12 | close(command) 13 | } 14 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/sortempty.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print asort(a) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/sortfor.awk: -------------------------------------------------------------------------------- 1 | { a[$0]++ } 2 | END { 3 | PROCINFO["sorted_in"] = "@ind_str_asc" 4 | for (i in a) 5 | print i 6 | PROCINFO["sorted_in"] = "@ind_str_desc" 7 | for (i in a) 8 | print i 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/sortfor2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | PROCINFO["sorted_in"] = "@ind_num_asc" 3 | } 4 | { 5 | A[$1] = 0 6 | } 7 | END { 8 | for (I in A) B[I] = A[I] 9 | for (I in B) SCRATCH = A[I] 10 | for (I in A) print I 11 | } 12 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/split_after_fpat.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FPAT = "\"[^\"]*\"" } 2 | 3 | { print $1 } 4 | 5 | END { f("hi there") } 6 | 7 | function f (p, a, n, i) 8 | { 9 | n = split(p,a) 10 | print n ; for (i=1; i<=n; i++) print a[i] 11 | } 12 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/splitargv.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | for (idx = 1; idx < ARGC; idx++) 3 | split(ARGV[idx], temp, "."); 4 | } 5 | { 6 | print $0; 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/splitarr.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | a[1] = "elephantie" 3 | a[2] = "e" 4 | print split(a[1],a,a[2]), a[2], a[3], split(a[2],a,a[2]) 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/splitdef.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | data = "abc:easy:as:one:two:three" 3 | FS = ":" 4 | FIELDWIDTHS = "3 1 4 1 2 1 3 1 3 1 5" 5 | n = split(data, a) 6 | printf "n = %d, a[3] = %s\n", n, a[3] 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/splitvar.awk: -------------------------------------------------------------------------------- 1 | { 2 | sep = "=+" 3 | n = split($0, a, sep) 4 | print n 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/splitwht.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | str = "a b\t\tc d" 3 | n = split(str, a, " ") 4 | print n 5 | m = split(str, b, / /) 6 | print m 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/sprintfc.awk: -------------------------------------------------------------------------------- 1 | { print sprintf("%c", $1), $1 } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/status_close.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | cat = "cat ; exit 3" 3 | print system("echo xxx | (cat ; exit 4)") 4 | 5 | print "YYY" | cat 6 | 7 | print close(cat) 8 | 9 | echo = "echo boo ; exit 5" 10 | echo | getline boo 11 | print "got", boo 12 | 13 | print close(echo) 14 | } 15 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/strcat1.awk: -------------------------------------------------------------------------------- 1 | 2 | function f1(b) { b = b "c"; print f(b); } 3 | 4 | function f(a) { a = a "b"; return a; } 5 | 6 | BEGIN { A = "a"; f1(A); } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/strftfld.awk: -------------------------------------------------------------------------------- 1 | { 2 | print split(strftime($1), f) 3 | } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/strtod.awk: -------------------------------------------------------------------------------- 1 | { 2 | x = "0x" $1 ; print x, x + 0 3 | for (i=1; i<=NF; i++) 4 | if ($i) print $i, "is not zero" 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/strtonum.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print strtonum("0x13") 3 | print strtonum("013") 4 | print strtonum("13") 5 | print strtonum(13) 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/strtonum1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | x = "011" 3 | print x+0 # trigger NUMCUR 4 | print strtonum(x) 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/stupid1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | abc("varname") 3 | varname 4 | } 5 | 6 | func abc(n) 7 | { 8 | if (n in SYMTAB) { 9 | print "before" 10 | is = SYMTAB[n] 11 | print "after" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/stupid2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | n = "varname" 3 | SYMTAB[n] 4 | varname 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/stupid3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | test(someidentifier) 3 | } 4 | 5 | 6 | function test(p) 7 | { 8 | test0(p) 9 | p 10 | test0(p) 11 | } 12 | 13 | function test0(p) 14 | { 15 | print "TYPEOF: " typeof(p) 16 | } 17 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/stupid4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | test(someidentifier) 3 | } 4 | 5 | 6 | function test(a) 7 | { 8 | print typeof(a) 9 | a 10 | print typeof(a) 11 | } 12 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/subamp.awk: -------------------------------------------------------------------------------- 1 | { sub(/[[:lower:]]/, "&") ; print } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/subsepnm.awk: -------------------------------------------------------------------------------- 1 | BEGIN { SUBSEP = 10; a[1, 1] = 100 ; print a[1 SUBSEP 1] } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/subslash.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | i = 2 3 | a[i] = 5 4 | a[i] /= 2 5 | printf "a[%s] = %f\n", i, a[i] 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/swaplns.awk: -------------------------------------------------------------------------------- 1 | { 2 | if ((getline tmp) > 0) { 3 | print tmp 4 | print 5 | } else 6 | print 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/symtab10.awk: -------------------------------------------------------------------------------- 1 | BEGIN { SYMTAB["x"] ; y=1 ; y++ } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/symtab2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | a = 5 3 | printf "a = %d, SYMTAB[\"a\"] = %d\n", a, SYMTAB["a"] 4 | SYMTAB["a"] = 4 5 | printf "a = %d, SYMTAB[\"a\"] = %d\n", a, SYMTAB["a"] 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/symtab3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { a = 5 ; delete SYMTAB["a"] } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/symtab4.awk: -------------------------------------------------------------------------------- 1 | {SYMTAB["POS"]=1 ; print $POS } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/symtab5.awk: -------------------------------------------------------------------------------- 1 | BEGIN {SYMTAB["POS"]=1} {print $POS} 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/symtab6.awk: -------------------------------------------------------------------------------- 1 | BEGIN {SYMTAB["POS"]=1} 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/symtab7.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | getline 3 | for (i = 1; i <= NF;++i) 4 | SYMTAB[$i] = i 5 | } 6 | 7 | { print $Age } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/symtab8.awk: -------------------------------------------------------------------------------- 1 | { 2 | SYMTAB[$1] = 1 3 | } 4 | 5 | END { print $test } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/synerr1.awk: -------------------------------------------------------------------------------- 1 | # program to make sure we don't infinite 2 | # syntax errors 3 | 4 | print "hi" 5 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/synerr3.awk: -------------------------------------------------------------------------------- 1 | for (i = ) in foo bar baz 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/tailrecurse.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | abc(2) 3 | } 4 | 5 | 6 | function abc(c, A, B) 7 | { 8 | print "abc(" c ", " length(A) ")" 9 | if (! c--) { 10 | return 11 | } 12 | B[""] 13 | print length(B) 14 | return abc(c, B) 15 | } 16 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/tradanch.awk: -------------------------------------------------------------------------------- 1 | /foo^bar/ 2 | /foo$bar/ 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/trailbs.awk: -------------------------------------------------------------------------------- 1 | 0~$0 -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/typedregex2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | x = @/xxx/ 3 | y = @/yyy/ 4 | print typeof(x), typeof(y) 5 | print x, y 6 | 7 | x++ 8 | y = y "" 9 | print typeof(x), typeof(y) 10 | print x, y 11 | } 12 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/typedregex3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | a[1] = @/abc/ 3 | b[1][2][3] = @/xyz/ 4 | print typeof(a[1]), typeof(b[1][2][3]) 5 | print a[1], b[1][2][3] 6 | 7 | a[1]++ 8 | b[1][2][3] "" 9 | print typeof(a[1]), typeof(b[1][2][3]) 10 | print a[1], b[1][2][3] 11 | } 12 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/typedregex4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print "typeof(x) =", typeof(x) 3 | } 4 | 5 | END { 6 | print "typeof(y) =", typeof(y) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/typedregex5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { FS = @/./ } 2 | { print typeof(FS), $1, NF } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/typedregex6.awk: -------------------------------------------------------------------------------- 1 | BEGIN { RS = @/./ } 2 | { printf("<%s> <<%s>>\n", $0, RT) } 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/typeof1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | a = 5 ; print typeof(a) 3 | print typeof(b) 4 | print typeof(@/foo/) 5 | c = "foo" ; print typeof(c) 6 | d[1] = 1 ; print typeof(d), typeof(d[1]) 7 | e = @/foo/ ; print typeof(e) 8 | print typeof(@/bar/) 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/typeof2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print typeof(x) 3 | x[1] = 3 4 | print typeof(x) 5 | } 6 | 7 | function test1() { 8 | } 9 | 10 | function test2(p) { 11 | p[1] = 1 12 | } 13 | 14 | BEGIN { 15 | print typeof(a) 16 | test1(a) 17 | print typeof(a) 18 | test2(a) 19 | print typeof(a) 20 | } 21 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/typeof5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print typeof($0) 3 | print typeof($1) 4 | } 5 | 6 | { 7 | $3 = $1 8 | print typeof($2) 9 | print typeof($3) 10 | } 11 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/uninit2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { a = a + 1; x = a; print a} 2 | BEGIN { ++b; x = b; print b} 3 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/uninit3.awk: -------------------------------------------------------------------------------- 1 | function f(x){ 2 | print x 3 | } 4 | 5 | BEGIN { 6 | f(x) 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/uninit4.awk: -------------------------------------------------------------------------------- 1 | # test whether --lint catches uninitialized fields: 2 | function pr() 3 | { 4 | print 5 | } 6 | 7 | BEGIN { 8 | pr() 9 | print $0 10 | print $(1-1) 11 | print $1 12 | NF=3; print $2 13 | } 14 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/uninitialized.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | a += 2 3 | } 4 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/unterm.awk: -------------------------------------------------------------------------------- 1 | BEGIN{x=".........................................................................................................................................................................................................................................................} -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/uparrfs.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | FS = "(^x+)|( +)" 3 | } 4 | 5 | { 6 | for (i = 1; i <= NF; i++) 7 | printf "-->%s<--\n", $i 8 | } 9 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/uplus.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print "01" + 0 3 | print +"01" 4 | print -"01" 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/watchpoint1.awk: -------------------------------------------------------------------------------- 1 | #! /usr/bin/gawk -f 2 | BEGIN { 3 | c = 0 4 | } 5 | 6 | /apple/ { 7 | nr = NR 8 | c++ 9 | # printf "[c, NR] = [%s, %s]\n", c, NR 10 | } 11 | 12 | END { 13 | print c 14 | } 15 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/wideidx.awk: -------------------------------------------------------------------------------- 1 | { 2 | a=$0 3 | print index(a,"b") 4 | getline 5 | a = a $0 6 | print index(a,"b") 7 | } 8 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/widesub.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | str = "type=\"directory\" version=\"1.0\"" 3 | #print "BEGIN:", str 4 | 5 | while (str) { 6 | sub(/^[^=]*/, "", str); 7 | s = substr(str, 2) 8 | print s 9 | sub(/^="[^"]*"/, "", str) 10 | sub(/^[ \t]*/, "", str) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/widesub2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | Value = "abc" 3 | 4 | print "Before <" Value "> ", index( Value, "bc" ) 5 | 6 | sub( /bc/, "bbc", Value ) 7 | 8 | print "After <" Value ">", index( Value, "bc" ) 9 | } 10 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/widesub3.awk: -------------------------------------------------------------------------------- 1 | { 2 | if (substr($1,1,1) == substr($0,1,1)) 3 | print "substr matches" 4 | sub(/foo/,"bar") 5 | print nr++ 6 | } 7 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/zero2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | printf "%d\n", -.4 3 | printf "%d\n", -0.0 4 | printf "%d\n", -.9 5 | } 6 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk/zeroflag.awk: -------------------------------------------------------------------------------- 1 | BEGIN { printf("%2.1d---%02.1d\n", 2, 2) } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/BeginfileEndfileNextfile.awk: -------------------------------------------------------------------------------- 1 | BEGINFILE { 2 | nextfile 3 | } 4 | 5 | ENDFILE {} -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Ere1.awk: -------------------------------------------------------------------------------- 1 | /.*[/][^/]/ -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Ere1.txt: -------------------------------------------------------------------------------- 1 | AWK File 2 | AwkItemImpl(ITEM) 3 | AwkPatternImpl(PATTERN) 4 | AwkNonUnaryExprImpl(NON_UNARY_EXPR) 5 | PsiElement(AwkTokenType.ERE)('/.*[/][^/]/') -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Func1.awk: -------------------------------------------------------------------------------- 1 | func f() {} -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Ns2.awk: -------------------------------------------------------------------------------- 1 | @namespace "aaa" -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Ns3.awk: -------------------------------------------------------------------------------- 1 | @namespace "aaa" 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Switch0.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch(1) {} 3 | } -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Switch1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch(1) { 3 | case 1: print 111 } 4 | } -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Switch2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch(1) {case 1:} 3 | } -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Switch3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch(1) { 3 | case 1: case 2: print 111 } 4 | } -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Switch4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch(1) { 3 | case 1: case 2: 4 | print 111 5 | } 6 | } -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Switch5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch(1) { 3 | case 1: case 2: 4 | print 111 ; break 5 | case 6: 6 | case 7: 7 | default: print 222 } 8 | } -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Switch6Err.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch(1) { case 1 : print case 2: print } 3 | } -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Switch7.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch(1) { case 1: case 2: { print } case 3: default: } 3 | } -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/Switch8.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | switch (1) { 3 | case 1: 4 | print 5 | print } 6 | } -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/TypedEre1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print "hello" ~ @/he/ } 2 | -------------------------------------------------------------------------------- /src/test/testData/parser/gawk1/TypedEre2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { print "hello" !~ @/he/ } 2 | -------------------------------------------------------------------------------- /src/test/testData/rename/func1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | name() 3 | } 4 | 5 | function name() { 6 | name() 7 | } 8 | 9 | function f2() { 10 | name() 11 | name("arg") 12 | print f3(name()+1) 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/test/testData/rename/func1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | newName() 3 | } 4 | 5 | function newName() { 6 | newName() 7 | } 8 | 9 | function f2() { 10 | newName() 11 | newName("arg") 12 | print f3(newName()+1) 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/test/testData/rename/funcRef.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | a = "fname" 3 | b("fname") 4 | substr("fname") 5 | print "fname" 6 | } 7 | function b() {} 8 | function fname() {} -------------------------------------------------------------------------------- /src/test/testData/rename/funcRefAfter.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | a = "newName" 3 | b("newName") 4 | substr("fname") 5 | print "fname" 6 | } 7 | function b() {} 8 | function newName() {} -------------------------------------------------------------------------------- /src/test/testData/rename/indirect1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | @name(123) 3 | } 4 | 5 | function f(a, i) { 6 | f1(name) 7 | name++ 8 | print "name: " name 9 | } 10 | 11 | function f2() { 12 | name = f3(name) 13 | } 14 | 15 | END { 16 | print toupper(++name) 17 | @ name() 18 | } -------------------------------------------------------------------------------- /src/test/testData/rename/indirect1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | @newName(123) 3 | } 4 | 5 | function f(a, i) { 6 | f1(newName) 7 | newName++ 8 | print "name: " newName 9 | } 10 | 11 | function f2() { 12 | newName = f3(newName) 13 | } 14 | 15 | END { 16 | print toupper(++newName) 17 | @newName() 18 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars1.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | name=1 3 | name++ 4 | print name+1 5 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars1After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | newName =1 3 | newName++ 4 | print newName +1 5 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars2.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | name=1 3 | name++ 4 | print name+1 5 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars2After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | newName =1 3 | newName++ 4 | print newName +1 5 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars3.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | name=1 3 | name++ 4 | print name+1 5 | } 6 | 7 | function f(a, name, i) { 8 | f1(name) 9 | name++ 10 | print "name: " name 11 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars3After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | name=1 3 | name++ 4 | print name+1 5 | } 6 | 7 | function f(a, newName, i) { 8 | f1(newName) 9 | newName++ 10 | print "name: " newName 11 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars4.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | name=1 3 | name++ 4 | print name+1 5 | } 6 | 7 | function f(a, i) { 8 | f1(name) 9 | name++ 10 | print "name: " name 11 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars4After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | newName =1 3 | newName++ 4 | print newName +1 5 | } 6 | 7 | function f(a, i) { 8 | f1(newName) 9 | newName++ 10 | print "name: " newName 11 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars5.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | } 3 | 4 | function f(a, i) { 5 | f1(name) 6 | name++ 7 | print "name: " name 8 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars5After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | } 3 | 4 | function f(a, i) { 5 | f1(newName) 6 | newName++ 7 | print "name: " newName 8 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars6.awk: -------------------------------------------------------------------------------- 1 | BEGIN {} 2 | BEGIN {} 3 | BEGIN { 4 | name=1 5 | name++ 6 | print name+1 7 | } 8 | 9 | function f(a, i) { 10 | f1(name) 11 | name++ 12 | print "name: " name 13 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars6After.awk: -------------------------------------------------------------------------------- 1 | BEGIN {} 2 | BEGIN {} 3 | BEGIN { 4 | newName =1 5 | newName++ 6 | print newName +1 7 | } 8 | 9 | function f(a, i) { 10 | f1(newName) 11 | newName++ 12 | print "name: " newName 13 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars7.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | } 3 | 4 | function f(a, i) { 5 | f1(name) 6 | name++ 7 | print "name: " name 8 | } 9 | 10 | function f2() { 11 | name = f3(name) 12 | } 13 | 14 | END { 15 | print toupper(++name) 16 | } -------------------------------------------------------------------------------- /src/test/testData/rename/vars7After.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | } 3 | 4 | function f(a, i) { 5 | f1(newName) 6 | newName++ 7 | print "name: " newName 8 | } 9 | 10 | function f2() { 11 | newName = f3(newName) 12 | } 13 | 14 | END { 15 | print toupper(++newName) 16 | } --------------------------------------------------------------------------------