没有合适的资源?快使用搜索试试~ 我知道了~
基于浏览器的FortranNAMELIST与XML/HTML转换工具
SoftwareX 6(2017)25原始软件出版物一个基于浏览器的FortranNAMELIST与XML/HTML转换工具O. 内藤国立量子和放射科学技术研究所,801-1 Mukouyama,Naka,Ibaraki 311-0193,Japanar t i cl e i nf o文章历史记录:接收日期:2016年7月26日接收日期:2016年2016年12月2日接受关键词:Fortran命名XMLWeb浏览器JavaScripta b st ra ct介绍了一种基于浏览器的FortranNAMELIST与XML/HTML之间的转换工具它运行在一个HTML5兼容的浏览器上,并生成可重用的XML文件,以帮助互操作性。它还提供了一个图形界面,用于编辑和注释NAMELIST中的变量,因此可以作为原始代码文档环境。尽管该工具并不全面,但它可以被视为将遗留代码集成到现代系统中的测试平台©2016作者。由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。代码元数据当前代码版本v1用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-16-00061法律代码许可证GNU通用公共许可证使用的代码版本控制系统无使用HTML5、JavaScript的软件代码语言、工具和服务编译要求、操作环境依赖性如果可用,链接到开发人员文档/手册问题支持电子邮件naito. qst.go.jp1. 动机和意义Fortran是科学研究领域Fortran有一个标准格式的输入/输出,它适用于常规数据I/O,但需要精确的数据格式和数据类型规范。一边因此,它有一种方便的方法来设置输入参数,称为NAMELIST。NAMELIST为带注释的输入提供了一个环境,用户可以在其中通过指定键值对来设置参数。用户可以以相当灵活的方式为键赋值例如,为了可读性,它们可以在键和值之间放置空格,对于c的r个连续值使用速记表达式r*c,通过分配空值来省略指定某些值(在本例中,使用默认值),使用逗号或空格作为值分隔符。然而,这种灵活性可能是与软件的互操作性的障碍,电子邮件地址:naito. qst.go.jp。http://dx.doi.org/10.1016/j.softx.2016.12.001不是基于Fortran的。为了共享信息,软件将需要一个特定的解析器来分析NAMELIST中的内容。虽然现代Fortran编译器接受长键名,使用冗长的名称来表达它们的含义是不切实际的,因为键名称直接用作源代码中的变量,并且经常在数学表达式中集中使用另一方面,有一些遗留的Fortran代码是在变量名的允许长度相当短的时候开发的,以表达它们的含义。对于这两种情况,经验丰富的程序用户或开发人员在分辨变量的含义方面不会有任何困难。但对于偶尔使用的用户来说,如果他们能够在设置输入时立即查阅变量的描述,而无需参考冗长的纸质或电子手册,那将是非常有帮助的也就是说,如果我们能够将变量的描述集成到参数设置界面中,则可以提高数据输入效率以及代码文档的可维护性。事实上,已经有人试图操纵NAMELIST强大的现代语言,如Python [1]。然而,在这方面,为了更好地利用NAMELIST的上述几点,将NAMELIST翻译成标准标记2352-7110/©2016作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softx26O. 内藤/SoftwareX 6(2017)25Fig. 1. 此工具中数据转换过程的流程图。诸如XML [2]之类语言可能是一种非常通用的方法。一旦内容被转换成XML,转换为其他格式,如HTML,可以通过可扩展样式表语言转换(Extensible Styllibrary Language Transformations)轻松完成[3]。这为准备输入参数的接口和输入参数的描述提供了一个有效的框架。此外,许多现代编程语言和专有软件产品都可以处理XML数据,这有助于促进互操作性。使用XML的另一个好处是,只要数据是用XML描述的,它就可以处理具有异构模式的各种数据也就是说,即使在数据的精确表达方式上存在差异在这方面,也有一些精心设计的工具可以直接从Fortran [4]中操作XML,但是必须为此编写特定的Fortran代码在本文中,我们提出了一个软件工具,翻译FortranNAMELIST到XML/HTML,反之亦然。我们只处理NAMELIST文件,并保持原始Fortran源代码不变。因此,我们可以安全地将此工具应用于遗留程序。为了最小化对使用环境的要求并最大化可移植性,该工具仅假设用户可以访问支持JavaScript [6]的HTML5这个工具并不意味着是全面的,相反,它配备了最少的功能,应该被视为与其他系统共享Fortran数据的测试平台。2. 软件描述2.1. 软件构架我们首先考虑如何用XML表示NAMELIST的内容。 如前一节所述,NAMELIST数据由一系列键值赋值语句组成。这把钥匙叫做对象或名称或变量取决于编译器系统的实现。在本文中,我们称之为对象。对象可以是数组,在这种情况下,它可以由逗号或空格分隔的值序列表示除了数据长度或大小(即字节数),Fortran有五种数据类型,即逻辑,字符,整数,实数和复数。复常数可以用一对实数或整数常数来表示用逗号分隔并括在括号中。常数c的r次重复可以用r*c表示。多个对象可以组织成一个组。记住这些要点,我们可以将NAMELIST,如下例所示姓名:&Group1object1= value11,value12,value13,object2=( value21,value22),&端基2对象3= r*值3,&结束XML:<名称><对象名称=“object1”>value11/value>value12/value>value13/value><对象名称=“object2”><场>value21/value><关于我们<联系我们value22/value><联系我们 <联系我们value3/value><联系我们<联系我们<联系我们其中namespace>是根元素;typej表示值j的数据类型,并且是以下之一:逻辑,字符,整数、实数、null。最后一个是一个省略的值,对于它的属性一无所知这里不使用complex作为value>element的type属性的选择的原因是而不是有自己的元素复杂>是:(1)一个复杂值由一对原子数据类型为实数或整数;(2)为了在每个value>元素中只有一个文本内容;(3)其他编程语言,如C,C++,Java,没有复杂的内部数据类型。我们可以向value>元素添加size属性,以指定数据长度(以字节为单位),如1.23d4/value>但是我们没有引入这个属性,因为FortranNAMELIST通常接受任何数值数据类型作为它的输入,并将它们转换成适当的内部类型。因此,NAMELIST中的赋值语句(如变量1 = 1,4.0e0,8.0d0,16.0q0,适 用 于 以 下 任 何 数 据 类 型 的 variable1 : integer*2 、integer*4、integer*8、real*4、real*8、real*16。也就是说,我们无法判断正确的数据类型和大小O. 内藤/SoftwareX 6(2017)2527图二. 加载NAMELIST并将其转换为XML后的窗口。文件可以通过文件选择器加载,如果支持,也可以通过拖放加载。通过单击“转换为XML/名称列表”按钮,内容将来回转换。对于允许写入本地文件的浏览器,文本窗格中的内容可以保存到默认下载位置。仅从NAMELIST输入-尽管数值计算通常以双精度完成。为了知道确切的数据类型,我们需要扫描整个Fortran源程序,并不总是容易 的 , 我 们 目前 的 意 图 也 是 如 此。 因此 , 当 我 们 第 一 次 扫描NAMELIST输入时,我们只分配最多的为每个value>元素添加一个合理的类型属性,并将其数据大小属性未定。接下来,我们将考虑解析NAMELIST输入的机制的实现分析NAMELIST内容的标准方法是使用正则表达式进行模式匹配。在JavaScript中,正则表达式模式可以由RegExp对象表示。该工具首先标记NAMELIST的内容,并使用与RegExp和String对象关联的方法将它们存储为JavaScript对象每个token对象在NAMELIST输入中存储其原始位置;其种类,即群体、对象、价值等;它的名称;如果标记用于具有索引的数组对象。然后使用JavaScriptString方法将这些标记转换为XML字符串。NAMELIST到XML的转换步骤是这个工具的基础在 转 换 之 后 , 可 以 直 接 使 用 XML 完 成 到 HTML 或 返 回 到NAMELIST的首先,XML字符串被解析成一个DOM(文档对象模型)[7]文档,使用JavaScript 的DOM 解析功能,然后通过使用JavaScript XML处理器和适当的样式表转换成所需的格式。这些样式表嵌入到工具的主体中,即HTML文档.它们通常是隐藏的,但通过单击切换按钮,它们可以可见。样式表本来可以作为外部文件存储,但是这里为了简化文件处理过程,对它们进行了不同的处理。采用当前方法还有一个副产品:用户可以编辑样式表并在浏览器上立即看到结果,这便于调试。该工具中的数据转换过程流程图如图所示。1.一、2.2. 软件功能NAMELIST文件和XML文件都可以用JavaScript File API [8]加载,并使用JavaScript Blob对象保存,尽管出于安全原因,保存功能在某些浏览器上不起作用;在这种情况下,用户仍然可以使用某些编辑器复制结果并将其粘贴到文本文件中。用户可以查看HTML文档,其内容相当于NAMELIST,并编辑每个对象的值。此外,HTML文档中还提供了用于组和对象的摘要和详细描述的可编辑区域,以及对象的这是可选的,但通过编辑这些区域,用户可以记录有关组和对象的有用信息,供以后参考。完成的HTML文档被提炼成一个XML文档,其中只包含必要的信息,这也是由XML处理器完成的。提取的XML可以转换回NAMELIST文件,该文件可以用作Fortran程序的输入。或者XML可以保存为模板,以备将来输入。下次加载此XML模板并从中生成HTML文档时,HTML中将填充用户先前注释的组和对象的描述。这些存储在另一个模板中的辅助数据可以通过指定模板XML文件名并触发点击一下按钮就能完成整个过程3. 说明性实例该工具由一个HTML文件和一个JavaScript文件组成。通过打开HTML文件启动工具后,用户可以使用文件选择器或拖放(如果支持)加载NAMELIST图 2示出了加载NAMELISTi之后的示例窗口,通过单击"转换为XML“按钮将其转换为XML。生成的XML可以通过单击“翻译为名称”按钮。两个文本窗格都是可编辑的,28O. 内藤/SoftwareX 6(2017)25图三. 从XML文档生成的输入数据编辑表单,并填充有组和对象以及测量单位的摘要和详细描述。因此用户可以修改内容并快速查看结果。如果浏览器允许写入本地文件,则可以将这些窗格中的内容保存到默认下载位置。基于该XML文档,进一步转换为HTML输入数据和格式,如图1所示。 3、可以通过按下“生成HTML表单”按钮来触发。第一部分是组s和对象s的索引,用户可以使用该索引进行导航通过这个输入形式。在每个组部分的底部,提供了一个标记为Back to top的链接,用于跳回到该顶部索引。在每个组部分中,其组成对象与下拉列表中显示的最合理的数据类型对齐,后跟以字节为单位的推断数据大小如果自动选择的数据类型或数据大小不正确,用户可以通过从下拉列表中选择正确的数据类型或在框中编辑数据大小来修改它还有一个用于指定测量单位的可编辑区域。对象名称的右侧是其值单元格的行。每个单元格都标有其序号,后面是其多重性(即相同值重复的次数)括在括号中,提供了一个复选框,用于选择要连接/断开的单元格,以及一个可编辑的值输入框具有重复值的单元格由凸起图案表示复杂对象的单元格由括在括号中的一对数值组成。复杂对象的数据大小是指其组成实部和虚部。还有可编辑的空间,用于对每个组和对象进行摘要和详细描述。通过单击摘要右侧的切换按钮(,),可以显示或隐藏详细信息。用户可以捆绑或撤消对象中的单元格,如图所示。 4,其中还给出了等同于每个单元表示的NAMELIST中的语句:(1)为了撤销捆绑的单元(即,多重性>1)的细胞到单个细胞,标记复选框,然后单击“分离”按钮;(2)要将单元格合并为具有相同值的捆绑单元格,请标记所有要合并的复选框,然后单击合并按钮»«合并按钮。当表单输入完成后,用户可以通过单击从HTML中提取XML按钮。生成的XML被扩充O. 内藤/SoftwareX 6(2017)2529见图4。连接/分离值单元格的过程。凸起图案表示值重复多次,如括号中所示。右边显示了等效的NAMELIST语句。与用户通过输入表单提供的信息(如组和对象描述、数据类型、数据大小和度量单位) 相 关 联 , 并 且 可 以 通过按下"显示已提取的XML“按钮在其自己的窗格中查看。还用户可以通过单击将精简的XML复制到右侧按钮并进一步转换可以添加一个小的Fortran子例程,输出每个组的所有对象及其当前值,尽管组的顺序应该与NAMELIST输入的读取顺序一致无论如何,在大多数情况下,出现在现有NAMELIST中的变量实际上是所有必要的控制参数。一旦获得了生成的XML文件,将其传输到其他系统或使用XML数据从浏览器中触发其他程序应该不难。从为参数输入提供图形界面的角度来看,该工具可以是一个易于访问的原型。由于这是客户端上的一个独立工具,因此可用于离线准备输入数据。完成的输入数据可以手动地或经由客户端-服务器通信自动地发送到计算机器由于这些机制的实际实现取决于操作和计算环境而有很大不同,因此我们将不在这里讨论这个主题至于Fortran代码的文档,该工具作为一个简单的接口,用于注释NAMELIST的内容。有关变量的最小信息,如其描述,数据类型和测量单位,可以输入和存储供以后使用。虽然我们可以增加设施来指定限制在可以分配给每个对象的值的范围上,✂✄✁,不包括在内,因为这可能使输入窗口太通过单击“翻译为名称”按钮返回到名称列表。如果模板XML文件是spe,则在文件选择器中为‘‘Template文档.如果勾选了“自动”复选框,则每次生成HTML文档时都会自动将模板应用于该文档。如果在值单元格中输入了无效数据类型的值,或者在单击“检查输入”按钮后执行验证时检测到无效数据,则会弹出警告框,值恢复到原始值。4. 影响此工具的主要目的是将NAMELIST转换为一种可重复使用的格式,并与其他不基于Fortran的软件共享其内容。许多已经开发和使用多年的成熟的仿真代码往往在NAMELIST中有许多输入参数。一个正统而直接的一种获得所有NAMELIST变量的精确细节的方法是扫描整个源代码并找到所有NAMELIST语句以及相关的变量声明。由于现在有很多很好的源代码分析工具,获得这些信息可能没有太大的困难。然而,将这些信息片段组装成可重用的格式可能不是那么简单。相比之下,目前的工具易于使用,因为它只涉及现有的名称列表,并将内容呈现为可与其他系统共享的格式。虽然该工具只能推断出NAMELIST中出现的变量的最可能的数据类型,但不需要访问Fortran源代码,也不需要访问Fortran源代码。如果需要NAMELIST变量的整个列表,乱5. 结论在本文中,我们提出了一个基于浏览器的小型工具,用于将Fortran NAMELIST转换为XML/HTML,反之亦然。由于该工具仅使用Web浏览器的固有功能,因此其能力相当有限,但它可以在各种平台上运行。通过将NAMELIST转换为XML,可以更容易地在不同的系统之间使用信息。通过提供用于输入参数值和注释参数属性的图形界面,该工具可以用作非常简单的代码文档系统以及易于使用的输入数据编辑器。当前工具的一个可能的扩展是使用SVG(可缩放矢量图形)[9]可视化数据,以帮助用户实时检查输入这个工具还远远不够全面,相反,它应该被视为将遗留(通常是大型)代码集成到现代系统中的原型引用[1] 用于解析Fortran命名文件的Python模块,http://github.com/marshallward/f90nml/。[2] 可扩展标记语言(XML)1.0,第5版,http://www.w3.org/TR/xml/网站。[3] XSL Transformations(XSL)Version 1.0,http://www.w3.org/TR/xslt/。[4] White TOH,Bruin RP,Chiang G-T,Dove MT,Tyer RP,Walker AM. 科学数据互操作性的教训:XML和eMinerals项目。 Phil Trans R SocA 2009; 367:1041-9.[5] HTML5,http://www.w3.org/TR/html5/。[6] ZakasNC. 为网页开发者提供的专业JavaScript第3版印第安纳波利斯:约翰威利&父子公司; 2012年。[7] 文档对象模型(DOM),http://www.w3.org/DOM/。[8] 文件API,http://www.w3.org/TR/FileAPI/。[9] 可缩放矢量图形(SVG)1.1,第2版,http://www.w3.org/TR/SVG11/网站。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功