当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 如何设置errorformat捕捉gfortran 输出的错误?
帖子发表于 : 2006-05-19 12:45 

注册: 2005-10-07 18:55
帖子: 116
送出感谢: 0 次
接收感谢: 0 次
gfortran的输出如下

代码:
E:\test>gfortran main.f90
 In file main.f90:7

                        write(*,*'AAAAAAAAA!'
                                1
Error: Syntax error in WRITE statement at (1)
 In file main.f90:9

                write(*,*
                        1
Error: Syntax error in WRITE statement at (1)

E:\test>

第一行很容易捕捉,但是如何忽略第二行(空行)和第三行(出错行,没有任何规律),第四行输出的“1”可以得到出错的列数(用%p1已经捕捉到),第四行还没有实现。[/code]


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-05-19 14:41 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
写个bash。作为命令的管道就是了。bash里面可以处理这些。
grep也可以。要1,4? 还是要出错的行号?你把需要的用颜色标记出来吧。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-05-19 18:05 

注册: 2005-10-07 18:55
帖子: 116
送出感谢: 0 次
接收感谢: 0 次
E:\test>gfortran main.f90
In file main.f90:7

write(*,*'AAAAAAAAA!'
1
Error: Syntax error in WRITE statement at (1)
In file main.f90:9

write(*,*
1
Error: Syntax error in WRITE statement at (1)

E:\test>
其中红色的行时我需要的,绿色的是没有用的,但是我是想用VI自己处理,因为VI通过设置errorformat就可以实现编译之后直接定位到相应的错误行。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2006-05-20 17:42 
头像

注册: 2005-10-04 10:59
帖子: 1928
地址: 上海
送出感谢: 0 次
接收感谢: 1
我在网上搜了下,没有找到gfortran的errorformat样本。有个日本人曾经试着写过,但是不能成功捕捉%m。我试了半天,也是一样,也许你可以给维护fortran syntax file和compiler file的ajit(ajit @ unb . ca )发信,让他给g95写一个。我曾经为fortran的syntax file骚扰过他一次,因为他是加拿大的教授,所以还有些不大好意思。其实vim自己就带了几个fortran编译器的errorformat文件,在$VIMRUNTIME/compiler/下,大多是ajit写的。网上还有intel fortran compiler的errorformat,虽然是写给8.0的,但是我试过,同样适用于ifort 9.0。
把日本人的关于gfortran的errorformat的讨论贴在下面。
代码:
From: Kamaraju Kusumanchi <kamaraju@...>
Date: Fri Apr 29, 2005  6:26 pm
Subject: error format for gfortran    kamaraju@...
Send Email Send Email

Hi
    I am struggling with writing an errorformat for gfortran (gcc
compiler for fortran). I am wondeing if anyone can help. Consider the
samecode

program welcome
   implicit none

   write(*,*) 'welcome'
   some
end program welcome

I added the line some to produce an error message.

$gfortran welcome.f90
  In file welcome.f90:5

   some
  1
Error: Unclassifiable statement at (1)


For this error I tried to write the compiler plugin with the
errorformat string set to

CompilerSet errorformat=
    \%E\ In\ file\ %f:%l,
    \%C\ %p%*[1],
    \%CError:\ %m,
    \%Z

But for some reason I am not able to catch that error message. Can
anyone help me please?

raju




_________________
弄个dropbox空间来备份文件或者做私人代码服务器
配置:git://github.com/roylez/dotfiles.git
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2006-05-21 9:27 

注册: 2005-10-07 18:55
帖子: 116
送出感谢: 0 次
接收感谢: 0 次
这是我仿照g77写的,可以解决大部分问题。

代码:
" Vim compiler file
" Compiler:     gfortran (GNU Fortran 90)
" Maintainer:   Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
" Last Change:  $Date: 2002/06/12 09:17:11 $
" $Revision: 1.7 $

if exists("current_compiler")
  finish
endif
let current_compiler = "fortran_gfortran"

if exists(":CompilerSet") != 2      " older Vim always used :setlocal
  command -nargs=* CompilerSet setlocal <args>
endif

let s:cpo_save = &cpo
set cpo-=C

" Note: The errorformat assumes GNU make

" sample multiline errors (besides gcc backend one-liners):
" gev.f:14:
"      parameter UPLO = 'Upper-triangle'
"      ^
" Unsupported VXT statement at (^)
" gev.f:6:
"      integer      desca( * ), descb( * )
"            1
" gev.f:19: (continued):
"      end subroutine
"      2
" Invalid declaration of or reference to symbol `desca' at (2) [initially seen at (1)]

CompilerSet errorformat=
   \%Omake:\ %r,
   \%f:%l:\ warning:\ %m,
   \%A%f:%l:\ (continued):,
   \%W%f:%l:\ warning:,
   \%A\ In\ file\ %f:%l,
   \%-C,
   \%-C%p%*[0123456789^]%.%#,
   \%-C\ %.%#,
   \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
   \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
   \%DMaking\ %*\\a\ in\ %f,
   \%Z%m\ at\ (%*[0123456789^])

let &cpo = s:cpo_save
unlet s:cpo_save

缺陷有:1.出现错误的那一行不能顶格写,前面要有空格,一般是可以做到的。2.不能区分出error和warning。
慢慢改进吧,下面是效果图。


附件:
文件注释: 效果图
.PNG
.PNG [ 26.88 KiB | 被浏览 1187 次 ]

页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译