Research Article

[Retracted] Automatic Grading for Complex Multifile Programs

Algorithm 2

Program standardization using AST algorithm.
Variable:
ASTdata[]: program AST data map
fASTdata[]: final refactored program AST data map
Input:
pAST: program AST
sb[]: syntax bank
Output: final standardized program AST fsAST
Begin:
(1)Step 1: Traverse and visit pAST with ASTVisitor class, do Step 2
(2)Step 2: Handle AST node for AST data mapper to get ASTdata[]
(3) Index = 0
(4) for every AST node
(5) initialization ASTdata[] key (see detail in Table 3)
(6) node = AST node, current tag = AST tag
(7) if current tag = function statement or expression
(8)  syntax = nodeParser(node)
(9)  if syntax not exists on sb[]//syntax classifier
(10)   inner user function node
(11)  else
(12)   inner standard function node
(13) if current tag ≠ previous tag
(14)  exit no = index (exit AST node branch tree)
(15) node info = flag based on node and tag information, process no = index
(16) index ++
(17) add ASTdata[index]
(18)Step 3: Handle AST data for refactoring to get final ASTdata[]
(19) fASTdata[] = RefactoringCore(ASTdata[i])
(20)Step 4: Rebuild final source from fASTdata[] to get fsAST
(21) for i = 0 to fASTdata[] size
(22)  fsAST = fsAST add node(fASTdata[i])
(23)End