1. "All syntax errors detected in invalid ml programs must be reported via stderr on a line commencing with the '!' character. Your runml program must be able to detect all invalid ml programs - EXCEPT that your program will not be tested with any invalid expressions, so you do not need to validate the syntax of expressions."
I am confused about invalid expressions here. Do we need to consider scenarios like incomplete variable assignment (ex. a <- ), unpexted characters in the end of the line (ex. a <-2 ;), unmatched number of parameters in function call ( function add(a,b) but call with add(a)), and incomplete parenthesis ( print add(a,b )?
However, in the previous thread you said that indentation is a factor we should consider, so what is the specific scenarios we should work on? I am so confused about the boundary line between invalid expression and invalid ml program. Can you provide a list of what counts as invalid expressions and what don't?
2.There is a requirement in ml language: "the variables arg0, arg1, and so on, provide access to the program's command-line arguments which provide real-valued numbers"
I am confused that if accepting user input one of the features of ml languages? Also, does our transpiler accept multiple ml files in the same time? ( ex. ./runml program1.ml program2.ml program-n.ml)