diff --git a/src/main/java/org/ntlab/rdlcanvas/parser/BooleanValue.java b/src/main/java/org/ntlab/rdlcanvas/parser/BooleanValue.java new file mode 100644 index 0000000..10adab1 --- /dev/null +++ b/src/main/java/org/ntlab/rdlcanvas/parser/BooleanValue.java @@ -0,0 +1,19 @@ +package org.ntlab.rdlcanvas.parser; + +public class BooleanValue extends Value{ + Boolean booleanValue; + + public void setBooleanValue(String stringValue){ + if(stringValue.equals("true")){ + booleanValue = true; + }else{ + booleanValue = false; + } + } + + @Override + public String toString(){ + return String.valueOf(booleanValue); + } + +} diff --git a/src/main/java/org/ntlab/rdlcanvas/parser/Parser.java b/src/main/java/org/ntlab/rdlcanvas/parser/Parser.java index f9e7895..b09b678 100644 --- a/src/main/java/org/ntlab/rdlcanvas/parser/Parser.java +++ b/src/main/java/org/ntlab/rdlcanvas/parser/Parser.java @@ -24,6 +24,8 @@ public static final String COMMA = ","; public static final String COLON = ":"; public static final String DOUBLE_QUOT = "\""; + public static final String TRUE = "true"; + public static final String FALSE = "false"; // Json文字列を標準入力から受け取るコンストラクタ public Parser() { @@ -93,6 +95,8 @@ } } else if (Character.isDigit(tokenStream.checkNext().charAt(0))) { return parseIntegerValue(tokenStream); + } else if(tokenStream.checkNext().equals(TRUE) || tokenStream.checkNext().equals(FALSE)){ + return parseBooleanValue(tokenStream); } throw new RuntimeException(String.valueOf(tokenStream.getLine())); } @@ -159,6 +163,16 @@ return stringValue; } + public BooleanValue parseBooleanValue(TokenStream tokenstream){ + BooleanValue booleanValue = new BooleanValue(); + StringBuilder stringBuilder = new StringBuilder(); + while(!(stringBuilder.toString().equals(TRUE)||stringBuilder.toString().equals(FALSE))){ + stringBuilder.append(tokenstream.next()); + } + booleanValue.setBooleanValue(stringBuilder.toString()); + return booleanValue; + } + public void expect(TokenStream tokenStream, String expect) { if (!tokenStream.checkNext().equals(expect)) { throw new RuntimeException("expect" + expect + "but" + tokenStream.checkNext() + " line" + tokenStream.getLine());