AgSTAR parsing failure modes

  Issue Importance/Resolution
0 Output Format
Cosmetic, but useful for debugging.  Nice if
the output were intelligently indented.
1 In ECAL: EtaBin ={2.0,...} not properly initialized.
Implemented 2-stage parsing.  First in Rules,
then in OnFillAssignment.
2 Replace macros are stripped out of text
possibly oversimplified solution to
match replace macros of the form:
KW or KW ( var )
3 POSITION/CREATE operators have extra ; appended to the end Cosmetic
4 End of line "!" comments get stripped in main body Medium
5
Lines with trailing _ do not have the _ stripped from output Match character and strip it
6 Spaces in attributes of shape, material, etc... break the key=value pattern. key=value pattern w/ optional whitespace
7 Structures must not end with } on new line Minor
8 Increment operators (+=, -=, *=, /=) have no output
Attached output function to pattern matcher
9 assignment statements within FILL ... ENDFILL blocks
Need to edit source by hand and move
these outside of the FILL...ENDFILL block
10 CREATE operator should accept any shape arguement
Add list of shape arguements and add
code in Mortran.py to utilize them.
11 Continuation syntax: any math operator continues onto next line
Extended the list of continuation characters
12 HITS not output Attach output function to pattern matcher
 13 ENDFILL is optional for all but the last FILL statements.
Add if ( __in_fill__ ): OnFillEnd( tokens)
to the OnFill(tokens) function.
14  Attribute lists are truncacted in CREATE and POSITION operator(s).
FATAL.  Same issue as 15, and same
solution.
 15
 In ECAL/EBLS: component, attribute and shape are mangled --
[a] COMPONENT AlMylar A=12.889 Z Z=None W=None
[b] ATTRIBUTE EFLS seen=1 colo
[c] SHAPE trd1 dz=esmd_back_layer/2 d
Solution is to move to a two-stage
parsing which does an 'endOfLine' match to
get the attribute list, and the attribute list is
parsed in the action routine.  This will merge
all attributes onto a single line.
16 Stag print line (i.e. prinX w/out a format line) Medium.
17 Related -- prinX w/ X>1 not matched. Medium.
  calbgeo/calbgeo2.g  
18 EXTERNAL function declaration FATAL
19
create and position CALB in CAVE -- does not get recognized by OnPosition... possiblye due to a lack
attribute parameters on the command.  Possibly due to spaces in attributes.
FATAL
20 in CALB, the shape parameters are not resolved... possibly due to white space in attributes. FATAL
21 Check  layer==nint(calg_Nsmd) Depends on the meaning of check...
22 HITS   CSUP  eta:Deta:(0,1)        y:1:(-13,13)       Birk:0:(0,10) -- only outputs the Birk digitization. FATAL
23 HITS  CSDA type=1:2: eta:0.1:(0,1) etsp:h_eta1:(0,sh_eta1) Eloss:0:(0,1) FATAL, type=X:Y not recognized
24
calbgeo2 line 306:
 layer_width(i) = calg_ScintThk(i) + calg_AbsorThk+2.*calg_AbPapThk      gets rendered as
 layer_width(i) = calg_ScintThk(i);
Inappropriate match to Inline function definition,
and array specifiers not handled on RHS.
25 Exported ecalgeo6, when translated to TGeo, does not have correct dz in all TUBS.
The shape dictionary did not contain dz in the
arguement list for tubs.
26 In structures, INT and CHAR types are ignored FATAL
27
Long assignment statements w/out whitespace broken at inconvienient places, and ',' are inserted into the statements.  Related issue: POSITION statements with long
attribute lists my viloate the RH margin in Mortran/PN.
Requires a smarter 'PrettyPrinter' class.
28 Fortran-style continuation lines result in unmatched lines Need to edit by hand to remove them
29 Nested parentheses ( a(b) * c(d(e)) ) on LHS and RHS of assignments fail.
Need to improve parsing of expressions and
define a context to discriminate between Inline
functions and statements.
30 Attribute list in material statements getting truncated. Switched to the parseAttributeList helper.
31 Feature: Warning issued when print * and write (*,*) statements encountered.  
32
if (SVTG_Config <= 11) { "Otherwice made in sisdgeo" ;       
                    Create and position SOSH " SVT outer shield " ;      }
Interleved "comments" need to be
stripped out in preprocessor phase.
33 Replace macros have extra ';' inserted into the match field. FATAL