help-source-highlight
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-source-highlight] Regular Expression Explanation for 'function


From: Lorenzo Bettini
Subject: Re: [Help-source-highlight] Regular Expression Explanation for 'function.lang'
Date: Fri, 03 Jun 2011 12:30:47 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110424 Lightning/1.0b2 Thunderbird/3.1.10

Hi Peter

due to the syntax of procedure and functions, I doubt that a regular expression that recognizes them can be written: you'd need real parsing, which source-highlight does not provide...

do you want this lang definition be included in source-highlight?
Could you please provide a test file to be included in the test suite?

I noted that some keywords have a space afterwards, e.g.,

|BETA |BILINEAR |BIN_DATE |BINARY_TEMPLATE |BINDGEN |BINOMIAL |BLK_CON |BOX_CURSOR

is it intended?
In general there should be no space after keywords.

cheers
        Lorenzo

On 05/27/2011 10:53 PM, Peter Willis wrote:
Hello,

There is a 'Wikipedia' page for IDL located at:
http://en.wikipedia.org/wiki/IDL_(programming_language)

There is a complete IDL programming manual located:

http://idlastro.gsfc.nasa.gov/idl_html_help/Programming_in_IDL.html

Normally procedures an functions are called on one line unless
the line exceeds 64 (?) characters. In that case the line may use
'$' symbol to continue the call statement on the next line.

Procedures do not return values, hence they are never called
as variables.

Functions can happen in-line anywhere.

Commas are also used as delimiters for array members in IDL.

Below is the language definition for rsiidl.lang .


'procedure.lang' is just a duplicate of 'function.lang'
at this point.

Best Regards,


Peter

//////////RSIIDL.LANG BEGIN///////////////////////////

preproc = "include|include_once|require|require_once"

comment start ";"

include "number.lang"

string delim "\"" "\"" escape "\\" multiline
string delim "'" "'" escape "\\" multiline

keyword =
"COMMON|COMPILE_OPT|PRO|FUNCTION|BEGIN|BREAK|END|GOTO|IF|THEN|ELSE|ENDIF|CASE|OF|ENDCASE|SWITCH|ENDSWITCH|FOR|DO|CONTINUE|ENDFOR|WHILE|ENDWHILE|LT|LE|EQ|NE|GE|GT|>|<|NOT|OR|XOR|AND|MOD|FORWARD_FUNCTION|ON_ERROR|ON_IOERROR|REPEAT|UNTIL|.COMPILE|.CONTINUE|.EDIT|.FULL_RESET_SESSION|.GO|.OUT|.RESET_SESSION|.RETURN|.RNEW|.RUN|.SKIP|.STEP|.STEPOVER|.TRACE|A_CORRELATE|ABS|ACOS|ADAPT_HIST_EQUAL|ALOG|ALOG10|AMOEBA|ANNOTATE|APP_USER_DIR|APP_USER_DIR_QUERY|ARG_PRESENT|ARRAY_EQUAL|ARRAY_INDICES|ARROW|ASCII_TEMPLATE|ASIN|ASSOC|ATAN|BAR_PLOT|BESELI|BESELJ|BESELK|BESELY
|BETA |BILINEAR |BIN_DATE |BINARY_TEMPLATE |BINDGEN |BINOMIAL |BLK_CON
|BOX_CURSOR |BROYDEN |BYTARR |BYTE |BYTSCL |C_CORRELATE |CALDAT
|CALENDAR |CALL_EXTERNAL |CALL_FUNCTION |CALL_METHOD |CEIL |CHEBYSHEV
|CHECK_MATH |CHISQR_CVF |CHISQR_PDF |CHOLSOL |CINDGEN |CIR_3PNT
|CLUST_WTS |CLUSTER |CLUSTER_TREE |COLOR_QUAN |COLORMAP_APPLICABLE
|COMFIT |COMPLEX |COMPLEXARR |COMPLEXROUND |COMPUTE_MESH_NORMALS |COND
|CONGRID |CONJ |CONVERT_COORD |CONVOL |COORD2TO3 |CORRELATE |COS |COSH
|CRAMER |CREATE_CURSOR |CREATE_STRUCT |CREATE_VIEW |CROSSP |CRVLENGTH
|CT_LUMINANCE |CTI_TEST |CURVEFIT |CV_COORD |CVTTOBM |CW_ANIMATE
|CW_ANIMATE_GETP |CW_ANIMATE_LOAD |CW_ANIMATE_RUN |CW_ARCBALL |CW_BGROUP
|CW_CLR_INDEX |CW_COLORSEL |CW_DEFROI |CW_FIELD |CW_FILESEL |CW_FORM
|CW_FSLIDER |CW_LIGHT_EDITOR |CW_LIGHT_EDITOR_GET |CW_LIGHT_EDITOR_SET
|CW_ORIENT |CW_PALETTE_EDITOR |CW_PALETTE_EDITOR_GET
|CW_PALETTE_EDITOR_SET |CW_PDMENU |CW_RGBSLIDER |CW_TMPL |CW_ZOOM
|DBLARR |DCINDGEN |DCOMPLEX |DCOMPLEXARR |DEFROI |DENDRO_PLOT
|DENDROGRAM |DERIV |DERIVSIG |DETERM |DIAG_MATRIX |DIALOG_MESSAGE
|DIALOG_PICKFILE |DIALOG_PRINTERSETUP |DIALOG_PRINTJOB
|DIALOG_READ_IMAGE |DIALOG_WRITE_IMAGE |DIGITAL_FILTER |DILATE |DINDGEN
|DISSOLVE |DIST |DISTANCE_MEASURE |DOC_LIBRARY |DOUBLE |EFONT |EIGENQL
|EIGENVEC |ELMHES |EOF |ERF |ERFC |ERFCX |ERODE |ERRPLOT |EXECUTE |EXP
|EXPAND |EXPAND_PATH |EXPINT |EXTRAC |EXTRACT_SLICE |F_CVF |F_PDF
|FACTORIAL |FFT |FILE_BASENAME |FILE_DIRNAME |FILE_EXPAND_PATH
|FILE_INFO |FILE_LINES |FILE_LINK |FILE_READLINK |FILE_SAME |FILE_SEARCH
|FILE_TEST |FILE_WHICH |FILEPATH |FINDGEN |FINITE |FIX |FLICK |FLOAT
|FLOOR |FLOW3 |FLTARR |FORMAT_AXIS_VALUES |FSTAT |FULSTR |FUNCT |FV_TEST
|FX_ROOT |FZ_ROOTS |GAMMA |GAMMA_CT |GAUSS_CVF |GAUSS_PDF |GAUSS2DFIT
|GAUSSFIT |GAUSSINT |GET_DRIVE_LIST |GET_KBRD |GET_LUN |GET_SCREEN_SIZE
|GETENV |GRID_TPS |GRID3 |GRIDDATA |GS_ITER |H_EQ_CT |H_EQ_INT
|H5_BROWSER |HANNING |HDF_BROWSER |HDF_READ |HILBERT |HIST_2D
|HIST_EQUAL |HISTOGRAM |HLS |HOUGH |HQR |HSV |IBETA |ICONTOUR |IDENTITY
|IDL_VALIDNAME |IDLITSYS_CREATETOOL |IGAMMA |IIMAGE |IMAGE_CONT
|IMAGINARY |IMAP |INDGEN |INT_2D |INT_3D |INT_TABULATED |INTARR
|INTERPOL |INTERPOLATE |INVERT |IOCTL |IPLOT |ISHFT |ISURFACE |ITCURRENT
|ITDELETE |ITGETCURRENT |ITREGISTER |ITRESET |ITRESOLVE |IVOLUME |JULDAY
|KEYWORD_SET |KRIG2D |KURTOSIS |KW_TEST |L64INDGEN |LA_CHOLMPROVE
|LA_CHOLSOL |LA_DETERM |LA_EIGENPROBLEM |LA_EIGENQL |LA_EIGENVEC
|LA_ELMHES |LA_GM_LINEAR_MODEL |LA_HQR |LA_INVERT
|LA_LEAST_SQUARE_EQUALITY |LA_LEAST_SQUARES |LA_LINEAR_EQUATION
|LA_LUMPROVE |LA_LUSOL |LA_TRIMPROVE |LA_TRISOL |LABEL_DATE
|LABEL_REGION |LADFIT |LAGUERRE |LEEFILT |LEGENDRE |LINBCG |LINDGEN
|LINFIT |LL_ARC_DISTANCE |LMFIT |LMGR |LNGAMMA |LNP_TEST |LOADCT
|LOCALE_GET |LOGICAL_AND |LOGICAL_OR |LOGICAL_TRUE |LON64ARR |LONARR
|LONG |LONG64 |LSODE |LU_COMPLEX |LUMPROVE |LUSOL |M_CORRELATE |MACHAR
|MAKE_ARRAY |MAP_2POINTS |MAP_CONTINENTS |MAP_GRID |MAP_IMAGE |MAP_PATCH
|MAP_PROJ_FORWARD |MAP_PROJ_IMAGE |MAP_PROJ_INFO |MAP_PROJ_INIT
|MAP_PROJ_INVERSE |MAP_SET |MATRIX_MULTIPLY |MATRIX_POWER |MAX |MD_TEST
|MEAN |MEANABSDEV |MEDIAN |MEMORY |MESH_CLIP |MESH_DECIMATE
|MESH_ISSOLID |MESH_MERGE |MESH_NUMTRIANGLES |MESH_OBJ |MESH_SMOOTH
|MESH_SURFACEAREA |MESH_VALIDATE |MESH_VOLUME |MESSAGE |MIN
|MIN_CURVE_SURF |MK_HTML_HELP |MODIFYCT |MOMENT |MORPH_CLOSE
|MORPH_DISTANCE |MORPH_GRADIENT |MORPH_HITORMISS |MORPH_OPEN |MORPH_THIN
|MORPH_TOPHAT |MPEG_CLOSE |MPEG_OPEN |MPEG_PUT |MPEG_SAVE |MULTI
|N_ELEMENTS |N_PARAMS |N_TAGS |NEWTON |NORM |OBJ_CLASS |OBJ_ISA |OBJ_NEW
|OBJ_VALID |OBJARR |OPEN |OPLOTERR |P_CORRELATE |PATH_SEP |PCOMP
|PLOT_3DBOX |PLOT_FIELD |PLOTERR |PNT_LINE |POLAR_CONTOUR |POLAR_SURFACE
|POLY |POLY_2D |POLY_AREA |POLY_FIT |POLYFILLV |POLYSHADE |POLYWARP
|POPD |PRIMES |PRODUCT |PROFILE |PROJECT_VOL |PS_SHOW_FONTS |PSAFM
|PSEUDO |PTR_NEW |PTR_VALID |PTRARR |QGRID3 |QROMB |QROMO |QSIMP
|QUERY_BMP |QUERY_DICOM |QUERY_GIF |QUERY_IMAGE |QUERY_JPEG
|QUERY_JPEG2000 |QUERY_MRSID |QUERY_PICT |QUERY_PNG |QUERY_PPM
|QUERY_SRF |QUERY_TIFF |QUERY_WAV |R_CORRELATE |R_TEST |RADON |RANDOMN
|RANDOMU |RANKS |RDPIX |READ_ASCII |READ_BINARY |READ_BMP |READ_DICOM
|READ_IMAGE |READ_JPEG2000 |READ_MRSID |READ_PNG |READ_SPR |READ_SYLK
|READ_TIFF |READ_WAV |READ_XWD |REAL_PART |REBIN |RECALL_COMMANDS
|RECON3 |REFORM |REGION_GROW |REGRESS |REPLICATE |RETALL |REVERSE |RK4
|ROBERTS |ROT |ROTATE |ROUND |ROUTINE_INFO |RS_TEST |S_TEST |SAVGOL
|SCOPE_LEVEL |SCOPE_VARFETCH |SCOPE_VARNAME |SEARCH2D |SEARCH3D |SFIT
|SHIFT |SHMDEBUG |SHMVAR |SIMPLEX |SIN |SINDGEN |SINH |SIZE |SKEWNESS
|SMOOTH |SOBEL |SORT |SPH_SCAT |SPHER_HARM |SPL_INIT |SPL_INTERP |SPLINE
|SPRSAB |SPRSAX |SPRSIN |SPRSTP |SQRT |STANDARDIZE |STDDEV |STRARR
|STRCMP |STRCOMPRESS |STREGEX |STRING |STRJOIN |STRLEN |STRLOWCASE
|STRMATCH |STRMESSAGE |STRMID |STRPOS |STRSPLIT |STRTRIM |STRUPCASE
|SVDFIT |SVSOL |SWAP_ENDIAN |SYSTIME |T_CVF |T_PDF |TAG_NAMES |TAN |TANH
|TEMPORARY |TETRA_CLIP |TETRA_SURFACE |TETRA_VOLUME |THIN |THREED
|TIMEGEN |TM_TEST |TOTAL |TRACE |TRANSPOSE |TRI_SURF |TRIANGULATE
|TRIGRID |TRIQL |TRISOL |TS_COEF |TS_DIFF |TS_FCAST |TS_SMOOTH |TV |TVRD
|UINDGEN |UINT |UINTARR |UL64INDGEN |ULINDGEN |ULON64ARR |ULONARR |ULONG
|ULONG64 |UNIQ |UNSHARP_MASK |VALUE_LOCATE |VARIANCE |VERT_T3D |VOIGT
|VOXEL_PROJ |WARP_TRI |WATERSHED |WF_DRAW |WHERE |WIDGET_ACTIVEX
|WIDGET_BASE |WIDGET_BUTTON |WIDGET_COMBOBOX |WIDGET_DISPLAYCONTEXTMENU
|WIDGET_DRAW |WIDGET_DROPLIST |WIDGET_EVENT |WIDGET_INFO |WIDGET_LABEL
|WIDGET_LIST |WIDGET_PROPERTYSHEET |WIDGET_SLIDER |WIDGET_TAB
|WIDGET_TABLE |WIDGET_TEXT |WIDGET_TREE |WRITE_SYLK |WTN|AXIS|BLAS_AXPY
|BLAS_AXPY |BYTEORDER |CALL_PROCEDURE |CATCH |CD |CHOLDC |CLOSE
|COLOR_CONVERT |CONSTRAINED_MIN |CONTOUR |COPY_LUN |CPU |CURSOR
|DEFINE_KEY |DEFINE_MSGBLK |DEFINE_MSGBLK_FROM_FILE |DEFSYSV |DELVAR
|DEVICE |DFPMIN |DLM_LOAD |DLM_REGISTER |DRAW_ROI |EMPTY |ENABLE_SYSRTN
|ERASE |EXIT |FILE_CHMOD |FILE_COPY |FILE_DELETE |FILE_MKDIR |FILE_MOVE
|FLUSH |FREE_LUN |GRID_INPUT |HEAP_FREE |HEAP_GC |HELP |IMAGE_STATISTICS
|INTERVAL_VOLUME |ISOCONTOUR |ISOSURFACE |JOURNAL |LA_CHOLDC |LA_LUDC
|LA_SVD |LA_TRIDC |LA_TRIQL |LA_TRIRED |LINKIMAGE |LUDC |MAKE_DLL
|OBJ_DESTROY |ONLINE_HELP |ONLINE_HELP_PDF_INDEX |OPLOT |PARTICLE_TRACE
|PATH_CACHE |PLOT |PLOTS |POINT_LUN |POLYFILL |POWELL
|PRINT|PRINTD|PRINTF |PROFILER |PROFILES |PTR_FREE |PUSHD |QHULL
|READ|READ_GIF |READ_INTERFILE |READ_JPEG |READ_PICT |READ_PPM |READ_SRF
|READ_WAVE |READ_X11_BITMAP |READF |READS |READU |REDUCE_COLORS
|REGISTER_CURSOR |REPLICATE_INPLACE |RESOLVE_ALL |RESOLVE_ROUTINE
|RESTORE |SAVE |SCALE3 |SCALE3D |SET_PLOT |SET_SHADING |SETENV
|SETUP_KEYS |SHADE_SURF |SHADE_SURF_IRR |SHADE_VOLUME |SHMMAP |SHMUNMAP
|SHOW3 |SHOWFONT |SKIP_LUN |SLICER3 |SLIDE_IMAGE |SOCKET |SPAWN
|SPH_4PNT |SPLINE_P |STOP |STREAMLINE |STRETCH |STRPUT |STRUCT_ASSIGN
|STRUCT_HIDE |SURFACE |SURFR |SVDC |SWAP_ENDIAN_INPLACE |T3D |TEK_COLOR
|TIME_TEST2 |TRIRED |TRUNCATE_LUN |TVCRS |TVLCT |TVSCL |USERSYM
|VECTOR_FIELD |VEL |VELOVECT |VORONOI |WAIT |WDELETE |WIDGET_CONTROL
|WINDOW |WRITE_BMP |WRITE_GIF |WRITE_IMAGE |WRITE_JPEG |WRITE_JPEG2000
|WRITE_NRIF |WRITE_PICT |WRITE_PNG |WRITE_PPM |WRITE_SPR |WRITE_SRF
|WRITE_TIFF |WRITE_WAV |WRITE_WAVE |WRITEU |WSET |WSHOW |XBM_EDIT
|XDISPLAYFILE |XDXF |XFONT |XINTERANIMATE |XLOADCT |XMANAGER |XMNG_TMPL
|XMTOOL |XOBJVIEW |XOBJVIEW_ROTATE |XOBJVIEW_WRITE_IMAGE |XPALETTE
|XPCOLOR |XPLOT3D |XREGISTERED |XROI |XSQ_TEST |XSURFACE |XVAREDIT
|XVOLUME |XVOLUME_ROTATE |XVOLUME_WRITE_IMAGE|XYOUTS |ZOOM
|ZOOM_24|CDF_ATTCREATE|CDF_ATTDELETE|CDF_ATTEXISTS|CDF_ATTGET|CDF_ATTINQ|CDF_ATTNUM|CDF_ATTPUT|CDF_ATTRENAME|CDF_CLOSE|CDF_CONTROL|CDF_CREATE|CDF_DELETE|CDF_DOC|CDF_ENCODE_EPOCH|CDF_EPOCH|CDF_ERROR|CDF_EXISTS|CDF_INQUIRE|CDF_LIB_INFO|CDF_OPEN|CDF_PARSE_EPOCH|CDF_VARCREATE|CDF_VARDELETE|CDF_VARGET|CDF_VARGET1|CDF_VARINQ|CDF_VARNUM|CDF_VARPUT|CDF_VARRENAME|HDF_CLOSE|HDF_DELDD|HDF_DF24_ADDIMAGE|HDF_DF24_GETIMAGE|HDF_DF24_GETINFO|HDF_DF24_LASTREF|HDF_DF24_NIMAGES|HDF_DF24_READREF|HDF_DF24_RESTART|HDF_DFAN_ADDFDS|HDF_DFAN_ADDFID|HDF_DFAN_GETDESC|HDF_DFAN_GETFDS|HDF_DFAN_GETFID|HDF_DFAN_GETLABEL|HDF_DFAN_LABLIST|HDF_DFAN_LASTREF|HDF_DFAN_PUTDESC|HDF_DFAN_PUTLABEL|HDF_DFP_ADDPAL|HDF_DFP_GETPAL|HDF_DFP_LASTREF|HDF_DFP_NPALS|HDF_DFP_PUTPAL|HDF_DFP_READREF|HDF_DFP_RESTART|HDF_DFP_WRITEREF|HDF_DFR8_ADDIMAGE|HDF_DFR8_GETIMAGE|HDF_DFR8_GETINFO|HDF_DFR8_LASTREF|HDF_DFR8_NIMAGES|HDF_DFR8_PUTIMAGE|HDF_DFR8_READREF|HDF_DFR8_RESTART|HDF_DFR8_SETPALETTE|HDF_DFSD_ADDDATA|HDF_DFSD_DIMGET|HDF_DF
S

D_DIMSET|HDF_DFSD_ENDSLICE|HDF_DFSD_GETDATA|HDF_DFSD_GETINFO|HDF_DFSD_GETSLICE|HDF_DFSD_PUTSLICE|HDF_DFSD_READREF|HDF_DFSD_SETINFO|HDF_DFSD_STARTSLICE|HDF_DUPDD|HDF_EXISTS|HDF_ISHDF|HDF_LIB_INFO|HDF_NEWREF|HDF_NUMBER|HDF_OPEN|HDF_GR_ATTRINFO|HDF_SD_ATTRFIND|HDF_SD_ATTRINFO|HDF_SD_ATTRSET|HDF_SD_CREATE|HDF_SD_DIMGET|HDF_SD_DIMGETID|HDF_SD_DIMSET|HDF_SD_END|HDF_SD_ENDACCESS|HDF_SD_FILEINFO|HDF_SD_GETDATA|HDF_SD_GETINFO|HDF_SD_IDTOREF|HDF_SD_ISCOORDVAR|HDF_SD_NAMETOINDEX|HDF_SD_REFTOINDEX|HDF_SD_SELECT|HDF_SD_SETEXTFILE|HDF_SD_SETINFO|HDF_SD_START|HDF_VD_ATTACH|HDF_VD_DETACH|HDF_VD_FDEFINE|HDF_VD_FEXIST|HDF_VD_FIND|HDF_VD_GET|HDF_VD_GETID|HDF_VD_GETINFO|HDF_VD_GETNEXT|HDF_VD_INSERT|HDF_VD_ISVD|HDF_VD_ISVG|HDF_VD_LONE|HDF_VD_READ|HDF_VD_SEEK|HDF_VD_SETINFO|HDF_VD_WRITE|HDF_VG_ADDTR|HDF_VG_ATTACH|HDF_VG_DETACH|HDF_VG_GETID|HDF_VG_GETINFO|HDF_VG_GETNEXT|HDF_VG_GETTR|HDF_VG_GETTRS|HDF_VG_INQTR|HDF_VG_INSERT|HDF_VG_ISVD|HDF_VG_ISVG|HDF_VG_LONE|HDF_VG_NUMBER|HDF_VG_SETINFO|NCDF_ATTC
OP

Y|NCDF_ATTDEL|NCDF_ATTGET|NCDF_ATTINQ|NCDF_ATTNAME|NCDF_ATTPUT|NCDF_ATTRENAME|NCDF_CLOSE|NCDF_CONTROL|NCDF_CREATE|NCDF_DIMDEF|NCDF_DIMID|NCDF_DIMINQ|NCDF_DIMRENAME|NCDF_EXISTS|NCDF_INQUIRE|NCDF_OPEN|NCDF_VARDEF|NCDF_VARGET|NCDF_VARGET1|NCDF_VARID|NCDF_VARINQ|NCDF_VARPUT|NCDF_VARRENAME|ENDELSE|RETURN"


comment delim "/*" "*/" multiline nested

type = '(?:\$[#]?|@|%)[[:word:]]+'

include "symbols.lang"

cbracket = "{|}"

include "function.lang"
include "procedure.lang"

variable = '[[:upper:]][[:word:]]*|_'

///////////////////RSIIDL.LANG END////////////////////////////////




On 5/27/2011 1:57 AM, Lorenzo Bettini wrote:
Hi

do procedure (and functions) are always called on a line?
I mean, is the procedure name always at the beginning of a line
(possibly with some spaces before)?

Are commas used also in other contexts besides function and procedure
invocation?

cheers
Lorenzo

P.S. some examples of programs might be useful to do some tests; have
you already a partial language definition for IDL to start from?

On 05/24/2011 05:27 PM, Peter Willis wrote:
On 5/23/2011 7:10 AM, Lorenzo Bettini wrote:

(?=\()

checks whether after the name there's a ( but does not consume it

can the syntax of your procedure definition be identified with a
regular
expression?

Can you make some examples of procedures?

cheers
Lorenzo


Hello,

In 'IDL' procedures are *called* in the following way:

PROCEDURE_NAME , ARGUMENT_1, ARGUMENT_2, ARGUMENT_3, .... , ARGUMENT_N

As you can see no brackets or parenthesis are used. The problem here is
a regex would need to deal with only the first case of the
comma positioned after 'PROCEDURE_NAME' and ignore all other groupings
until the end of the statement.

There is also on other problem in that statements can use continuation
where a '$' indicates the current statement continues on to the
next line:

PROCEDURE_NAME , ARGUMENT_1, $
ARGUMENT_2, ARGUMENT_3, $
.... , ARGUMENT_N

In this case regex needs to distinguish between the case of
'PRODEDURE_NAME' and cases where the statement has been continued.
ie: not highlight 'ARGUMENT_2' due to the comma following there.


Declarations for *both* functions and procedures are written in
similar ways. The difference is only the 'RETURN' value in the case
of functions:

FUNCTION function_name, arg_1, arg_2 $
arg_3, arg_4, ...., arg_n
....<PROGRAM STATEMENTS>...

RETURN, some_value
END


PRO procedure_name, arg_1, arg_2 arg_3, arg_4, ....,$
arg_n
....<PROGRAM STATEMENTS>...
END



Best Regards,




--
Lorenzo Bettini, PhD in Computer Science, DI, Univ. Torino
ICQ# lbetto, 16080134     (GNU/Linux User # 158233)
HOME: http://www.lorenzobettini.it MUSIC: http://www.purplesucker.com
http://www.myspace.com/supertrouperabba
BLOGS: http://tronprog.blogspot.com  http://longlivemusic.blogspot.com
http://www.gnu.org/software/src-highlite
http://www.gnu.org/software/gengetopt
http://www.gnu.org/software/gengen http://doublecpp.sourceforge.net



reply via email to

[Prev in Thread] Current Thread [Next in Thread]