use "biblioTypes.ml"; fun checkBookYear ((Year str)::rest) = true | checkBookYear _ = (print "pages";false); fun checkBookVolume ((Volume str)::rest) = checkBookYear rest | checkBookVolume rest = checkBookYear rest fun checkBookPublisher ((Publisher str)::rest) = checkBookVolume rest | checkBookPublisher rest = (print "pub";false); fun checkBookTitle ((Title str)::rest) = checkBookPublisher rest | checkBookTitle _ = (print "booktitle";false); fun checkBookAuthorOpt ((Author str)::rest) = checkBookAuthorOpt rest | checkBookAuthorOpt rest = checkBookTitle rest; fun checkBookAuthors ((Author str)::rest) = checkBookAuthorOpt rest | checkBookAuthors _ = (print "authors";false); fun checkBookRefName ((RefName str)::rest) = checkBookAuthors rest | checkBookRefName _ = (print "refname";false); fun checkArticlePages [Pages str] = true | checkArticlePages _ = false; fun checkArticleYear ((Year str)::rest) = checkArticlePages rest | checkArticleYear _ = false; fun checkArticleNumber ((Number str)::rest) = checkArticleYear rest | checkArticleNumber rest = checkArticleYear rest; fun checkArticleVolume ((Volume str)::rest) = checkArticleNumber rest | checkArticleVolume rest = checkArticleNumber rest; fun checkArticleJournal ((Journal str)::rest) = checkArticleVolume rest | checkArticleJournal _ = false; fun checkArticleTitle ((Title str)::rest) = checkArticleJournal rest | checkArticleTitle _ = false; fun checkArticleAuthorOpt ((Author str)::rest) = checkArticleAuthorOpt rest | checkArticleAuthorOpt rest = checkArticleTitle rest; fun checkArticleAuthors ((Author str)::rest) = checkArticleAuthorOpt rest | checkArticleAuthors _ = false; fun checkArticleRefName ((RefName str)::rest) = checkArticleAuthors rest | checkArticleRefName _ = false; fun checkEntry (BookEntry items) = checkBookRefName items | checkEntry (ArticleEntry items) = checkArticleRefName items; fun checkEntries (first::rest) = checkEntry first andalso checkEntries rest | checkEntries [] = true; fun checkBiblio (Biblio entries) = checkEntries entries; fun checkBiblioFile fileName = (checkBiblio (processBiblio (parsefile fileName))) handle illegalTerm s => false;