{"title":"将具有列表结构的线性递归Prolog程序编译成过程语言","authors":"Y. Nam, L. Henschen","doi":"10.1109/CMPSAC.1990.139389","DOIUrl":null,"url":null,"abstract":"The authors present an algorithm for transforming a linear recursive program in Prolog which contains the list data structure as a term of the predicate into an iterative program using a while loop in a procedural language like Pascal. This algorithm obtains the same result as Prolog without unification and backtracking. In this algorithm, the recursive programs are classified into two cases, the determined programs and the undetermined programs, according to the conditions of the variables in the program. The unification process is transformed into the set of assignment and conditional statements by analyzing the variables of the rules in the program. Backtracking is accomplished by a traversal of a tree whose nodes contain instantiated predicates.<<ETX>>","PeriodicalId":127509,"journal":{"name":"Proceedings., Fourteenth Annual International Computer Software and Applications Conference","volume":"1 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1990-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"5","resultStr":"{\"title\":\"Compiling linear recursive Prolog programs with list structure into procedural language\",\"authors\":\"Y. Nam, L. Henschen\",\"doi\":\"10.1109/CMPSAC.1990.139389\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"The authors present an algorithm for transforming a linear recursive program in Prolog which contains the list data structure as a term of the predicate into an iterative program using a while loop in a procedural language like Pascal. This algorithm obtains the same result as Prolog without unification and backtracking. In this algorithm, the recursive programs are classified into two cases, the determined programs and the undetermined programs, according to the conditions of the variables in the program. The unification process is transformed into the set of assignment and conditional statements by analyzing the variables of the rules in the program. Backtracking is accomplished by a traversal of a tree whose nodes contain instantiated predicates.<<ETX>>\",\"PeriodicalId\":127509,\"journal\":{\"name\":\"Proceedings., Fourteenth Annual International Computer Software and Applications Conference\",\"volume\":\"1 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"1990-12-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"5\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings., Fourteenth Annual International Computer Software and Applications Conference\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1109/CMPSAC.1990.139389\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings., Fourteenth Annual International Computer Software and Applications Conference","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/CMPSAC.1990.139389","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Compiling linear recursive Prolog programs with list structure into procedural language
The authors present an algorithm for transforming a linear recursive program in Prolog which contains the list data structure as a term of the predicate into an iterative program using a while loop in a procedural language like Pascal. This algorithm obtains the same result as Prolog without unification and backtracking. In this algorithm, the recursive programs are classified into two cases, the determined programs and the undetermined programs, according to the conditions of the variables in the program. The unification process is transformed into the set of assignment and conditional statements by analyzing the variables of the rules in the program. Backtracking is accomplished by a traversal of a tree whose nodes contain instantiated predicates.<>