📄 no.099.mal
字号:
# Monet Mil to Mal compiler# Copyright (c) 2001-2004, CWI. All rights reserved.#Predefined code segment#The compiler can not guarantee an accurate compilation,#because MIL unlike MAL is a dynamically typed language.#A few guidelines to maximize usefullness.#- make the type of variables explicit, in particular 'nil'#- upon advice of M2m to remap identifiers, change it in your program directly#use the "mil_schema" for additional support routines# io.print("# >Number: 99\n");# io.print("# >Category: Mserver\n");# io.print("# >Synopsis: comparison of nil values is not reliable\n");# io.print("# >Confidential: no\n");# io.print("# >Severity: critical\n");# io.print("# >Priority: high\n");# io.print("# >Responsible: boncz\n");# io.print("# >State: open\n");# io.print("# >Class: sw-bug\n");# io.print("# >Submitter-Id: unknown\n");# io.print("# >Arrival-Date: Mon Dec 15 11:22:32 1997\n");# io.print("# >Originator: windhouw\n");# io.print("# >Organization:\n");# io.print("# UvA\n");# io.print("# >Release: 971007\n");# io.print("# >Environment:\n");# io.print("# \n");# io.print("# >Description:\n");# io.print("# #You are system administrator (adm)!\n");# io.print("# >PROC comp( any left, any right) : any {\n");# io.print("# > IF (left = right) {\n");# io.print("# > printf(\"left equals right\\n\");\n");# io.print("# > } ELSE {\n");# io.print("# > printf(\"left is not equal to right\\n\");\n");# io.print("# > }\n");# io.print("# > IF (left != right) {\n");# io.print("# > printf(\"left is not equal to right\\n\");\n");# io.print("# > } ELSE {\n");# io.print("# > printf(\"left equals right\\n\");\n");# io.print("# > }\n");# io.print("# >}\n");# io.print("# >comp(oid(nil),oid(nil));\n");# io.print("# left equals right\n");# io.print("# left is not equal to right\n");# io.print("# >comp(oid(1),oid(nil));\n");# io.print("# left is not equal to right\n");# io.print("# left is not equal to right\n");# io.print("# >comp(oid(1),oid(1));\n");# io.print("# left equals right\n");# io.print("# left equals right\n");# io.print("# >comp(str(nil),str(nil));\n");# io.print("# left equals right\n");# io.print("# left is not equal to right\n");# io.print("# >comp(str(\"a\"),str(nil));\n");# io.print("# left equals right\n");# io.print("# left is not equal to right\n");# io.print("# >comp(str(\"a\"),str(\"a\"));\n");# io.print("# left equals right\n");# io.print("# left equals right\n");# io.print("setoid(oid(20000000));"); aa_a := calc.oid(20000000); ba_a := setoid(aa_a);# io.print("PROC comp(any left, any right) : any {");function comp(left:any$1, right:any$2):any$3;# io.print(" IF (left = right) {");barrier ca_a := ==(left,right);# io.print(" printf(\"left equals right\\n\");"); da_a := printf("left equals right\n");# io.print(" } ELSE {");exit ca_a;barrier ea_a := not(ca_a);# io.print(" printf(\"left is not equal to right\\n\");"); fa_a := printf("left is not equal to right\n");exit ea_a;# io.print(" IF (left != right) {");barrier ga_a := !=(left,right);# io.print(" printf(\"left is not equal to right\\n\");"); ha_a := printf("left is not equal to right\n");# io.print(" } ELSE {");exit ga_a;barrier ia_a := not(ga_a);# io.print(" printf(\"left equals right\\n\");"); ja_a := printf("left equals right\n");exit ia_a;end comp;# io.print("comp(oid(nil),oid(nil));"); ka_a := calc.oid(nil); la_a := calc.oid(nil); ma_a := comp(ka_a,la_a);# io.print("comp(oid(1),oid(nil));"); na_a := calc.oid(1); oa_a := calc.oid(nil); pa_a := comp(na_a,oa_a);# io.print("comp(oid(1),oid(1));"); qa_a := calc.oid(1); ra_a := calc.oid(1); sa_a := comp(qa_a,ra_a);# io.print("comp(str(nil),str(nil));"); ta_a := calc.str(nil); ua_a := calc.str(nil); va_a := comp(ta_a,ua_a);# io.print("comp(str(\"a\"),str(nil));"); wa_a := str("a"); xa_a := calc.str(nil); ya_a := comp(wa_a,xa_a);# io.print("comp(str(\"a\"),str(\"a\"));"); ab_a := str("a"); bb_a := str("a"); cb_a := comp(ab_a,bb_a);# io.print("quit();"); db_a := clients.quit();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -