Opened 17 years ago

Closed 17 years ago

#26 closed defect (fixed)

Error in front-end on factorial example

Reported by: Stephen Siegel Owned by: ywei
Priority: major Milestone:
Component: front Version: 1.0
Keywords: factorial parse function else Cc:

Description

frederic:factorial siegel$ cat factorialSpec.mmp 
input int N {N>=0 && N<5};
output int result;

int f(int k) {
  if (k==0) {
    return 1;
  } else {
    return k*f(k-1);
  }
}

void main() {
  result = f(N);
}
frederic:factorial siegel$ tass verify factorialSpec.mmp 
MiniMP version 1.0
URL: http://vsl.cis.udel.edu

Minimp initialized with 1 process
Program runs in verify mode.
line 7:4 mismatched input 'else' expecting RCURLY
Program parsed succesfully.
Exception in thread "main" java.lang.NullPointerException: Null callee
	at edu.udel.cis.vsl.minimp.model.impl.statement.InvocationStatement.<init>(InvocationStatement.java:37)
	at edu.udel.cis.vsl.minimp.model.impl.Model.newInvocationStatement(Model.java:309)
	at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processInvocationStmt(ModelBuilder.java:673)
	at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processStatement(ModelBuilder.java:489)
	at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processStatementList(ModelBuilder.java:449)
	at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processFunctionBody(ModelBuilder.java:411)
	at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processFunctions(ModelBuilder.java:386)
	at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processAST(ModelBuilder.java:244)
	at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.buildModel(ModelBuilder.java:237)
	at edu.udel.cis.vsl.minimp.Minimp.verify(Minimp.java:273)
	at edu.udel.cis.vsl.minimp.Minimp.main(Minimp.java:389)
frederic:factorial siegel$ 

Change History (2)

comment:1 by Stephen Siegel, 17 years ago

Function calls cannot occur in expressions. But even after fixing that, the error remains.

comment:2 by ywei, 17 years ago

Resolution: fixed
Status: newclosed

Fixed the bug in TreeParser.

Note: See TracTickets for help on using tickets.