1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
package com.metaweb.lessen;
import java.util.ArrayList;
import java.util.List;
import com.metaweb.lessen.tokenizers.BufferedTokenizer;
import com.metaweb.lessen.tokenizers.Tokenizer;
import com.metaweb.lessen.tokens.Color;
import com.metaweb.lessen.tokens.Token;
public class LessParser extends ParserBase implements Tokenizer {
final protected List<Token> _tokens = new ArrayList<Token>();
static public boolean canBeIntermediateValue(Object o) {
return o instanceof Token || o instanceof Color;
}
public LessParser(Tokenizer tokenizer, ResourceFinder resourceFinder) {
this(tokenizer, resourceFinder, new Scope(null));
}
public LessParser(Tokenizer tokenizer, ResourceFinder resourceFinder, Scope scope) {
super(new BufferedTokenizer(tokenizer), resourceFinder, scope, true);
}
@Override
public Token getToken() {
fill();
return _tokens.size() > 0 ? _tokens.get(0) : null;
}
@Override
public void next() {
if (_tokens.size() > 0) {
_tokens.remove(0);
}
fill();
}
protected void fill() {
while (_tokens.size() == 0 && _tokenizer.getToken() != null) {
parseStatement();
}
}
@Override
protected void passInnerBlockTokenThrough(Token t) {
_tokens.add(t);
}
@Override
protected void outputToken(Token t) {
_tokens.add(t);
}
}
|