Changeset 149:38fba824e235 in livinglogic.java.ul4

Show
Ignore:
Timestamp:
07/17/08 19:14:56 (11 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Implement the printx tag and opcode.

Location:
library/src/com/livinglogic/ul4
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • library/src/com/livinglogic/ul4/Opcode.java

    r144 r149  
    3030    public static final int OC_GETSLICE2 = 25; 
    3131    public static final int OC_PRINT = 26; 
    32     public static final int OC_NOT = 27; 
    33     public static final int OC_NEG = 28; 
    34     public static final int OC_CONTAINS = 29; 
    35     public static final int OC_NOTCONTAINS = 30; 
    36     public static final int OC_EQ = 31; 
    37     public static final int OC_NE = 32; 
    38     public static final int OC_LT = 33; 
    39     public static final int OC_LE = 34; 
    40     public static final int OC_GT = 35; 
    41     public static final int OC_GE = 36; 
    42     public static final int OC_ADD = 37; 
    43     public static final int OC_SUB = 38; 
    44     public static final int OC_MUL = 39; 
    45     public static final int OC_FLOORDIV = 40; 
    46     public static final int OC_TRUEDIV = 41; 
    47     public static final int OC_AND = 42; 
    48     public static final int OC_OR = 43; 
    49     public static final int OC_MOD = 44; 
    50     public static final int OC_CALLFUNC0 = 45; 
    51     public static final int OC_CALLFUNC1 = 46; 
    52     public static final int OC_CALLFUNC2 = 47; 
    53     public static final int OC_CALLFUNC3 = 48; 
    54     public static final int OC_CALLMETH0 = 49; 
    55     public static final int OC_CALLMETH1 = 50; 
    56     public static final int OC_CALLMETH2 = 51; 
    57     public static final int OC_CALLMETH3 = 52; 
    58     public static final int OC_IF = 53; 
    59     public static final int OC_ELSE = 54; 
    60     public static final int OC_ENDIF = 55; 
    61     public static final int OC_FOR = 56; 
    62     public static final int OC_ENDFOR = 57; 
    63     public static final int OC_BREAK = 58; 
    64     public static final int OC_CONTINUE = 59; 
    65     public static final int OC_RENDER = 60; 
     32    public static final int OC_PRINTX = 27; 
     33    public static final int OC_NOT = 28; 
     34    public static final int OC_NEG = 29; 
     35    public static final int OC_CONTAINS = 30; 
     36    public static final int OC_NOTCONTAINS = 31; 
     37    public static final int OC_EQ = 32; 
     38    public static final int OC_NE = 33; 
     39    public static final int OC_LT = 34; 
     40    public static final int OC_LE = 35; 
     41    public static final int OC_GT = 36; 
     42    public static final int OC_GE = 37; 
     43    public static final int OC_ADD = 38; 
     44    public static final int OC_SUB = 39; 
     45    public static final int OC_MUL = 40; 
     46    public static final int OC_FLOORDIV = 41; 
     47    public static final int OC_TRUEDIV = 42; 
     48    public static final int OC_AND = 43; 
     49    public static final int OC_OR = 44; 
     50    public static final int OC_MOD = 45; 
     51    public static final int OC_CALLFUNC0 = 46; 
     52    public static final int OC_CALLFUNC1 = 47; 
     53    public static final int OC_CALLFUNC2 = 48; 
     54    public static final int OC_CALLFUNC3 = 49; 
     55    public static final int OC_CALLMETH0 = 50; 
     56    public static final int OC_CALLMETH1 = 51; 
     57    public static final int OC_CALLMETH2 = 52; 
     58    public static final int OC_CALLMETH3 = 53; 
     59    public static final int OC_IF = 54; 
     60    public static final int OC_ELSE = 55; 
     61    public static final int OC_ENDIF = 56; 
     62    public static final int OC_FOR = 57; 
     63    public static final int OC_ENDFOR = 58; 
     64    public static final int OC_BREAK = 59; 
     65    public static final int OC_CONTINUE = 60; 
     66    public static final int OC_RENDER = 61; 
    6667 
    6768    public static final int CF0_NOW = 0; 
     
    183184        else if (name.equals("print")) 
    184185            return OC_PRINT; 
     186        else if (name.equals("printx")) 
     187            return OC_PRINTX; 
    185188        else if (name.equals("not")) 
    186189            return OC_NOT; 
     
    448451        else if (code == OC_PRINT) 
    449452            return "print"; 
     453        else if (code == OC_PRINTX) 
     454            return "printx"; 
    450455        else if (code == OC_NOT) 
    451456            return "not"; 
  • library/src/com/livinglogic/ul4/Template.java

    r148 r149  
    911911                            ++pc; 
    912912                            return; 
     913                        case Opcode.OC_PRINTX: 
     914                            nextChunk = Utils.xmlescape(ObjectUtils.toString(reg[code.r1])); 
     915                            ++pc; 
     916                            return; 
    913917                        case Opcode.OC_LOADNONE: 
    914918                            reg[code.r1] = null; 
     
    12891293    public static List tokenizeTags(String source, String startdelim, String enddelim) 
    12901294    { 
    1291         Pattern tagPattern = Pattern.compile(escapeREchars(startdelim) + "(print|code|for|if|elif|else|end|break|continue|render)(\\s*((.|\\n)*?)\\s*)?" + escapeREchars(enddelim)); 
     1295        Pattern tagPattern = Pattern.compile(escapeREchars(startdelim) + "(printx|print|code|for|if|elif|else|end|break|continue|render)(\\s*((.|\\n)*?)\\s*)?" + escapeREchars(enddelim)); 
    12921296        LinkedList tags = new LinkedList(); 
    12931297        Matcher matcher = tagPattern.matcher(source); 
  • library/src/com/livinglogic/ul4/ul4c.py

    r147 r149  
    4141                r = parseexpr(template, location) 
    4242                template.opcode(ul4.Opcode.OC_PRINT, r, location) 
     43            elif location.type == "printx": 
     44                r = parseexpr(template, location) 
     45                template.opcode(ul4.Opcode.OC_PRINTX, r, location) 
    4346            elif location.type == "code": 
    4447                parsestmt(template, location)