richter     01/02/22 22:49:49

  Modified:    .        Tag: Embperl2c epcomp.c epmain.c epparse.c
  Log:
  Embperl 2 - multiple Syntaxes
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.4.2.34  +38 -20    embperl/Attic/epcomp.c
  
  Index: epcomp.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epcomp.c,v
  retrieving revision 1.4.2.33
  retrieving revision 1.4.2.34
  diff -u -r1.4.2.33 -r1.4.2.34
  --- epcomp.c  2001/02/05 11:18:53     1.4.2.33
  +++ epcomp.c  2001/02/23 06:49:49     1.4.2.34
  @@ -42,10 +42,13 @@
   typedef struct tEmbperlCmd tEmbperlCmd ;
   
   
  -
  -tStringIndex nMaxEmbperlCmd ;
  -struct tEmbperlCmd * pEmbperlCmds ;
  +struct tEmbperlCompilerInfo
  +    {
  +    tStringIndex nMaxEmbperlCmd ;
  +    tEmbperlCmd * pEmbperlCmds ;
  +    } ;
   
  +typedef struct tEmbperlCompilerInfo tEmbperlCompilerInfo ;
   
   /* ------------------------------------------------------------------------ */
   /*                                                                          */
  @@ -56,12 +59,20 @@
   /* ------------------------------------------------------------------------ */
   
   
  -int embperl_CompileInit (void)
  +int embperl_CompileInit (/*out*/ tEmbperlCompilerInfo * * ppInfo)
   
       {
  -    ArrayNew (&pEmbperlCmds, 256, sizeof (struct tEmbperlCmd)) ; 
  -    ArraySet (&pEmbperlCmds, 0) ;
  -    nMaxEmbperlCmd = 1 ;
  +    tEmbperlCompilerInfo * pInfo = malloc (sizeof (tEmbperlCompilerInfo)) ;
  +
  +    if (!pInfo)
  +     return rcOutOfMemory ;
  +
  +
  +
  +    ArrayNew (&pInfo -> pEmbperlCmds, 256, sizeof (struct tEmbperlCmd)) ;
  +    ArraySet (&pInfo -> pEmbperlCmds, 0) ;
  +    pInfo -> nMaxEmbperlCmd = 1 ;
  +    *ppInfo = pInfo ;
       }
   
   
  @@ -77,18 +88,26 @@
                                  /*in*/  HV *           pHash,
                                  /*in*/  int            nNodeName,
                                  /*in*/  int            nNodeType,
  -                               /*in*/  int            nTagSet)
  +                               /*in*/  int            nTagSet,
  +                               /*in*/  void * *       ppInfo)
   
       {
       SV * * ppSV ;
       AV * pAV ;
       tEmbperlCmd *  pCmd ;
  +    tEmbperlCompilerInfo * pInfo = (tEmbperlCompilerInfo *)*ppInfo ;
  +
  +    if (!pInfo)
  +     embperlCompileInit ((tEmbperlCompilerInfo * *)ppInfo) ;
  +    pInfo = (tEmbperlCompilerInfo *)*ppInfo ;
       
  +
  +
   
  -    ArraySet (&pEmbperlCmds, nNodeName) ;
  -    if (nMaxEmbperlCmd < nNodeName) 
  -     nMaxEmbperlCmd = nNodeName ;
  -    pCmd = &pEmbperlCmds[nNodeName] ;
  +    ArraySet (&pInfo -> pEmbperlCmds, nNodeName) ;
  +    if (pInfo -> nMaxEmbperlCmd < nNodeName)
  +     pInfo -> nMaxEmbperlCmd = nNodeName ;
  +    pCmd = &pInfo -> pEmbperlCmds[nNodeName] ;
   
       if (pCmd -> bValid)
           {
  @@ -198,12 +217,12 @@
       pCmd -> nNodeType            = nNodeType ;
       pCmd -> pNext  = NULL ;
   
  -    pEmbperlCmds[nNodeName].bRemoveNode |= pCmd -> bRemoveNode ;
  -    pEmbperlCmds[nNodeName].bPerlCodeRemove |= pCmd -> bPerlCodeRemove ;
  +    pInfo -> pEmbperlCmds[nNodeName].bRemoveNode |= pCmd -> bRemoveNode ;
  +    pInfo -> pEmbperlCmds[nNodeName].bPerlCodeRemove |= pCmd -> bPerlCodeRemove ;
       if (pCmd -> nSwitchCodeType)
  -     pEmbperlCmds[nNodeName].nSwitchCodeType = pCmd -> nSwitchCodeType ;
  +     pInfo -> pEmbperlCmds[nNodeName].nSwitchCodeType = pCmd -> nSwitchCodeType ;
       if (pCmd -> sMayJump && !pEmbperlCmds[nNodeName].sMayJump)
  -     pEmbperlCmds[nNodeName].sMayJump = pCmd -> sMayJump ;
  +     pInfo -> pEmbperlCmds[nNodeName].sMayJump = pCmd -> sMayJump ;
   
       if (r -> bDebug & dbgParse)
           lprintf (r, "[%d]EPCOMP: InitItem %s (#%d) perlcode=%s (num=%d) 
perlcodeend=%s\n", 
  @@ -1125,6 +1144,7 @@
       int             nAttr = 0 ;
       int                  nStartCodeOffset = 0 ;               
       int                  nCheckpointCodeOffset = 0 ;               
  +    tEmbperlCompilerInfo * pInfo = (tEmbperlCompilerInfo *)(r -> pTokenTable -> 
pCompilerInfo) ;
   
   
       if (pCurrReq -> bDebug & dbgParse)
  @@ -1135,9 +1155,9 @@
       
       nNdx = Node_selfNodeNameNdx (pNode) ;
   
  -    if (nNdx <= nMaxEmbperlCmd)
  +    if (nNdx <= pInfo -> nMaxEmbperlCmd)
        {
  -     pCmd = pCmdHead = &pEmbperlCmds[nNdx] ;
  +     pCmd = pCmdHead = &pInfo -> EmbperlCmds[nNdx] ;
        //??if (pCmd -> nNodeType != pNode -> nType)
        //       pCmd = NULL ;
        }
  @@ -2158,5 +2178,3 @@
       }
           
           
  -
  -
  
  
  
  1.75.4.22 +1 -1      embperl/epmain.c
  
  Index: epmain.c
  ===================================================================
  RCS file: /home/cvs/embperl/epmain.c,v
  retrieving revision 1.75.4.21
  retrieving revision 1.75.4.22
  diff -u -r1.75.4.21 -r1.75.4.22
  --- epmain.c  2000/12/19 09:11:03     1.75.4.21
  +++ epmain.c  2001/02/23 06:49:49     1.75.4.22
  @@ -1583,7 +1583,7 @@
   #ifdef EP2
   
       DomInit () ;
  -    embperl_CompileInit () ;    
  +    //embperl_CompileInit () ;
   
   
       if ((pTokenHash = perl_get_hv (sTokenHashName, TRUE)) == NULL)
  
  
  
  1.4.2.5   +10 -9     embperl/Attic/epparse.c
  
  Index: epparse.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epparse.c,v
  retrieving revision 1.4.2.4
  retrieving revision 1.4.2.5
  diff -u -r1.4.2.4 -r1.4.2.5
  --- epparse.c 2000/10/18 06:51:47     1.4.2.4
  +++ epparse.c 2001/02/23 06:49:49     1.4.2.5
  @@ -45,6 +45,7 @@
       int             numTokens ;          /* number of tokens in above table */
       int                  bLSearch ;      /* when set perform a linear, instead of a 
binary search */
       struct tToken * pContainsToken ;/* pointer to the token that has a pContains 
defined (could be only one per table) */
  +    void *       pCompierInfo ;  /* stores tables of the compiler */
       } ;
   
   
  @@ -96,7 +97,8 @@
   
   int CheckProcInfo      (/*i/o*/ register req * r,
                        /*in*/  HV *           pHash,
  -                     /*in*/  struct tToken * pToken)
  +                     /*in*/  struct tToken * pToken,
  +                     /*in*/  struct tTokenTable * pTokenTable)
                        
   
       {        
  @@ -137,9 +139,9 @@
                }
   
            if (strcmp (pKey, "embperl") == 0)
  -             embperl_CompileInitItem (r, (HV *)(SvRV (pSVValue)), pToken -> 
nNodeName, pToken -> nNodeType, 1) ;
  +             embperl_CompileInitItem (r, (HV *)(SvRV (pSVValue)), pToken -> 
nNodeName, pToken -> nNodeType, 1, &pTokenTable -> pCompilerInfo) ;
            else if (strncmp (pKey, "embperl#", 8) == 0 && (n = atoi (pKey+8)) > 0)
  -             embperl_CompileInitItem (r, (HV *)(SvRV (pSVValue)), pToken -> 
nNodeName, pToken -> nNodeType, n) ;
  +             embperl_CompileInitItem (r, (HV *)(SvRV (pSVValue)), pToken -> 
nNodeName, pToken -> nNodeType, n, &pTokenTable -> pCompilerInfo) ;
            }
        }           
   
  @@ -339,7 +341,8 @@
   
   
            if (r -> bDebug & dbgBuildToken)
  -                lprintf (r, "[%d]TOKEN: %s ... %s  unesc=%d nodetype=%d, 
cdatatype=%d, nodename=%s\n", r -> nPid, p -> sText, p -> pContains?sContains:p -> 
sEndText, p -> bUnescape, p -> nNodeType, p -> nCDataType, p -> sNodeName?p -> 
sNodeName:"<null>") ; 
  +                lprintf (r, "[%d]TOKEN: %s ... %s  unesc=%d nodetype=%d, 
cdatatype=%d, nodename=%s\n", r -> nPid, p -> sText, p -> pContains?sContains:p -> 
sEndText, p -> bUnescape, p -> nNodeType, p -> nCDataType, p -> sNodeName?p -> 
sNodeName:"<nul
  +l>") ; 
           
            if (p -> sNodeName)
                p -> nNodeName = String2Ndx (p -> sNodeName, strlen (p -> sNodeName)) ;
  @@ -347,7 +350,7 @@
                p -> nNodeName = String2Ndx (p -> sText, strlen (p -> sText)) ;
   
   
  -         if ((rc = CheckProcInfo (r, pHash, p)) != ok)
  +         if ((rc = CheckProcInfo (r, pHash, p, pTokenTable)) != ok)
                return rc ;
   
            
  @@ -607,7 +610,8 @@
                        level-- ;
                        }
                    /* add token as node */
  -                    if (!(xNewNode = Node_appendChild (pDomTree, pToken -> 
nNodeType, (nCDataType == ntypAttrValue && pToken -> nNodeType != ntypAttr)?(pToken -> 
nForceType?2:1):0, pNodeName, strlen (pNodeName), xParentNode, level, GetLineNoOf (r, 
pCurrTokenStart))))
  +                    if (!(xNewNode = Node_appendChild (pDomTree, pToken -> 
nNodeType, (nCDataType == ntypAttrValue && pToken -> nNodeType != ntypAttr)?(pToken -> 
nForceType?2:1):0, pNodeName, strlen (pNodeName), xParentNode, level, GetLineNoOf (r, 
pC
  +urrTokenStart))))
                        {
                        r -> Buf.pCurrPos = pCurrTokenStart ;
   
  @@ -744,6 +748,3 @@
   
       return ok ;
       }
  -
  -
  -
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to